基本情報技術者 2019年 秋期 午前(科目A) 問25
問題文
UMLを用いて表した図の概念データモデルの解釈として、適切なものはどれか。

選択肢
ア:従業員の総数と部署の総数は一致する。
イ:従業員は、同時に複数の部署に所属してもよい。(正解)
ウ:所属する従業員がいない部署の存在は許されない。
エ:どの部署にも所属しない従業員が存在してもよい。
##: UMLを用いた概念データモデルの解釈【午前2 解説】
要点まとめ
- 結論:従業員は少なくとも1つの部署に所属し、複数の部署に同時に所属することが許される。
- 根拠:多重度は各インスタンスが相手側に結びつく個数を示し、左端1..*は従業員ごとに部署が1以上あることを示す。
- 差がつくポイント:多重度は「位置」で意味が逆になる点に注意し、左端はその右側インスタンスの視点で読む。
正解の理由
正解は イ です。
理由は以下の通りです。UMLの関連線上の多重度は、線の近くに書かれたクラス(ここでは「部署」や「従業員」)が、反対側のインスタンス1つに対して何個あり得るかを示します。今回、部署側(左端)に書かれた多重度「1..」は「1人の従業員に対して所属する部署は1個以上であり複数もあり得る」ことを意味します。したがって「従業員は同時に複数の部署に所属してもよい」は正しい解釈です。さらに右端の「0..」は「1つの部署に所属する従業員は0人でもよい(社員不在を許す)」ことを示しています。
理由は以下の通りです。UMLの関連線上の多重度は、線の近くに書かれたクラス(ここでは「部署」や「従業員」)が、反対側のインスタンス1つに対して何個あり得るかを示します。今回、部署側(左端)に書かれた多重度「1..」は「1人の従業員に対して所属する部署は1個以上であり複数もあり得る」ことを意味します。したがって「従業員は同時に複数の部署に所属してもよい」は正しい解釈です。さらに右端の「0..」は「1つの部署に所属する従業員は0人でもよい(社員不在を許す)」ことを示しています。
よくある誤解
- 多重度を「その端に書かれたクラスの視点」ではなく逆に読む誤り。位置によって意味が反転します。
- 矢印(ナビゲーション)を「所属の読み方向」だけと解釈し、多重度の意味に影響すると誤認すること。ナビゲーションは参照可能性を示すのみです。
- 「0..*」を見て即座に「必ず複数いる」と判断する誤り。0は「存在しなくてよい」を意味します。
解法ステップ
- 関連線の左右どちらに多重度が書かれているかを確認する。
- 「あるクラスの1インスタンスが、反対側クラスに対して何個対応するか」を読む(近接する多重度がその数を表す)。
- 多重度の下限が0なら「存在しなくてもよい」、1以上なら「少なくとも1つは必要」と判断する。
- 矢印があればナビゲーション(どちらから参照できるか)を確認するが、多重度の意味は変わらない。
選択肢別の誤答解説
- ア: 従業員の総数と部署の総数は一致する。
誤り。多重度は「各インスタンス間の対応数」を示すが、総数の一致を示すものではありません。1対多や多対多などが可能で、総数が一致する保証はないです。 - イ: 従業員は、同時に複数の部署に所属してもよい。
正解。左側(部署)にある多重度「1..*」は「従業員1人につき部署が1個以上存在し、複数も可」を意味します。 - ウ: 所属する従業員がいない部署の存在は許されない。
誤り。右側(従業員)にある多重度は「0..*」であり、部署に従業員が0人というケースを許容します。 - エ: どの部署にも所属しない従業員が存在してもよい。
誤り。従業員側から見た部署の多重度が「1..*」のため、従業員は少なくとも1つの部署に所属する必要があり、所属しない従業員は許されません。
補足コラム
- ナビゲーション(矢印)の意味:矢印は「どちらの方向に参照(辿る)可能か」を示します。問題文では左向きの矢印があるため、従業員側から部署側へのナビゲーションが明示されていますが、ナビゲーションの有無は多重度の意味を変えません。
- 多重度の表記例:
0..*
(ゼロ以上任意多数),1
(ちょうど1つ),1..*
(一つ以上)など。現場設計では多重度と業務ルール(必須・任意)を照らし合わせることが重要です。 - 逆読みの注意:左端にある多重度は「右側クラス1個あたり左側が何個あるか」、右端はその逆です。初学者が読み間違えやすい箇所です。
FAQ
Q1: 矢印がある場合、多重度の意味は変わりますか?
A1: 変わりません。矢印は参照可能性(ナビゲーション)を示すだけで、多重度は独立して「どれだけの関係があり得るか」を示します。
A1: 変わりません。矢印は参照可能性(ナビゲーション)を示すだけで、多重度は独立して「どれだけの関係があり得るか」を示します。
Q2: 「1..*」は必ず多対多を意味しますか?
A2: いいえ。片側が1..*でももう片方の多重度が1なら1対多、両側が1..*なら多対多です。組み合わせで関係性を判断します。
A2: いいえ。片側が1..*でももう片方の多重度が1なら1対多、両側が1..*なら多対多です。組み合わせで関係性を判断します。
Q3: 多重度が書かれていない場合はどう読むべきですか?
A3: UMLの標準では省略時に暗黙の
A3: UMLの標準では省略時に暗黙の
1と解釈する場合もありますが、設計資料や問題では明示が原則です。明記がない場合は問題文の前提を確認してください。
関連キーワード: UML、多重度、ナビゲーション、関連、1..、0..、クラス図、概念データモデル、所属、参照性

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

