問65
頻出度★★★
条件①~⑤によって,関係データベースで管理する“従業員”表と“部門”表を作成した。“従業員”表の主キーとして,最も適切なものはどれか。 〔条件〕 ① 各従業員は重複のない従業員番号を一つもつ。 ② 同姓同名の従業員がいてもよい。 ③ 各部門は重複のない部門コードを一つもつ。 ④ 一つの部門には複数名の従業員が所属する。 ⑤ 1人の従業員が所属する部門は一つだけである。 従業員
| 従業員番号 | 従業員名 | 部門コード | 生年月日 | 住所 |
|---|
部門
| 部門コード | 部門名 | 所在地 |
|---|
この問題の解説と、これまでの解答の記録です。
条件①~⑤によって,関係データベースで管理する“従業員”表と“部門”表を作成した。“従業員”表の主キーとして,最も適切なものはどれか。 〔条件〕 ① 各従業員は重複のない従業員番号を一つもつ。 ② 同姓同名の従業員がいてもよい。 ③ 各部門は重複のない部門コードを一つもつ。 ④ 一つの部門には複数名の従業員が所属する。 ⑤ 1人の従業員が所属する部門は一つだけである。 従業員
| 従業員番号 | 従業員名 | 部門コード | 生年月日 | 住所 |
|---|
部門
| 部門コード | 部門名 | 所在地 |
|---|
正解 主キーとは、関係データベースの表で各行 (各レコード) を一意に識別するための項目。条件①より「従業員番号」は各従業員が重複なく一つもつ値なので、同じ従業員番号をもつ行は存在せず、これ一つで各従業員を確実に特定できる。よって「従業員」表の主キーとして最も適切なのは「ア」の「従業員番号」である。
「従業員番号」と「部門コード」の複合。従業員番号だけで既に一意に識別できるため、部門コードを加えるのは不要 (冗長) で、主キーは必要最小限の項目にすべきという原則に反する。したがって最適ではない。
「従業員名」は条件②「同姓同名の従業員がいてもよい」より値が重複しうる。重複する項目では行を一意に識別できないため主キーにできない。
「部門コード」は条件④「一つの部門には複数名の従業員が所属する」より、複数の従業員行で同じ値をとりうる。一意に識別できないため主キーにできない (これは部門表を参照する外部キーに当たる)。