問65
頻出度★★★
条件①~⑤によって,関係データベースで管理する“従業員”表と“部門”表を作成した。“従業員”表の主キーとして,最も適切なものはどれか。 〔条件〕 ① 各従業員は重複のない従業員番号を一つもつ。 ② 同姓同名の従業員がいてもよい。 ③ 各部門は重複のない部門コードを一つもつ。 ④ 一つの部門には複数名の従業員が所属する。 ⑤ 1人の従業員が所属する部門は一つだけである。 従業員
| 従業員番号 | 従業員名 | 部門コード | 生年月日 | 住所 |
|---|
部門
| 部門コード | 部門名 | 所在地 |
|---|
这道题的解析和你的作答记录。
条件①~⑤によって,関係データベースで管理する“従業員”表と“部門”表を作成した。“従業員”表の主キーとして,最も適切なものはどれか。 〔条件〕 ① 各従業員は重複のない従業員番号を一つもつ。 ② 同姓同名の従業員がいてもよい。 ③ 各部門は重複のない部門コードを一つもつ。 ④ 一つの部門には複数名の従業員が所属する。 ⑤ 1人の従業員が所属する部門は一つだけである。 従業員
| 従業員番号 | 従業員名 | 部門コード | 生年月日 | 住所 |
|---|
部門
| 部門コード | 部門名 | 所在地 |
|---|
正解 主键是关系数据库的表中用于唯一标识每一行(每条记录)的项。由条件①可知,「员工编号」是每名员工都不重复地拥有一个的值,因此不存在拥有相同员工编号的行,仅凭这一项就能确切地确定每名员工。所以,作为「员工」表的主键,最合适的是「ア」的「员工编号」。
「员工编号」和「部门代码」的复合。仅凭员工编号就已经能够唯一标识,因此再加上部门代码是不必要的(冗余),违反了主键应由必要的最少项构成这一原则。因此不是最合适的。
由条件②「允许存在同姓同名的员工」可知,「员工姓名」的值可能重复。值会重复的项无法唯一标识行,因此不能作为主键。
由条件④「一个部门中有多名员工所属」可知,「部门代码」在多个员工行中可能取相同的值。因为无法唯一标识,所以不能作为主键(它相当于引用「部门」表的外键)。