応用情報技術者 2023年 春期 午前2 問29
問題文
UMLを用いて表した図のデータモデルのa,bに入れる多重度はどれか。
〔条件〕
(1) 部門には1人以上の社員が所属する。
(2) 社員はいずれか一つの部門に所属する。
(3) 社員が部門に所属した履歴を所属履歴として記録する。


選択肢
ア:
イ:
ウ:
エ:(正解)
UMLの多重度設計問題【午前2 解説】
要点まとめ
- 結論:部門から所属履歴への多重度は「1..」、所属履歴から社員への多重度も「1..」が正解です。
- 根拠:部門には必ず1人以上の社員が所属し、社員は必ず1つの部門に所属する履歴があるため、多重度は下限1以上となります。
- 差がつくポイント:多重度の下限「0」と「1」の違いを正確に理解し、履歴管理の意味を踏まえて設計できるかが重要です。
正解の理由
- (1)「部門には1人以上の社員が所属する」ため、部門から所属履歴への多重度は「1..*」で、0人は許されません。
- (2)「社員はいずれか一つの部門に所属する」ため、所属履歴から社員への多重度も「1..*」で、社員が所属履歴を持たないことはありません。
- (3) 所属履歴は社員の部門所属の履歴を記録するため、必ず1つ以上の所属履歴が存在し、社員と部門の間を仲介します。
- 以上より、a=「1..」、b=「1..」の選択肢エが正解です。
よくある誤解
- 多重度の下限を「0」と誤解し、所属しない社員や部門が存在する可能性を許容してしまう。
- 履歴管理の役割を理解せず、所属履歴の多重度を「0..*」にしてしまう。
解法ステップ
- 問題文の条件を丁寧に読み、多重度の下限に注目する。
- 「部門には1人以上の社員が所属する」→部門側の多重度は「1..*」。
- 「社員はいずれか一つの部門に所属する」→社員側の多重度は「1..*」。
- 所属履歴が部門と社員を仲介し、履歴として必ず存在することを確認。
- 選択肢の中からa=「1..」、b=「1..」の組み合わせを選ぶ。
選択肢別の誤答解説
- ア(a:0..、b:0..)
→ 部門に社員が所属しない可能性や社員が所属履歴を持たない可能性を許容し、条件に反する。 - イ(a:0..、b:1..)
→ 部門側の多重度が0からで、部門に社員が所属しない場合を許してしまう。 - ウ(a:1..、b:0..)
→ 社員側の多重度が0からで、社員が所属履歴を持たない可能性を許してしまう。 - エ(a:1..、b:1..)
→ 条件を満たし、部門・社員双方に必ず所属履歴が存在する正しい多重度。
補足コラム
UMLの多重度は「下限..上限」で表し、下限は必須性、上限は最大数を示します。
履歴管理のように「必ず存在する」関係は下限1以上が基本です。
また、多重度の理解はデータベース設計やオブジェクト指向設計で重要なスキルです。
履歴管理のように「必ず存在する」関係は下限1以上が基本です。
また、多重度の理解はデータベース設計やオブジェクト指向設計で重要なスキルです。
FAQ
Q: 多重度の「0..」と「1..」の違いは何ですか?
A: 「0..」は関係がなくてもよい(任意)、「1..」は必ず1つ以上の関係が存在することを意味します。
A: 「0..」は関係がなくてもよい(任意)、「1..」は必ず1つ以上の関係が存在することを意味します。
Q: 所属履歴がなければ社員は部門に所属していないことになりますか?
A: はい。所属履歴が社員の部門所属を示すため、履歴がなければ所属していないと判断します。
A: はい。所属履歴が社員の部門所属を示すため、履歴がなければ所属していないと判断します。
関連キーワード: UML, 多重度、データモデル、所属履歴、関係性設計

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

