平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問4
テクノロジ/データベース次の概念データモデルを関係データベース上に実装することとし,実装用のデータモデルを作成した。適切な多重度が指定されているものはどれか。ここで,モデルの表記にはUMLを用いる。

出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問4
- ア図ア
- イ図イ
- ウ図ウ
- エ図エ
正解:エ
解説
元の概念データモデルでは,“会社”と“人”が“雇用する”という関連で結ばれ,会社側の多重度は0..5,人側の多重度は0..*である。UMLの多重度は,関連端に付けた値が「反対側の一つのインスタンスに対して,その端のクラスのインスタンスがいくつ対応し得るか」を表すため,会社側の0..5は「一人の人は0~5社に雇用され得る」こと,人側の0..*は「一つの会社は0人以上の人を雇用し得る」ことを意味する。この関連を,“雇用する”を独立した関連クラス(雇用)として実装する場合,雇用と会社・人それぞれとの二つの二項関連において,会社・人に隣接する側の多重度は常に1(一つの雇用記録は特定の1社・1人を指す)とし,雇用に隣接する側の多重度には,元のモデルの人側の多重度(0..*)を会社に対する雇用記録数として,元のモデルの会社側の多重度(0..5)を人に対する雇用記録数として,それぞれ引き継ぐ必要がある。図エの「会社1-0..*-雇用-0..5-1人」は,この条件を満たしている。
選択肢ごとの解説
- ア誤り。会社に隣接する多重度が0..5,雇用に隣接する多重度が1となっており,一つの雇用記録が0~5社を指せる(本来は必ず1社を指すはずである)上に,一つの会社に対する雇用記録数が1に限定されてしまっている(本来は0..*であるべき)。人側についても同様に,雇用に隣接する多重度が1,人に隣接する多重度が0..*となっており,会社側・人側とも「1」であるべき位置と「多」であるべき位置が入れ替わっている。
- イ誤り。会社に隣接する多重度が0..*,人に隣接する多重度が0..5となっている点は元のモデルの会社側・人側の値と対応しているようにみえるが,会社・人に隣接する側は本来必ず1でなければならないところが0..*や0..5になってしまっており,かつ雇用に隣接する側が1に固定されてしまっているため,一つの会社がもてる雇用記録数,一つの人がもてる雇用記録数がいずれも1に制限されてしまっている。
- ウ誤り。会社側・人側に隣接する多重度はいずれも1となっており,この部分は正しい。しかし,雇用に隣接する多重度が,会社側では0..5,人側では0..*となっており,元のモデルとは逆になっている。この結果,一つの会社がもてる雇用記録数が最大5件に制限され,逆に一つの人がもてる雇用記録数が無制限になってしまい,元のモデル(会社は何人でも雇用できるが,人は最大5社にしか雇用されない)の意味と矛盾する。
- エ正しい。会社側・人側に隣接する多重度はいずれも1であり,一つの雇用記録が特定の1社・1人を指すことを表す。さらに,雇用に隣接する多重度が,会社側で0..*,人側で0..5となっており,一つの会社は0人以上を何人でも雇用でき,一つの人は0~5社にしか雇用され得ないという,元のモデルの多重度をそのまま正しく引き継いでいる。