正答3
解説
正解は3です。
図のUMLクラス図では、“顧客”と“付加情報”が黒いひし形の線で結ばれ、顧客側に多重度1と役割名「注文主」、付加情報側に*が書かれています。
つまり、顧客は付加情報に対して注文主の役割を担います。
黒いひし形はコンポジション(強い集約)で、付加情報はいずれか1人の顧客に属する部品であることを表します。
また、“注文”と“付加情報”は、注文側が*、付加情報側が0..1の多重度で、指定送付先という関連で結ばれています。
注記には、注文が指定送付先をもつときは、その付加情報の注文主と注文の顧客が一致すること、という制約があります。
【選択肢別解説】
1:× 注記の制約により、指定送付先には、その注文をした顧客の付加情報しか選べません。
他の顧客に属する行は選択できないので、どの行でも選択できるわけではありません。
2:× 顧客と付加情報の多重度は1対*なので、1人の顧客が複数の付加情報をもったり、まったくもたなかったりできます。
行数が一致する必要はありません。
3:○ 付加情報は必ずいずれか1人の顧客(注文主)に属するので、付加情報表に顧客番号を外部キーとしてもたせ、顧客表への参照制約を指定します。
これにより、付加情報が存在しない顧客を指すことを防げます。
4:× 注文と付加情報の関連では、1件の注文が指定する付加情報は0件か1件です。
そのため外部キーは注文表の側に付加情報の識別番号としてもたせ、注文表から付加情報表を参照します。
【ポイント】
1対多の関連を表に実装するときは、多の側の表に、1の側の主キーを外部キーとしてもたせます。
コンポジションの部品側は、全体側への参照が必須(NULL不可)になります。