ビジネス視点のデータモデリング:ゼロからのデータモデリング入門(8)(2/3 ページ)
今回から3回に分けて、第6回「基本設計で作るべき『論理データモデル』の考え方」で解説した論理データモデリングについて詳しく見ていきます。今回は、「論理データモデルはビジネス活動をデータで表す」ということをより理解いただくために、ER図の読み方と書き方について具体的にお話しします。
カーディナリティとオプショナリティ
依存と独立の区別はリレーションシップの線で表しましたが、今度はリレーションシップの先にある「※1(1を表す)」と「※2(複数(N)を表す)」に着目してください。これは、エンティティ間の多重度を表しています。
※1=
※2=
図4では、「注文」と「出荷」エンティティ間の多重度を表しています。ここでのビジネスルールは「注文1件に対して複数の出荷を行う(1回の注文に複数の製品があり、それをそれぞれ納入する分割納品)」です。従って、カーディナリティは、注文に「1」、出荷「N」となります。
カーディナリティは、リレーションシップを定義するエンティティが確定した際に、双方のエンティティから見てビジネスルールがどうなっているかを確認し、設定する必要があります。図4の場合、「注文」から「出荷」を見ると「1件の注文に対して複数の出荷がある」、「出荷」から「注文」を見ると「1回の出荷に対して1件の注文がある」となります。
次にオプショナリティに関してですが、オプショナリティはリレーションシップの元と先が「○」か「|」を見ます。「○」が設定されている場合は、ビジネスルール上「ない場合もある」となり、「|」が設定されている場合は「必ずある」となります。
図5では、注文エンティティは「|」となっており出荷エンティティは「○」となっています。つまり注文から出荷を見た場合「注文はあるが出荷をしないものもある」となり、出荷から注文を見た場合は「出荷したものには必ず注文がある」となります。
カーディナリティとオプショナリティをまとめると、カーディナリティは、「1:1」、「1:N」、「N:N」といった多重度を表し、オプショナリティは任意か必須か、つまり「必ずある」のか「ない場合もある」のかを定義します。
ビジネスルールとER図
では、具体的にER図を使ってビジネスルールを読んでいきましょう。図6が業務フロー図であり、図7は業務フロー図に合わせたER図となります。
図6は、顧客から注文を受けて出荷依頼を出すまでの業務フローとなります。これを踏まえて、図7のER図を見てください。ER図には、業務フローでは表現しきれない細かなルールまで表されています。
例えば、契約エンティティと個別契約エンティティの関係に注目してください。契約がなければ個別契約は発生しないため、この2つのエンティティは「依存のリレーションシップ」である実線で示されています。次に、顧客エンティティと契約エンティティの関係も見てみましょう。1顧客に対し契約は何度も発生するので、カーディナリティは1:Nを表しています。さらに、オプショナリティにより、顧客が契約をしない場合もあり、契約がある場合は顧客が必ず存在するということも読み取れます。
業務の流れとER図を対比してみることで、ER図がよりビジネスを的確に表現できるということがお分かりいただけたのではないでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.