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:ただし、方向の示し方は表記法やツールによって異なります。