30分でわかるER図の書き方 (9)

前回に引き続き、ER図に関する補足的なトピックを扱います。今回は、エンティティ間の複数リレーションシップについて説明します。
前回: id:simply-k:20100712:1278931452
次回: id:simply-k:20100716:1279234458
目次: id:simply-k:20100716:1279237959

エンティティ間のリレーションシップ

次のER図を見てください。

この図にカーディナリティを書き加えると、どうなるでしょうか? 条件は、

  • 社員が同時に複数の部署に所属することはない。
  • どの部署にも所属しない社員がいてもよい。
  • 社員が一人もいない部署があってもよい。

とします。





(答えは下の方にあります)
























解答例です。

おそらく、大部分の人は(A)の方を想像したと思います。しかし、(B)でも間違いではありません。一般に、2つのエンティティの間には、複数のリレーションシップが存在します。この点をよく理解してください。
なお、上記の2種類のER図を1つの図にまとめることも可能です。


動詞句

動詞句(verb phrase)とは、リレーションシップの内容を補足するためのラベルのようなものです。例えば、上のER図での「所属している」や「所属したことがある」も動詞句です。
一般的に、動詞句は動詞として記述されます。リレーションシップに動詞句を書き加えることにより、そのリレーションシップがどのようなものかを、より明確に示すことができます。特に、2つのエンティティの間に複数のリレーションシップが存在するような場合、適切な動詞句を記述することによって、内容が理解しやすくなります。
また、動詞句は方向を持ちます。関連する2つのエンティティのうち、片方が主語、もう片方が目的語となります。必要に応じて動詞句の方向を明示することにより、そのリレーションシップの内容が理解しやすくなります。*1

複数リレーションシップの例1 (「出荷」と「郵便番号」)

1番目の例は、「出荷」と「郵便番号」です。「出荷」エンティティの「出荷元郵便番号」属性と「出荷先郵便番号」属性に、「郵便番号」エンティティの主キーが登録されます。

複数リレーションシップの例2 (「商品」と「セット商品」)

2番目の例は、「商品」と「セット商品」です。「セット商品」エンティティの「セット商品ID」属性と「構成商品ID」属性に、「商品」エンティティの主キーである「商品ID」が登録されます。


参考までに、テーブル形式のデータ例を書いておきます。

商品ID 商品名 標準価格 セット商品フラグ
1001 モカ 900 0
1002 キリマンジャロ 900 0
1003 コロンビア 900 0
... ... ... ...
2001 おすすめセット 2,500 1
2002 モカセット 2,500 1
... ... ... ...
セット商品ID 構成商品ID 数量
2001 1001 1
2001 1002 1
2001 1003 1
2002 1001 3
... ... ...


次回は、交差エンティティについて説明します。
前回: id:simply-k:20100712:1278931452
次回: id:simply-k:20100716:1279234458
目次: id:simply-k:20100716:1279237959

*1:ただし、方向の示し方は表記法やツールによって異なります。