条件①〜⑤によって,関係データベースで管理する“従業員”表と“部門”表を作成した。
“従業員”表の主キーとして,最も適切なものはどれか。
〔条件〕
① 各従業員は重複のない従業員番号を一つもつ。
② 同姓同名の従業員がいてもよい。
③ 各部門は重複のない部門コードを一つもつ。
④ 一つの部門には複数名の従業員が所属する。
⑤ 1人の従業員が所属する部門は一つだけである。
従業員表の列: 従業員番号,従業員名,部門コード,生年月日,住所
部門表の列: 部門コード,部門名,所在地
正答1
解説
正解は1です。
“従業員”表の主キーとして最も適切な列を、条件から判断する問題です。
主キーとは、表の中の行を一つに特定できる列(または列の組合せ)で、値の重複や空の値が許されません。
【選択肢別解説】
1:○ 条件①より、従業員番号は従業員ごとに重複がありません。
従業員番号だけで行を一つに特定できるので、主キーとして最も適切です。
2:× 従業員番号だけで行を特定できるので、部門コードを組み合わせる必要はありません。
主キーは必要最小限の列で構成します。
3:× 条件②より同姓同名の従業員がいる可能性があるので、従業員名では行を一つに特定できません。
4:× 条件④より一つの部門には複数の従業員が所属するので、部門コードは従業員表の中で重複します。
部門コードは部門表を参照する外部キーになります。
【ポイント】
主キーは「重複しない」「空にならない」「最小限の列」であることが条件です。
他の表の主キーを参照する列(本問の従業員表の部門コード)は外部キーと呼ばれます。