基本情報技術者 2013年 春期 午前(科目A) 問26
問題文
UMLを用いて表した図のデータモデルに対する多重度の説明のうち、適切なものはどれか。

選択肢
ア:社員が複数のプロジェクトに参画する場合は、全て同じ役割分担となる。
イ:社員は、同じプロジェクトに異なる役割分担で参画することができる。(正解)
ウ:社員は、一つ以上のプロジェクトに参画している。
エ:社員は、複数の部門に所属することができる。
🔒 解説は解答すると表示されます
UMLの多重度と役割分担【午前解説】
正解の理由
設問図では「プロジェクト参画」がプロジェクト・社員・プロジェクト内役割分担をつなぐレコード(連接エンティティ)になっています。各結合の多重度は次のように解釈します。
- 参画 — 役割:役割側に「1」、参画側に「0..*」 → 1つの参画には必ず1つの役割が割り当てられるが、ある役割に対しては複数の参画がある。
- 参画 — 社員:社員側に「1」、参画側に「0..*」 → 1つの参画は必ず1人の社員に紐づくが、ある社員に対して参画は0個以上存在する。
- 注記「プロジェクト・社員・プロジェクト内役割分担で一意に定まる」は(project, employee, role)の組で参画が一意であることを示すだけで、同じ社員が同じプロジェクトで「異なる」役割を持つことを禁止しません。
以上より「社員は、同じプロジェクトに異なる役割分担で参画することができる(イ)」が正しいです。
解法ステップ
- 各結合の多重度の位置を確認し、「あるインスタンスに対して相手側が何個あり得るか」を読み取る。
- 参画(中間エンティティ)的役割を持つクラスは、両側の多重度で「0..*」を持つ側が複数件を許容することを理解する。
- 注記(制約)を読んで、唯一性が何の組み合わせにかかっているかを確認し、可能/不可能な事例を検証する。
- 選択肢を上記の解釈に当てはめ、矛盾する記述を除外する。
選択肢別の誤答解説
- ア: 社員が複数のプロジェクトに参画する場合は、全て同じ役割分担となる。
→ 誤り。図は参画ごとに1つの役割を持つ設計で、プロジェクト毎に役割が異なっていても構わない。 - イ: 社員は、同じプロジェクトに異なる役割分担で参画することができる。
→ 正しい。参画が(プロジェクト, 社員, 役割)で一意化されているため、役割が異なれば別の参画を持てる。 - ウ: 社員は、一つ以上のプロジェクトに参画している。
→ 誤り。社員側の参画は0..*(社員に対して参画が無い可能性も有り)なので「必ず1つ以上」とは言えない。 - エ: 社員は、複数の部門に所属することができる。
→ 誤り。社員—部門の多重度は社員側1..*、部門側1で、1人の社員は部門側の多重度1に対応するため「1つの部門に所属する」と解釈される(部門は1つ、部門側は複数の社員を持つ)。
よくある誤解
- 「多重度の数をそのまま『何を持たなければならないか』と読み違える」:相手側の視点で数を読む必要があります。
- 「一意性制約=他の組み合わせも禁止」と誤認する:ここは複合キー的な唯一性であり、異なる役割なら別レコード化を許容します。
- 「矢印(三角)は必ず所属先の多重度を変える」と思い込む:三角はナビゲーション(向き)を示すことが多く、多重度自体の読み方は変わりません。
補足コラム
- アソシエーションを表す「参画」クラスはリレーショナルモデルでは連結テーブルに相当します。そこで主キーが(project_id, employee_id, role_id)であれば、同一社員が同一プロジェクトで複数の役割を持てるかはrole_idの有無で決まります。
- UMLの多重度の読み方は重要で、「A —(m..n)— B」のとき、A一件に対してBがm..n件ある、という向きで読む点を常に意識してください。
- 三角のナビゲーションは「参照方向」を示すことが多く、所有や導出を示す場合がありますが、多重度そのものの意味を変えません。
FAQ
Q. 参画における「0..*」はどちら側に書かれているかで意味が変わりますか?
A. はい。多重度はそれが付いている側(クラス)から見た「相手側インスタンス数」を示します。位置に注意して読みます。
A. はい。多重度はそれが付いている側(クラス)から見た「相手側インスタンス数」を示します。位置に注意して読みます。
Q. 注記「一意に定まる」は重複禁止だけですか?
A. はい。指定された属性の組で一意であることを示すため、異なる組合せ(例:役割が異なる)は別レコードとして許容されます。
A. はい。指定された属性の組で一意であることを示すため、異なる組合せ(例:役割が異なる)は別レコードとして許容されます。
Q. 部門の多重度「1..」は社員側にあると図示されていますが、社員が複数部門を持つ可能性は?
A. 図の読み方では社員側に「1..」があるのは部署から見た社員数であり、社員が所属する部門は「1」と示されているため、社員は1部門に所属します。
A. 図の読み方では社員側に「1..」があるのは部署から見た社員数であり、社員が所属する部門は「1」と示されているため、社員は1部門に所属します。
関連キーワード: UML、多重度、アソシエーション、連結エンティティ、複合キー、ナビゲーション、モデリング、ER図、リレーショナルモデリング

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

