令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問4
テクノロジ/データベース従業員の,従業員番号,氏名及び使用できるプログラム言語を管理するために,“従業員”表及び“プログラム言語”表を設計する。“プログラム言語を 2 種類以上使用できる従業員がいる。プログラム言語を全く使用できない従業員もいる。”という状況を管理する“プログラム言語”表の設計として,適切なものはどれか。ここで,実線の下線は主キーを表す。 〔従業員表〕 従業員(従業員番号,氏名) ※従業員番号が主キー (注:本サイトでは原問題の下線(主キー)を注記で表しています)
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問4
- アプログラム言語(氏名,プログラム言語) ※主キーは氏名
- イプログラム言語(従業員番号,プログラム言語) ※主キーはプログラム言語
- ウプログラム言語(従業員番号,プログラム言語) ※主キーは従業員番号
- エプログラム言語(従業員番号,プログラム言語) ※主キーは{従業員番号,プログラム言語}
正解:エ
解説
“プログラム言語を2種類以上使用できる従業員がいる”一方で“全く使用できない従業員もいる”という多対多に近い状況を表すには,“プログラム言語”表の主キーを{従業員番号,プログラム言語}の複合キーにする必要があります。こうすることで,1人の従業員に対して複数の言語の行を登録でき,使用できる言語がない従業員は単にこの表に行をもたないだけで表現できます。
選択肢ごとの解説
- ア誤り。氏名を主キーにすると,同姓同名の従業員を区別できず,また従業員番号との対応も表せないため適切ではありません。
- イ誤り。プログラム言語だけを主キーにすると,一つの言語につき従業員番号が一つしか登録できなくなり,2種類以上の言語を使用できる従業員を表現できません。
- ウ誤り。従業員番号だけを主キーにすると,一人の従業員につきプログラム言語が一つしか登録できなくなり,2種類以上の言語を使用できる従業員を表現できません。
- エ正しい。{従業員番号,プログラム言語}を複合主キーにすることで,1人の従業員が複数の言語の行をもつことができ,かつ使用できる言語がない従業員は行が存在しないだけで表現できます。