令和5年度 秋期 データベーススペシャリスト試験 午前II 問5

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

〔従業員表〕

従業員 (従業員番号, 氏名)

解答・解説

正解: エ. プログラム言語 (従業員番号, プログラム言語)

主キーと複合主キーとは

主キーは、関係データベースの表において、行をただ一つに特定(一意に識別)するための列(または列の組)です。1つの列だけで主キーとする場合もあれば、2つ以上の列の組み合わせを主キーとする場合もあり、後者を複合主キーと呼びます。問題文の「実線の下線」が主キーを表します。

正解の根拠

「プログラム言語を2種類以上使用できる従業員がいる」という条件を満たすためには、1人の従業員に対して複数のプログラム言語を登録できる設計にする必要があります。

「プログラム言語」表は、従業員番号とプログラム言語の組み合わせを管理する表です。ここで、従業員番号とプログラム言語の両方を主キー(複合主キー)とすることで、同一の従業員番号に対して複数の異なるプログラム言語を登録できるようになります。

なお、「プログラム言語を全く使用できない従業員もいる」という条件については、この表に該当する従業員のデータを登録しないことで表現できるため、問題の状況と矛盾しません。したがって、従業員番号とプログラム言語を複合主キーとする設計が適切です。

各選択肢の解説

  • ア: 氏名のみを主キーとしています。主キーは重複して登録できないため、1人の従業員に対して1つのプログラム言語しか登録できず、また同姓同名を識別するためにも従業員番号を用いるべきです。
  • イ: プログラム言語のみを主キーとしています。この設計では、1つのプログラム言語につき1つの行しか登録できないため、複数の従業員が同じプログラム言語を使用する状況を管理できません。
  • ウ: 従業員番号のみを主キーとしています。主キーは重複して登録できないため、1人の従業員に対して1つのプログラム言語しか登録できず、「プログラム言語を2種類以上使用できる」という条件を満たせません。
  • エ: 従業員番号とプログラム言語を複合主キーとしています。1人の従業員に複数のプログラム言語を登録できるため、条件を正しく管理できます。

Spineチーム