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のカーディナリティとオプショナリティの定義は、以下のようになります。

カーディナリティ
E1のインスタンス1つに対応する、E2のインスタンスの最大数
オプショナリティ
E1のインスタンス1つに対応する、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

*1:少なくとも、私には見つけられませんでした。

*2:IDEF1X形式の表記を利用しているようです。

*3:ですので、前回の記事で書いたIE形式のER図は、厳密にはIE形式ではないことになります。

*4:英語では「modality」と表現される場合もあるようです。

*5:E1とE2は、同一のエンティティでも構いません。その場合、Rは再帰リレーションシップです。

*6:英語では、「optional」です。

*7:英語では、「mandatory」です。