UMLクラス図の汎化と多重度をどう読むか
基本情報技術者試験 平成29年度秋期 午前 問28 / データベース › データベース設計
過去問にチャレンジ
UMLを用いて表した図のデータモデルの解釈のうち,適切なものはどれか。

- ア
事業部以外の部門が,部門を管理できる。
- イ
社員は事業部に所属できる。
- ウ
所属する社員がいない部門が存在する。
- エ
部門は,いずれかの事業部が管理している。
会話形式の解説
講師まず白抜きの三角形が指す先を確認しましょう。そのうえで、関連の端に書かれた人数や個数を読みます。
受験者三角形は部門を指しています。事業部と部門は、どういう関係ですか。
講師部門が上位クラスで、事業部はその一種です。部門に定義された「所属する」という関連は、事業部にも適用できます。
受験者それなら、社員が事業部に所属できるという解釈が適切ですね。
講師そのとおりです。ほかの解釈も、線が結ぶ対象と多重度を使って確かめましょう。
受験者事業部も部門の一種なら、事業部以外の部門も管理できるのでしょうか。
講師図の「管理する」関連で、管理する側にあるのは事業部です。事業部以外の部門が管理する関係は読み取れません。
受験者所属する社員がいない部門については、社員側の「1..*」を見ればよいですか。
講師はい。一つの部門に結び付く社員は1人以上です。0人の部門は、この図の条件に合いません。
受験者では、どの部門も事業部に管理されるという解釈はどうですか。
講師事業部側の「0..1」に注目します。一つの部門を管理する事業部は0または1なので、管理されない部門も許されます。
受験者端の数値は、反対側の一つの対象に対して、数値が書かれた側の対象が幾つ結び付くかを示すのですね。
講師はい。多重度に0が含まれれば結び付かない場合もあります。白抜きの三角形が示す上位・下位の関係と併せて読むのがポイントです。
まとめ
白抜きの三角形は上位クラスの部門を指し、事業部は部門の一種です。部門の「所属する」関連は事業部にも適用できるため、社員は事業部に所属できます。社員側の多重度「1..*」は、部門に所属する社員が1人以上いることを示します。一方、管理する事業部側の「0..1」は、管理する事業部がない部門も許します。
解答・解説
正解はイです
この問題のテーマ
UMLのクラス図に示された汎化と関連の多重度を読み取り、部門・事業部・社員の関係を判断する問題です。
解き方の考え方
白抜きの三角形が指す部門は、事業部の上位クラスです。次に、関連の線の端に書かれた多重度を、反対側の一つの対象に対して何人・幾つ結び付くかとして読みます。事業部が部門の一種であることを踏まえ、各選択肢を図と照合します。
選択肢ごとの解説
- ×ア 事業部以外の部門が,部門を管理できる。図の「管理する」関連で、管理する側として部門に結ばれているのは事業部です。事業部以外の部門が管理するという関係は、この図からは読み取れません。
- ○イ 社員は事業部に所属できる。事業部は部門を特化したクラスなので、部門の一種として扱えます。部門と社員の「所属する」関連は事業部にも適用できるため、社員は事業部に所属できます。
- ×ウ 所属する社員がいない部門が存在する。社員側の多重度は「1..*」です。これは一つの部門に所属する社員が1人以上いることを表すので、所属社員が0人の部門は図の条件に合いません。
- ×エ 部門は,いずれかの事業部が管理している。「管理する」関連の事業部側には「0..1」とあります。一つの部門を管理する事業部は0または1なので、どの部門も必ず管理されるとはいえません。
POINT
- 白抜きの三角形は上位クラスを指します。
- 下位クラスの対象には、上位クラスに定義された関連も適用できます。
- 多重度は、その数値が書かれた側の対象が幾つ結び付くかを示します。
- 多重度に0が含まれる場合、その側の対象と結び付かないことも許されます。
