今回は、「言葉の性質と概念データモデル」シリーズその3としてパーティパターンを取り上げます。
パーティパターンとは、データモデルの典型的な型の一種です。パーティとは、PLAN-DBで言うところの社内組織と社外組織に分類されるリソースエンティティ達を1つに統合したエンティティです。会社、部署、社員、顧客、仕入先、代理店などを1つのエンティティに統合し、パーティと名づけます。そして、会社~代理店はパーティのサブタイプとして位置づけます。これらのエンティティ構造全体を指して、パーティパターンと呼びます。パーティの識別子はパーティIDとなります。
David C.Hay氏がその著書「DATA MODEL PATTERNS」の中でパーティパターンを紹介した段階では、パーティは人と組織のスーパタイプとして扱われていました。人も組織も名前や住所など似たデータ項目を持ち、また他のエンティティとの関係も共通点が多いから・・・と説明されていました。今から18年ほど前の本です。一方、Len Silverston氏もその著書「The Data Model Resource Book Volume1」の中でパーティパターンを紹介しています。この本では、パーティは単に人と組織のスーパタイプであるというだけでなく、カスタマーやサプライヤーといったロールも含んだエンティティとして扱われています。パーティロールといったエンティティを明示的に扱っています。
これらの著書が貢献したのでしょう。パーティパターンはデータモデリングのコンサルタントのみならず、多くのIT技術者が知っているパターンの1つになっています。人や組織に関連するパターンは、このパーティパターンが「お決まりの解決策」と紹介しているコンサルタントもいるほどで、その有効性については異論のないところとなっているようです。
こういった状況の中で、私は「パーティパターンは概念データモデルとしては使えない」と異論を述べたいと思います。概念データモデルは、業務を実施する人たちの「概念」をエンティティ名やデータ項目名を使ってモデル化したものです。「言葉」の意味を相対的に位置づけていることから、概念データモデルは業務用語マップと認識することもできます。
さて、異論を唱える第一の理由は、「現状の概念データモデルを作成した際に、いままで一度もパーティという エンティティ名を見たことがない」ということが挙げられます。この事実は非常に重いと思っています。日本では業務を遂行する上で、「パーティ」という概念(つまり言葉)が登場しないのです。もちろん、日本のみならず、海外で使っている画面や帳票であっても、「パーティ」という概念(つまり言葉)が出てきません。頻繁に登場する概念は、Customer、Supplier、Organization、Employeeなどで、日本と似たエンティティ名が並びます。
第二の理由は、「新規の概念データモデルを作成する際にパーティパターンを使ったとしても新しい画面や帳票上にパーティという概念(つまり言葉)を出せない」ということです。利用部門の人達がパーティという概念(言葉)を受け入れないからです。受け入れない概念を無理やり概念データモデルに表現したとしてもその言葉は業務を遂行する際に使われず、従来どおりの顧客や仕入先という言葉が選ばれます。要するに概念設計としては失敗に終わるわけです。
概念設計として失敗であっても、パーティパターンを使って業務アプリケーションを開発することは可能です。私の解釈では、パーティパターンは、システム開発フェーズの初期段階でリファレンスとしてこれを選び、そこから新規設計を進めてもなんとか実装できる程度のパターンであって、概念データモデルとしての本質的正解ではないと考えています。要するに「プラクティスとしては有効」といった程度でしょう。
概念データモデルに登場するエンティティ名は普段業務を遂行する中で登場するビジネス用語と一致します。その本質を理解した上でデータモデルパターンを選び使いたいものです。(なぜ、パーティパターンがプラクティスとしてうまく機能してしまうか、という理由については、また別な機会にお話しします)