多対多の関係を管理する表の主キー設計

従業員とプログラム言語の関連を整理すると、「1人の従業員が2種類以上の言語を使用でき、言語を全く使用できない従業員もいる(0以上の言語)」「同一の言語を複数の従業員が使用できる」ことから、両者は多対多($M:N$)の関係にあります。 多対多の関連を関係データベースで表現するには、両方の主キーを組み合わせた複合主キー(従業員番号, プログラム言語)を持つ交差表(連関表)として設計します。これにより、同一の従業員が複数のプログラム言語を登録できるようになり、かつ重複登録を防ぐことができます。 氏名は同姓同名が存在する可能性があるため主キー(一意識別子)として不適切であり、また従業員表の主キーである従業員番号が含まれていません。 プログラム言語のみを主キーとすると、1つのプログラム言語に対して1人の従業員しか登録できなくなってしまいます。 従業員番号のみを主キーとすると、1人の従業員につき1件(1種類)のプログラム言語しか登録できず、「プログラム言語を2種類以上使用できる」要件を満たせません。

従業員の,従業員番号,氏名及び使用できるプログラム言語を管理するために,“従業員”表及び“プログラム言語”表を設計する。“プログラム言語を2種類以上使用できる従業員がいる。プログラム言語を全く使用できない従業員もいる。”という状況を管理する“プログラム言語”表の設計として,適切なものはどれか。ここで,実線の下線は主キーを表す。

〔従業員表〕 従業員 (従業員番号, 氏名)

出典令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問4
ア
プログラム言語 (<u>氏名</u>, プログラム言語)
イ
プログラム言語 (従業員番号, <u>プログラム言語</u>)
ウ
プログラム言語 (<u>従業員番号</u>, プログラム言語)
エ
プログラム言語 (<u>従業員番号</u>, <u>プログラム言語</u>)