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

選択肢
ア:社員が1人も所属しない組織は存在しない。(正解)
イ:社員は必ずしも組織に所属しなくてもよい。
ウ:社員は複数の組織に所属することができる。
エ:一つの組織に複数の社員は所属できない。
🔒 解説は解答すると表示されます
UMLの多重度【午前解説】
正解の理由
図では、線の組織側に「1」、社員側に「1..」と書かれています。UMLのルールでは、「ある多重度の値は、その値が書かれた側にあるクラスについて、反対側のインスタンス1つに対していくつ存在し得るか」を表します。したがって組織側に書かれた「1」は「1人の社員が所属できる組織はちょうど1つ」であり、社員側に書かれた「1..」は「1つの組織に属する社員は1人以上である」ことを示します。よって「社員が1人も所属しない組織は存在しない」という記述、すなわち ア が正しい選択です。
解法ステップ
- 線の両端に書かれた多重度を確認する(左=組織側「1」、右=社員側「1..*」)。
- 多重度の読み方を思い出す:端に書かれた値は「反対側のインスタンス1個に対していくつ存在するか」を示す。
- 図に当てはめる:
- 組織側の「1」 → 1人の社員あたり所属できる組織はちょうど1つ(社員は必ず1つの組織に属する)。
- 社員側の「1..*」 → 1つの組織に所属する社員数は1人以上である(0人は許されない)。
- 結論:組織は必ず1人以上の社員を持つので、社員が1人も所属しない組織は存在しない(ア)。
選択肢別の誤答解説
- ア:正しい。上の解法ステップどおり、社員側の多重度が「1..*」のため、組織に社員がゼロのケースはない。
- イ:誤り。社員が必ずしも組織に所属しなくてもよい、つまり社員は組織に属さないことが許されるという意味だが、組織側に「1」が書かれているため1人の社員につき組織はちょうど1つ存在する→社員は必ず1つの組織に所属する。
- ウ:誤り。社員が複数の組織に所属できるなら、組織側に「1」ではなく「0..」や「1..」などが書かれているはず。ここでは組織側の「1」が「1人の社員に対して関連する組織はちょうど1つ」を示すため、社員は複数組織に所属できない。
- エ:誤り。一つの組織に複数の社員が所属できない、という主張は図と逆です。社員側の「1..*」は「1つの組織に属する社員は1人以上」であり、複数所属は許される。
よくある誤解
- 多重度の「書かれている側」が示す対象を逆に読む誤り:多くの受験者は「組織側に書いてある値は組織1つ当たりの社員数」と直感で読みがちだが、正しくは「組織側に書かれた値は(反対側の)社員1つあたりの組織数」を示す。図ではこれを正しく逆に当てはめると混乱が解ける。
- 「1..*」を「0以上」と誤解する:
1..*は最低1つを意味し、ゼロは含まれない。ゼロ許容なら0..*や*と表記される。 - 多重度が省略された場合のデフォルトは1と考える癖:図で明示されている場合と省略時では解釈が違うため注意する。
補足コラム
- UMLの多重度(multiplicity)は関係の「片側に書かれた値が、反対側インスタンス1つあたりいくつ存在し得るか」を表す点を常に意識してください。短いフレーズで覚えるなら「値は反対側の“1個”あたりの個数」。
- 主に使われる表記例:
1(ちょうど1)、0..1(0か1)、1..*(1以上)、*または0..*(0以上、任意)。 - 多重度は設計上の制約を表すため、データベースの外部キー制約や業務ルールと整合するか確認することが重要です。
FAQ
Q1. 多重度が両端とも
A1. 両端とも
1 だったらどう解釈する?A1. 両端とも
1 なら「1つの組織はちょうど1人の社員と対応し、1人の社員はちょうど1つの組織に対応する」つまり1対1の関係です。Q2.
A2.
* と書かれていたら何を意味する?A2.
* は「任意の数(0以上)」を意味します。* と 0..* は同義です(少なくともUML表記上は)。Q3. 多重度が省略されているクラス図はどう読む?
A3. UMLでは多重度が省略された場合、暗黙の多重度は
A3. UMLでは多重度が省略された場合、暗黙の多重度は
1 と解釈されることが一般的ですが、設計ルールによって扱いが異なる場合があるため図の注記やドキュメントを確認してください。関連キーワード: UML、多重度、クラス図、カーディナリティ、1..*、0..1、アソシエーション、設計ルール

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

