30分でわかるER図の書き方 (3)
今回から2回に分けて、IE(Information Engineering)形式のER図について説明します。ただし、IDEF1X形式と共通する話も含みますので、IDEF1X形式について知りたい方も、是非読んでください。
前回: id:simply-k:20100704:1278214995
次回: id:simply-k:20100706:1278417587
目次: id:simply-k:20100716:1279237959
IE形式の規格
いきなりですが、IE形式には、IDEF1Xのような規格は存在しません。*1 そのため、人や使用するソフトウェアによって、微妙に異なるER図が描かれることになります。この記事で扱う内容も、「IE形式では一般的にこうする」という話に過ぎません。注意してください。
IE形式でのエンティティとリレーションシップ
次の図は、IE形式で書かれたER図の一例です。
IE形式でのエンティティとリレーションシップの書き方は、以下のようになります。
- エンティティ
- 長方形を書く。
- 長方形の中にエンティティ名を書く。
- リレーションシップ
- エンティティ間を結ぶ実線を書く。
- 実線の両端に、カーディナリティとオプショナリティを示す記号を書く。
- 実線の中央に動詞句を書く。(省略可)
なお、多くのER図作成ツールが持っている
- エンティティの長方形の中に属性を書く。
- 従属エンティティを角丸の長方形で表現する。
- 非依存リレーションシップを点線で表現する。
といった機能は、IE形式の本来のものではありません。ユーザの利便性のために、ツールが独自に導入しているにすぎません。*2 *3
カーディナリティとオプショナリティ
カーディナリティ(cardinality)とオプショナリティ(optionality)*4は、IE形式のER図を書く上でのポイントとなる概念です。
2つのエンティティE1、E2があり、E1とE2の間にリレーションシップRが存在するとします。*5 この時、Rでの、E1に対するE2のカーディナリティとオプショナリティの定義は、以下のようになります。
カーディナリティに関しては、通常は以下のどちらであるかに注目します。
オプショナリティに関しては、通常は以下のどちらであるかに注目します。
具体例
上記の説明だけではわかりにくいと思いますので、具体例を挙げて説明します。このような状況を考えてください。
- 顧客と、顧客が過去に注文した受注データの関連性に注目する。
- ある1人の顧客に対する受注数は、0、1、2以上のどれもありうる。
- ある1つの受注に対する顧客の人数は1である。0や2以上にはならない。
初めに、カーディナリティについてです。顧客エンティティのインスタンス1つ(つまり、1人の顧客)に対して、複数の受注データが存在する可能性があります。ですから、顧客に対する受注のカーディナリティは「多」となります。一方、受注エンティティのインスタンス1つ(つまり、1つの受注)に対して、対応する顧客は最大でも1人です。ですから、受注に対する顧客のカーディナリティは「1」となります。これをまとめて、「顧客と受注のカーディナリティは1対多である」のように表現します。「1対多」の代わりに、「1対N」と表現される場合もあります。
次に、オプショナリティについてです。顧客エンティティのインスタンス1つ(つまり、1人の顧客)に対して、受注データが存在しない可能性があります。ですから、顧客に対する受注のオプショナリティは「任意」となります。一方、受注エンティティのインスタンス1つ(つまり、1つの受注)に対して、対応する顧客は必ず存在します。ですから、受注に対する顧客のオプショナリティは「必須」となります。オプショナリティの場合は、カーディナリティでの「1対多」のような複合的な表現は特にありません。
ちなみに、この具体例は、この記事の最初の方にあるER図と対応しています。
次回は、IE形式のER図で描かれる、カーディナリティとオプショナリティの記号について説明します。
前回: id:simply-k:20100704:1278214995
次回: id:simply-k:20100706:1278417587
目次: id:simply-k:20100716:1279237959