データモデルを解釈してオブジェクト図を作成した。
解釈の誤りを適切に指摘した記述はどれか。
ここで,モデルの表記にはUMLを用い,オブジェクト図の一部の属性の表示は省略した。
正答1
解説
正解は1です。
図のデータモデルでは、顧客と注文の間が「1対*」、注文と商品の間が「*対1」の多重度で結ばれています。
注文と商品の関係では、商品側に1と書かれているので、1件の注文はちょうど1つの商品に対応します。
一方、注文側には*と書かれているので、1つの商品は0件以上の注文から参照されてかまいません。
オブジェクト図では、123456の注文が47型テレビと2ドア冷蔵庫の2つの商品にリンクしています。
【選択肢別解説】
1:○ 注文と商品の多重度は商品側が1なので、1件の注文がリンクできる商品は1つだけです。
123456の注文が47型テレビと2ドア冷蔵庫の2つにリンクしているのは多重度に反するので、この指摘は正しいです。
2:× 2ドア冷蔵庫は123456、123457、123459の3件の注文にリンクしています。
注文側の多重度は*なので、1つの商品が複数の注文から参照されるのは誤りではありません。
3:× A商店は123456と123457の2件の注文にリンクしています。
顧客と注文の多重度は注文側が*なので、1人の顧客が複数の注文を持つのは誤りではありません。
4:× ドラム式洗濯機はどの注文ともリンクしていません。
注文側の多重度*は0件以上を意味するので、まだ注文されていない商品があっても誤りではありません。
【ポイント】
UMLの多重度は、相手側の端に書かれた数字を「自分1つに対して相手がいくつ対応するか」と読みます。
*は0以上、1..*は1以上、1はちょうど1つを表します。