热门搜索 :
考研考公
您的当前位置:首页正文

数据库第5章习题答案

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

解:据已知条件和推理规则,可知F+有43个FD: A→Φ AB→Φ AC→Φ ABC→Φ B→Φ C→Φ A→A AB→A AC→A ABC→A B→B C→C A→B AB→B AC→B ABC→B B→C Φ→Φ A→C AB→C AC→C ABC→C B→BC A→AB AB→AB AC→AB ABC→AB BC→Φ A→AC AB→AC AC→AC ABC→AC BC→B A→BC AB→BC AC→BC ABC→BC BC→C A→ABC AB→ABC AC→ABC ABC→ABC BC→BC 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

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

模式AB和AC上的投影。 解:πAB(F)=Φ(即不存在非平凡的FD)

πAC(F)={A→C}

设关系模式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。 设关系模式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是损失分解。

设关系模式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。

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

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

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

F是损失分解。 设关系模式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模式集。

设关系模式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模式集。 设有一个记录各个球队队员每场比赛进球数的关系模式

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}。

设有关系模式

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}。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top