UMLを用いて表した図のデータモデルから,“部品”表,“納入”表及び“メーカ”表を関係データベース上に定義するときの解釈のうち,適切なものはどれか。
〔データモデル〕
部品[部品番号/部品名/…]―1:*―納入[納入日/数量/…]―*:1―メーカ[メーカ番号/メーカ名/…]
正答3
解説
正解は3です。
図のデータモデルでは、1つの部品に対して納入が複数あり、部品と納入は1対多の関係です。
同様に、1つのメーカに対しても納入が複数あり、メーカと納入も1対多の関係です。
つまり納入は、「どの部品を、どのメーカから、いつ、いくつ」納入したかを表します。
関係データベースでは、多の側の表が1の側の主キーを外部キーとしてもちます。
【選択肢別解説】
1:× 図には、同一の部品と同一のメーカの組合せを1回に限る制約はありません。
納入日が異なれば、同じ部品を同じメーカから何度でも納入できます。
2:× 納入表は、部品とメーカの両方に対して多の側にあります。
したがって、部品番号とメーカ番号を外部キーとしてもつ必要があります。
3:○ 納入表は、部品番号とメーカ番号を外部キーとしてもちます。
この組み単独では同じ値が複数回現れますが、納入日などと組み合わせれば行を特定できるので、候補キーの一部にできます。
4:× メーカと部品は直接ではなく、納入を介して関連しています。
メーカ表が部品番号を外部キーとしてもつことはありません。
【ポイント】
UMLの多重度の「*」は多を表し、1対多の関連では多の側に外部キーを置きます。
部品とメーカのような多対多の関係は、納入のような実体を間に置いて、1対多の二つの関連に分解します。