問25 UML のモデルと参照制約

応用情報​技術者試験 令和7年度 春期 午前、全80問のうちの問25。

出典:令和7年度 春期 応用情報技術者試験 午前 問25(UML のクラス図は、クラスと属性の表、関連と多重度の表、2 つの制約の注記 (1 つ目は注文に、2 つ目は注文と付加情報の関連に付いている) の文に書き起こした)

UML を用いて表した図のデータモデルを関係データベース上に実装する際の解釈のうち,適切なものはどれか。

図 データモデル (クラスと属性)
クラス属性
顧客顧客番号,請求先,主送付先
注文注文番号,受注日,数量
品目品目番号,名称
付加情報識別番号,副送付先
図 データモデル (関連と多重度)
関連の端 1多重度関連の端 2多重度関連の名前 (役割名)
顧客1注文*
注文*品目1
顧客 (黒い菱形の側)1付加情報*注文主 (顧客の側の役割名)
注文*付加情報0..1指定送付先 (付加情報の側の役割名)

表は横に送ると続きが見えます。

図 制約の注記 (1 つ目は注文に、2 つ目は注文と付加情報の関連に付いている)
  1. 制約:“注文”のインスタンスが指定送付先をもつときは,その“付加情報”の注文主と“注文”の顧客は一致すること。
  2. 制約:“注文”のインスタンスが指定送付先をもつときは,当該“注文”の“顧客”の主送付先ではなく,“指定送付先”の副送付先を用いること。
  1. ア“指定送付先”を指定する際,“付加情報”表のどの行でも選択できる。
  2. イ“付加情報”表と“顧客”表の行数は一致していなければならない。
  3. ウ“付加情報”表には“顧客”表に対する参照制約を指定する。
  4. エ“付加情報”表には“注文”表に対する参照制約を指定する。
答えと解説を開く

正解はウです。

図では、顧客と付加情報の間の線の顧客の側に黒い菱形が付いています。これはコンポジションで、付加情報は顧客の一部として、どれか 1 人の顧客 (注文主) に必ず属します。多重度は顧客の側が 1、付加情報の側が * なので、1 人の顧客が付加情報を 0 個以上持ちます。関係データベースで「多の側の行が 1 の側のどの行に属するか」を表すには、多の側の表に外部キーを置きます。だから付加情報表に、顧客表を参照する外部キー (参照制約) を指定します。正解はウです。

ほかの選択肢が違う理由

  • ア注文の制約で、指定送付先の付加情報の注文主は、注文の顧客と一致しなければなりません。ほかの顧客の付加情報は選べないので、どの行でも選べるわけではありません。
  • イ多重度は顧客 1 に対して付加情報 * なので、1 人の顧客が付加情報を 0 個持つことも複数持つこともあります。行数が一致する必要はありません。
  • エ注文と付加情報の関連は、注文の側が *、付加情報の側が 0..1 です。1 つの注文は付加情報を 0 か 1 個指すので、外部キーは注文表の側に置き、注文表から付加情報表を参照します。

仕組み

UML のクラス図を表に直すときは、関連の多重度を見ます。1 対多の関連は、多の側の表に 1 の側を指す外部キーを置くのが基本です。

黒い菱形のコンポジションは「全体と部分」の強い結び付きで、部分は全体なしには存在しません。全体の行を消すときは部分の行も一緒に消す、という扱いが自然です。

この問に出る言葉