UMLの多重度は所属先の数をどう示す?
基本情報技術者試験 令和元年度秋期 午前 問25 / データベース › データベース設計
過去問にチャレンジ
UMLを用いて表した図の概念データモデルの解釈として,適切なものはどれか。

- ア
従業員の総数と部署の総数は一致する。
- イ
従業員は,同時に複数の部署に所属してもよい。
- ウ
所属する従業員がいない部署の存在は許されない。
- エ
どの部署にも所属しない従業員が存在してもよい。
会話形式の解説
講師この図では、関連の両端にある数値の読み方がポイントです。まず、部署の横にある「1..*」は何を数えているでしょうか。
受験者部署一つに所属する従業員が、1人以上という意味だと思いました。
講師そこが紛らわしいところです。端の数値は、反対側の対象1件から見て、その端の対象が何件対応するかを示します。部署の横の「1..*」は、従業員1人に対応する部署の数です。
受験者従業員1人には、部署が少なくとも一つ対応するのですね。「*」なら複数でもよいのでしょうか。
講師はい。上限がないので、従業員が同時に複数の部署に所属してもよい、という選択肢が適切です。
受験者では、従業員の横の「0..*」は、部署一つに対応する従業員の数ですね。
講師そのとおりです。下限が0なので、所属する従業員がいない部署も認められます。「従業員がいない部署は許されない」という選択肢は不適切です。
受験者0から始まるなら、どの部署にも所属しない従業員も認められるように感じます。
講師その場合は、従業員1人に対応する部署の数を見ます。部署側は「1..*」なので、所属先が一つもない従業員は認められません。
受験者従業員と部署の総数が一致する、という判断もできませんね。
講師はい。多重度が示すのは、反対側の対象1件に対する対応数です。両者の総数が同じだとは示していません。
受験者端の数値を反対側の1件から読み、下限を確認すれば、所属が必須かどうかも判断できますね。
講師その読み方です。この図では「1..*」が所属先の部署、「0..*」が部署に対応する従業員の数を示すと確かめると、取り違えを防げます。
まとめ
UMLの関連の端にある多重度は、反対側の対象1件に対して、その端の対象が何件対応するかを示します。この図では従業員1人に対する部署が「1..*」なので、従業員は複数の部署に所属できます。一方、部署1件に対する従業員は「0..*」なので、従業員がいない部署も認められます。多重度から従業員と部署の総数が一致するとはいえません。
解答・解説
正解はイです
この問題のテーマ
UMLの関連に付いた多重度を読み取り、部署と従業員の対応関係を判断する問題です。
解き方の考え方
関連の端にある数値は、その端の対象が、反対側の対象1件に対して何件対応できるかを表します。図では、従業員1人に対応する部署が「1..*」、部署1件に対応する従業員が「0..*」です。下限と上限をそれぞれ確認して選択肢を判断します。
選択肢ごとの解説
- ×ア 従業員の総数と部署の総数は一致する。従業員と部署の総数が一致するとはいえません。図の多重度が定めているのは1件ごとの対応数であり、両者の総数ではありません。
- ○イ 従業員は,同時に複数の部署に所属してもよい。従業員1人に対応する部署は「1..*」なので、少なくとも1件必要です。上限は設けられていないため、複数の部署に所属できます。
- ×ウ 所属する従業員がいない部署の存在は許されない。部署1件に対応する従業員は「0..*」です。下限が0なので、所属する従業員がいない部署も認められます。
- ×エ どの部署にも所属しない従業員が存在してもよい。従業員に対応する部署の下限は1です。したがって、どの部署にも所属しない従業員は、この図の関係を満たしません。
POINT
- 多重度は、記号が付いた側の対象について、反対側の対象1件から見た対応数を示します。
- 「1..*」は1件以上、「0..*」は0件以上を表します。
- 所属先が必須かどうかは、対応する多重度の下限で判断します。
