1、4.4 对函数依赖X→Y的定义加以扩充,X和Y可以为空属性集,用φ表示,那么X→φ,φ→Y,φ→φ的含义是什么? 答:据推理规则的自反律可知,X®ф和ф®ф是平凡的FD,总是成立的。 而ф®Y表示在当前关系中,任意两个元组的Y值相等,也就是当前关系的Y值都相等。 4.6 设关系模式R有n个属性,在模式R上可能成立的函数依赖有多少个?其中平凡的FD有多少个?非平凡的FD有多少个? 解:这个问题是排列组合问题。FD形为X®Y,从n个属性值中选择属性组成X共有C+C+ … +C=2n种方法;同理,组成Y也有2n种方法。因此组成X®Y形式应该有2n·2n=4n种方法。即可能成立的FD有4n
2、个。 平凡的FD要求YÍX,组合X®Y形式的选择有: C·C+C·(C+C)+C·(C+C+C)+ … +C(C+C+ … C)=C·20+C·21+C·22+ … +C·2n=(1+2)n=3n 即平凡的FD有3n。因而非平凡的FD有4n-3n个。 4.8 设关系模式R(ABCD),F是R上成立的FD集,F={ A→B,C→B },则相对于F,试写出关系模式R的关键码。并说明理由。 解:R的关键码为ACD。因为从已知的F,只能推出ACD→ABCD。 4.13 设关系模式R(ABCD),F是R上成立的FD集,F={A→B,B→C}, ① 试写出属性集BD的闭包(BD)+。
3、 ② 试写出所有左部是B的函数依赖(即形为“B→?”)。 解:①从已知的F,可推出BD→BCD,所以(BD)+=BCD。 ②由于B+=BC,因此左部是B的FD有四个: B→φ,B→B,B→C,B→BC。 4.14 设关系模式R(ABCDE)上FD集为F,并且F={A→BC,CD→E,B→D,E→A}。 ① 试求R的候选键。 ② 试求B+的值。 解:① R的候选键有四个:A、E、CD和BC。 ② B+=BD。 4.15 设有关系模式R(ABC),其关系r如图4.20所示。 ① 试判断下列三个FD在关系r中是否成立? A→B BC→A B→A ② 根据关系r,
4、你能断定哪些FD在关系模式R上不成立? A B C 1 2 3 4 2 3 5 3 3 图4.23 解:①在关系r中,A→B成立,BC→A不成立,B→A不成立。 ②在关系r中,不成立的FD有:B→A,B→AC,C→A,C→B,C→AB,BC→A。 4.19 设关系模式R(ABC),F是R上成立的FD集,F={ A→C,B→C },试分别求F在模式AB和AC上的投影。 答:πAB(F)=φ(即不存在非平凡的FD) πAC(F)={ A→C } 4.20 设关系模式R(ABC),F是R上成立的FD集,F={ B→A,C→A },ρ={
5、AB,BC }是R上的一个分解,那么分解ρ是否保持FD集F?并说明理由。 答:已知F={ B→A,C→A },而πAB(F)={ B→A },πBC(F)=φ, 则πAB(F)∪πBC(F)={ B→A }⊭F(显然,分解ρ丢失了FD C→A)。 所以ρ不保持FD集F。 4.21 设关系模式R(ABC),F是R上成立的FD集,F={ B→C,C→A },那么分解ρ={ AB,AC }相对于F,是否无损分解和保持FD?并说明理由。 答:①用测试过程可以知道,ρ相对于F是损失分解。 A B C AB a1 a2 b13 AC a1 b22 a3
6、 ②已知F={ B→C,C→A },而πAB(F)={ B→A },πAC(F)={ C→A }, 则πAB(F)∪πAC(F)={ B→A ,C→A }⊭F(显然,分解ρ丢失了FD B→C)。 所以ρ不保持FD集F。 4.22 设关系模式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)={
7、 A→C },πBD(F)=φ。 ③显然,分解ρ不保持FD集F,丢失了B→C、A→D和D→C等三个FD。 4.26 设关系模式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模式集。 4.27 设关系模式R(ABC),F是R上成立的FD集,F={ C→B,B→A }。 ① 试说明R不是3NF模式的理由。 ② 试把R分解成3NF
8、模式集。 答:①从已知FD集F,可知R的候选键是C。 从C→B和B→A,可知C→A是一个传递依赖,因此R不是3NF模式。 ②此时R应分解成ρ={ CB,BA },ρ是3NF模式集。 4.28 设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。 如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。 试回答下列问题: (1)根据上述规定,写出模式R的基本FD和关键码; (2)说明R不是2NF的理由,并把R分解成2NF模式集; (3)进而分解成3NF模式集。 解:(1)
9、基本的FD有三个: (职工编号,日期)→ 日营业额 职工编号 → 部门名 部门名 → 部门经理 R的关键码为(职工编号,日期)。 (2)R中有两个这样的FD: (职工编号,日期)→(部门名,部门经理) 职工编号 → (部门名,部门经理) 可见前一个FD是局部依赖,所以R不是2NF模式。 R应分解成R1(职工编号,部门名,部门经理) R2(职工编号,日期,日营业额) 此处,R1和R2都是2NF模式。 (3)R2已是3NF模式。 在R1中,存在两个FD:职工编号 → 部门名 部门名 →
10、 部门经理 因此,“职工编号 → 部门经理”是一个传递依赖,R1不是3NF模式。 R1应分解成R11(职工编号,部门名) R12(部门名,部门经理) 这样,ρ= { R11,R12,R2 }是一个3NF模式集。 4.30 设关系模式R(ABCD),在R上有五个相应的FD集及分解: (1)F={ B→C,D→A },ρ={ BC,AD } (2)F={ AB→C,C→A,C→D },ρ={ ACD,BC } (3)F={ A→BC,C→AD },ρ={ ABC,AD } (4)F={ A→B,B→C,C→D },ρ={ AB,ACD } (5)F={ A
11、→B,B→C,C→D },ρ={ AB,AD,CD } 试对上述五种情况分别回答下列问题: ① 确定R的关键码。 ② 是否无损分解? ③ 是否保持FD集? ④ 确定ρ中每一模式的范式级别。 解: (1) F={ B→C,D→A },ρ={ BC,AD } ① R的关键码为BD。 (因为(BD)+=ABCD) ② ρ不是无损分解。(不存在全a行) A B C D BC b11 a2 a3 b14 AD a1 b22 b23 a4 ③ ρ保持FD集F。 πBC(F)={B→C},πAD(F)={D→A},而πBC(F)∪π
12、AD(F)={B→C,D→A}⊨F,所以ρ保持FD集F。 ④ ρ中每一模式已达到BCNF级别。 (2) F={ AB→C,C→A,C→D },ρ={ ACD,BC } ① R有两个关键码:AB和BC。 (因为(AB)+=ABCD,(BC)+=ABCD) ② ρ是无损分解。 (存在全a行) A B C D ACD a1 b12 a3 a4 BC b21 a2 a3 b24 ③ 因为πACD(F)={ C→A ,C→D },πBC(F)=φ(没有非平凡的FD),而πACD(F)∪πBC(F)={C→A,C→D}⊭F,丢失了AB→C,
13、所以ρ不保持FD集F。 ④ ρ中两模式均已达到BCNF级别。 (3) F={ A→BC,C→AD },ρ={ ABC,AD } ① R有两个关键码:A和C (因为(A)+=ABCD,(C)+=ABCD) ② ρ是无损分解。(存在全a行) A B C D ABC a1 a2 a3 b14 AD a1 b22 b23 a4 ③ 因为πABC(F)={ A→BC,C→A },πAD(F)= { A→D }, 而πABC(F)∪πAD(F)={ A→BC,C→A,A→D }⊨F,所以ρ保持FD。 ④ 在模式ABC中,关键码是A或BC,
14、属性全是主属性,但有传递依赖(A→BC,BC→A)。因此模式ABC是3NF,但不是BCNF。???而模式AD显然已是BCNF。 注释:(A→BC,BC→A)不符合传递依赖的定义(因为传递依赖要求BC不决定A),不是传递依赖。所以模式ABC是BCNF。 (4) F={ A→B,B→C,C→D },ρ={ AB,ACD } ① R的关键码为A。 (因为(A)+=ABCD) ② ρ是无损分解。(存在全a行) A B C D AB a1 a2 b13 b14 ACD a1 b22 a3 a4 ③ 因为πAB(F)={ A→B },
15、πACD(F)={ A→C,C→D },而πAB(F)∪πACD(F)={ A→B,A→C,C→D }⊭F,丢失了B→C,所以ρ不保持FD集F。 ④ 模式AB是BCNF,模式ACD不是3NF,只达到2NF级别。 (5) F={ A→B,B→C,C→D },ρ={ AB,AD,CD } ① R的关键码为A。 (因为(A)+=ABCD) ② ρ不是无损分解。(不存在全a行) A B C D AB a1 a2 b13 b14 AD a1 b22 b23 a4 CD b31 B32 a3 a4 ③ 因为πAB(F)={ A→B },πAD(F)={ A→D },πCD(F)={ C→D }, 而πAB(F)∪πAD(F)∪πCD(F)={ A→B,A→D,C→D }⊭F,丢失了B→C,所以ρ不保持FD集F。 ④ ρ中每个模式均是BCNF级别。






