令和4年度 秋期 午前Ⅱ 問2
データベース設計
bに入れる多重度の適切な組合せ
社員と年との対応関係を UML のクラス図で記述する。二つのクラス間の関連が次の条件を満たす場合,a,b に入れる多重度の適切な組合せはどれか。ここで,“年”クラスのインスタンスは毎年存在する。
〔条件〕
(1) 全ての社員は入社年を特定できる。
(2) 年によっては社員が入社しないこともある。
クラス図:
社員 ―――――――――――――― 年 社員側の多重度:[ a ] 年側の多重度:[ b ](関連端名“入社年”)
選択肢は原典では a,b の表。
- アa:0..* / b:0..1
- イa:0..* / b:1
- ウa:1..* / b:0..1
- エa:1..* / b:1
答えと解説を見る
✓ これが正解イa:0..* / b:1
解説
入社年は社員ごとに1つ、入社者は年ごとに0人以上です。
UML の多重度は関連の両端に書き、ある端に書いた値は、反対側のクラスのインスタンス一つに対して、その端の側のクラスのインスタンスが幾つ対応するかを表します。年の側の端 b は、社員一人に対応する入社年の数です。条件(1)により全ての社員は入社年を一つに特定できるので、b は 1 です。社員の側の端 a は、ある年一つに対応する社員の数です。条件(2)から、年によっては入社する社員がいないこともあり、多い年には何人も入社するので、a は 0..* です。この組合せが正解です。多重度は反対側のインスタンス一つから見た数、と押さえ、どちらの端に書くかを取り違えないことが見分けの軸です。
ほかの選択肢はなぜ違うのか
- アa:0..* / b:0..1:社員の側の a を 0..* としたのは合っていますが、年の側の b を 0..1 としています。これでは入社年が特定できない社員がいてもよいことになり、全ての社員は入社年を特定できるという条件(1)に反します。
- ウa:1..* / b:0..1:社員の側の a を 1..* とすると、どの年にも必ず一人以上の社員が入社することになります。条件(2)では入社しない年もあるとしているので合いません。年の側の b を 0..1 とした点も条件(1)に反します。
- エa:1..* / b:1:年の側の b を 1 とした点は条件(1)に合っていますが、社員の側の a を 1..* としています。これは毎年必ず誰かが入社することを求める指定であり、入社しない年もあるという条件(2)と食い違います。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問2
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)