文档库

最新最全的文档下载
当前位置:文档库 > 《数据库》第5章习题答案

《数据库》第5章习题答案

[习题5.4]已知关系模式R(ABC),F是R上成立的FD集,F={A→B,B→C},试写出F的闭包F+。

《数据库》第5章习题答案

5.7 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,C→B},则相对于F,试写出关系模式R的关键码。并说明理由。

解:R的关键码为ACD,因为从已知的F,只能推出ACD→ABCD。

5.8 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C}

①试写出属性集BD的闭包(BD)+。

②试写出所有左部是B的函数依赖(即形为“B→?”)。

解:①从已知的F,可推出BD→BCD,所以BD的闭包(BD)+=BCD。

②由于B+=BC,因此左部是B的FD有四个:

B→Φ,B→B,B→C,B→BC

5.11 设关系模式R(ABC),F是R上成立的FD集,F={ A→C,B→C},试分别求

F 在模式AB和AC上的投影。

解:πAB(F)=Φ(即不存在非平凡的FD)

πAC(F)={A→C}

5.12 设关系模式R(ABC),F是R上成立的FD集,F={B→A,C→A},

ρ={AB,BC}是R上的一个分解,那么分解ρ是否保持FD集F?并说明理

由。

解:已知F={B→A,C→A},而πAB(F)={B→A},πBC(F)=Φ,显然,分解ρ丢失了FD C→A。

5.13 设关系模式R(ABC),F是R上成立的FD集,F={B→C,C→A},那么分

解ρ={AB,AC}相对于F,是否无损分解和保持FD?并说明理由。

解:(1)已知F={B→C,C→A}

而πAB(F)={B→A},πAC(F)={C→A}

显然,这个分解丢失了FD B→C。

(2)用测试过程可以知道,分解ρ相对于F是损失分解。

5.14 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C,A→D,

D→C},ρ={ AB,AC,BD}是R的一个分解。

①相对于F, ρ是无损分解吗?为什么?

②试求F在ρ的每个模式上的投影。

③ρ保持F吗?为什么?

解:①用测试过程可以知道,ρ相对于F是损失分解。

②πAB(F)={A→B},πAC(F)={A→C},πBD(F)=Φ。

③显然,分解ρ不保持FD集F,丢失了B→C,A→D,和D→C等三个

FD。

5.15 设关系模式R(ABCD),R上的FD集F={A→C,D→C,BD→A},试说明

ρ={AB,ACD,BCD}相对于F是损失分解的理由。

答:据已知的F集,不可能把初始表格修改为有一个全a行的表格,因此ρ相对

于F是损失分解。

5.16 设关系模式R(ABCD),F是R上成立的FD集,F={AB→CD,A→D}。

①试说明R不是2NF模式的理由。

②试把R分解成2NF模式集。

解:①从已知FD集F,可知R的候选键是AB。

另外,AB→D是一个局部依赖,因此R不是2NF模式。

②此时,R应分解成{AD,ABC}是2NF模式集。

5.17 设关系模式R(ABC),F是R上成立的FD集,F={ C →B,B → A }。

①试说明R不是3NF模式的理由。

②试把R分解成3NF模式集。

解:①从已知FD集F,可知R的候选键是C。

从 C →B和B →A,可知C → A 是一个传递依赖,因此R不是3NF

模式。

②此时,R应分解为{CB,BA}即为3NF模式集。

5.18 设有一个记录各个球队队员每场比赛进球数的关系模式

R(队员编号,比赛场次,进球数,球队名,队长名)

如果规定每个队员只能属于一个球队,每个球队只有一个队长。

①试写出关系模式R的基本FD和关键码。

②说明R不是2NF模式的理由,并把R分解成2NF模式集。

③进而把R分解成3NF模式集,并说明理由。

解:(1)根据每个球员只能属于一个球队,可写出FD:队员编号→球队名;

根据每个球队只有一个队长,可写出FD:球队名→队长名;

“每个队员每场比赛只有一个进球数”,这条规则也是成立的,因此还可

以写出FD:(队员编号,比赛场次)→进球数

从上述三个FD可知道,R的关键码为(队员编号,比赛场次)。

(2)从(1)可知,R中存在下面两个FD:

(队员编号,比赛场次)→(球队名,队长名)

队员编号→(球队名,队长名)

显然,其中第一个FD是一个局部依赖,因此R不是2NF模式。

对R应该进行分解由第二个FD的属性可构成一个模式,即

R1(队员编号,球队名,队长名);

另一个模式由R的属性集去掉第二个FD属性右边的属性组成,即

R2(队员编号,比赛场次,进球数)。

R1和R2都是2NF模式,因此分解为2NF模式集为{R1,R2}

(3)R2(队员编号,比赛场次,进球数)中FD是

(队员编号,比赛场次)→进球数

关键码为(队员编号,比赛场次),可见R2已是3NF。

R1(队员编号,球队名,队长名)中,FD有两个:

队员编号→球队名

球队名→队长名

关键码为队员编号,可见存在传递依赖,因此R1不是3NF模式。

对R1应分解成两个模式:R11(队员编号,球队名),R12(球队名,队长

名)。这两个模式都是3NF模式。

因此,R分解成3NF模式集为{R11,R12,R2}。

5.19 设有关系模式

R(职工名,项目名,工资,部门名,部门经理)

如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。

①试写出关系模式R的基本FD和关键码。

②说明R不是2NF模式的理由,并把R分解成2NF模式集。

③进而把R分解成3NF模式集,并说明理由。

解:(1)R的基本FD有三个:

(职工名,项目名)→工资

项目名→部门名

部门名→部门经理

关键码为(职工名,项目名)。

(2)根据(1),R中存在下列两个FD:

(职工名,项目名)→(部门名,部门经理)

项目名→(部门名,部门经理)

其中前一个FD是一个局部依赖,因此R不是2NF模式。

R应分解成两个模式:R1(项目名,部门名,部门经理)

R2(职工名,项目名,工资)

R1和R2都是2NF模式。

(3)R2已是3NF模式。

在R1中,由于存在两个FD:

项目名→部门名

部门名→部门经理

即存在一个传递依赖,因此R1不是3NF模式。

对R1应分解成两个模式:R11(项目名,部门名),R12(部门名,部门经理)。

这两个模式都是3NF模式。

因此,R分解成3NF模式集时,为{R11,R12,R2}。