平成23年度 特別 午前Ⅱ 問1
データベース設計
bに入る多重度の適切な組合せ
社員と年の関連が次の条件を満たす場合を UML のクラス図で記述するとき,a,b に入る多重度の適切な組合せはどれか。ここで,年クラスのインスタンスは毎年存在する。
〔条件〕
(1) すべての社員は入社年を特定できる。
(2) 年によっては社員が入社しないこともある。
クラス図:
社員 [ a ] ―――――――― [ b ] 年
入社年
- クラス「社員」とクラス「年」が関連で結ばれている。社員の側の関連端の多重度が空欄 a,年の側の関連端の多重度が空欄 b。
- 年の側の関連端に「入社年」と記されている。
選択肢は原典では a,b の表。
- アa:0..* / b:0..1
- イa:0..* / b:1..1
- ウa:1..* / b:0..1
- エa:1..* / b:1..1
答えと解説を見る
✓ これが正解イa:0..* / b:1..1
解説
社員1人に入社年はちょうど一つ、年ごとの入社者は0人以上です。
UML の多重度は、相手側のインスタンスを一つ固定したときに、こちら側のインスタンスがいくつ対応するかを、こちら側の関連端に書きます。年の側の b は、社員1人から見た入社年の数です。条件(1)ですべての社員の入社年が特定できるので、1人の社員には入社年がちょうど一つ対応し、b は 1..1 になります。社員の側の a は、ある年から見たその年の入社者の数です。条件(2)で入社者がいない年もあるので下限は0、上限は決まらないので *、つまり 0..* です。多重度は、反対側を一つ固定して、自分の側がいくつ並ぶかを数える、と読むと位置を取り違えません。
ほかの選択肢はなぜ違うのか
- アa:0..* / b:0..1:社員の側の 0..* は合っていますが、年の側を 0..1 にすると入社年をもたない社員を認めることになります。すべての社員の入社年が特定できるという条件(1)に反します。
- ウa:1..* / b:0..1:社員の側を 1..* にすると、どの年にも必ず1人以上の入社者がいることになり、条件(2)と合いません。年の側の 0..1 も入社年の無い社員を許すので、両端とも条件から外れます。
- エa:1..* / b:1..1:年の側の 1..1 は条件(1)に合っていますが、社員の側の 1..* は毎年だれかが入社することを求めます。年によっては入社者がいないという条件(2)を表せません。
出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問1
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)