问题 单项选择题

假设员工关系EMP(员工号,姓名,部门,部门电话,部门负责人,家庭住址,家庭成员,成员关系)如下表所示。如果一个部门可以有多名员工,一个员工可以有多个家庭成员,那么关系EMP属于 (34) ,且 (35) 问题;为了解决这一问题,应该将员工关系EMP分解为 (36)

(36)处填()。

A.EMP1(员工号,姓名,家庭住址)
EMP2(部门,部门电话,部门负责人)
EMP3(员工号,家庭成员,成员关系)

B.EMP1(员工号,姓名,部门,家庭住址)
EMP2(部门,部门电话,部门负责人)
EMP3(员工号,家庭成员,成员关系)

C.EMP1(员工号,姓名,家庭住址)
EMP2(部门,部门电话,部门负责人,家庭成员,成员关系)

D.EMP1(员工号,姓名,部门,部门电话,部门负责人,家庭住址)
EMP2(员工号,家庭住址,家庭成员,成员关系)

答案

参考答案:B

解析:

[要点解析]

对于员工关系EMP(员工号,姓名,部门,部门电话,部门负责人,家庭住址,家庭成员,成员关系)有下列函数依赖:员工号→姓名,部门,部门电话,部门负责人,家庭住址。员工号、成员关系→家庭成员。部门→部门电话,部门负责人。由此可见主键为{员工号,成员关系}。

第一个函数依赖:员工号→姓名,部门,部门电话,部门负责人,家庭住址。右边为非键属性,而员工号为键的组成部分。不符合2NF,故是1NF。

关系模式设计中可能出现各种冗余,即同一事实在多个元组中重复。造成冗余的原因通常是将同一个对象的单值和多值特征混合在同一个关系中。例如,表中的员工号为0011的三个元组存在冗余信息。

修改异常:修改某个元组的信息,而重复的信息可能未修改而破坏一致性。或插入数据时,某些有用信息暂时无法插入。

删除异常:删除某个对象时,必须删除多个元组而不是一个元组,操作不当有可能破坏数据一致性。或删除元组时,同时删除了其他有用信息。例如删除员工号为0011的对象时,必须删除三个元组。

为了避免异常,用几个关系代替原有的关系,且保持数据一致性,从而进行关系的分解,可将函数依赖{员工号→姓名,部门,部门电话,部门负责人,家庭住址}分解为EMP1(员工号,姓名,部门,家庭住址)和EMP2(部门,部门电话,部门负责人);函数依赖{员工号,成员关系→家庭成员}形成EMP3(员工号,家庭成员,成员关系)。三个关系的主键依次为员工号,部门,员工号和成员关系。

单项选择题
判断题