数据库第5章习题答案
[ [习题习题] ]已知关系模式已知关系模式 R R((ABCABC)) ,,F F 是是 R R 上成立的上成立的 FDFD 集,集,F F={={A A→→B,BB,B→→C C}}, ,试写试写 出出 F F 的闭包的闭包 F F+ +。。 解:据已知条件和推理规则,可知解:据已知条件和推理规则,可知 F F+ +有有 4343 个个 FDFD:: A A→Φ→ΦABAB→Φ→ΦACAC→Φ→ΦABCABC→Φ→ΦB B→Φ→ΦC C→Φ→Φ A A→→A AABAB→→A AACAC→→A AABCABC→→A AB B→→B BC C→→C C A A→→B BABAB→→B BACAC→→B BABCABC→→B BB B→→C CΦ→ΦΦ→Φ A A→→C CABAB→→C CACAC→→C CABCABC→→C CB B→→BCBC A A→→ABABABAB→→ABABACAC→→ABABABCABC→→ABABBCBC→Φ→Φ A A→→ACACABAB→→ACACACAC→→ACACABCABC→→ACACBCBC→→B B A A→→BCBCABAB→→BCBCACAC→→BCBCABCABC→→BCBCBCBC→→C C A A→→ABCABCABAB→→ABCABCACAC→→ABCABCABCABC→→ABCABCBCBC→→BCBC 5. 7 设关系模式 R (ABCD) , F 是 R 上成立的 FD 集, F={A→ →B, C→→B}, 则相对于 F, 试写出关系模式 R 的关键码。并说明理由。 解:R 的关键码为 ACD,因为从已知的 F,只能推出 ACD→ →ABCDABCD。。 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→→B,BB,B→→C,BC,B→→BCBC 设关系模式 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)=Φ。Φ。 ③显然,分解? ?不保持不保持 FDFD 集集 F 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 (队员编号, 球队名) ,