【答案解析】[解析] “候选关键字”定义为:设K为R(U,F)中的属性的组合,若K→U,且对于K的任何一个真子集K',都有K'不能决定U,则K为R的候选码,若有多个候选码,则选一个作为主码。候选码通常也称为候选关键字。候选码选择算法如下(对于给定的关系模式R(U,F),其中U为属性集合,F为函数依赖集)。
①依照函数依赖集F将R中的所有属性分为L类、R类、LR类和N类属性,令X为L、N类属性的集合,Y为LR类属性集合。
②若[*],则X为R的唯一候选码,算法结束,否则,执行下一步骤。
③逐一取Y中的单一属性A,若[*],则XA为候选码,令Y=Y-{A},执行下一步骤。
④依次取Y中的任意2个、3个……属性与XZ组成属性组,若XZ不包含己求得的候选码,关于F的闭包[*],若[*],则XZ为候选码。直到取完Y中的所有属性为止,算法结束。
选项A:[*],所以AB不是关系R的候选关键字。
选项B:
[*]
F
R1=A→B,CB→A
(F
R1+F
R2+F
R3)
+ 所以DE不是关系R的候选关键字。
选项C:[*],所以CE是关系R的候选关键字。
选项D:[*],所以DB不是关系R的候选关键字。
无损连接分解判定定理:关系模式R(U,F)的一个分解,σ={R
1(U
1,F
1),R
2(U
2,F
2)}具有无损连接的充要条件是:(U
1∩U
2)→(U
1-U
2)∈F
+或(U
1∩U
2)→(U
2-U
1)∈F
+。
对选项A构造初始的判定表,如表1所示。因为A→B,DE→B,CB→E,E→A,B→D的决定因素中没有两行是相同的,所以选项A的分解是有损连接。
{{B}}表1 初始的判定表1{{/B}}
|
分解的关系模式 |
A |
B |
C |
D |
E |
R1(AC) |
a1 |
b12 |
a3 |
b14 |
b15 |
R2(ED) |
b21 |
b22 |
b23 |
a4 |
a5 |
R3(B) |
b31 |
a2 |
b33 |
b34 |
b35 |
对选项B构造初始的判定表,如表2所示。
{{B}}表2 初始的判定表2{{/B}}
|
分解的关系模式 |
A |
B |
C |
D |
E |
R1(AC) |
a1 |
b12 |
a3 |
b14 |
b15 |
R2(E) |
b21 |
b22 |
b23 |
b24 |
a5 |
R3(DB) |
b31 |
a2 |
b33 |
a4 |
b35 |
因为A→B,DE→B,CB→E,E→A,B→D的决定因素中没有两行是相同的,所以选项B的分解是有损连接。
对选项C构造初始的判定表,如表3所示。
{{B}}表3 初始的判定表3{{/B}}
|
分解的关系模式 |
A |
B |
C |
D |
E |
R1(AC) |
a1 |
b12 |
a3 |
b14 |
b15 |
R2(ED) |
b21 |
b22 |
b23 |
a4 |
a5 |
R3(AB) |
a1 |
a2 |
b33 |
b34 |
b35 |
由于A→B,属性A的第1行和第3行相同,可以将第1行b
12改为a
2;又由于B→D,属性B的第1行和第3行相同,而属性D的第1行b
14和第3行b
34没有一行为a
4,因此改为同一符号,即取行号值最小的b
14。修改后的判定表如表4所示。
{{B}}表4 修改后的判定表1{{/B}}
|
分解的关系模式 |
A |
B |
C |
D |
E |
R1(AC) |
a1 |
a2 |
a3 |
b14 |
b15 |
R2(ED) |
b21 |
b22 |
b23 |
a4 |
a5 |
R3(AB) |
a1 |
a2 |
b33 |
b14 |
b35 |
检查其他函数依赖DE→B,CB→E,E→A,无法修改表4,表中没有两行是相同的,因此选项C的分解是有损连接。
对选项D构造初始的判定表,如表5所示。
{{B}}表5 初始的判定表4{{/B}}
|
分解的关系模式 |
A |
B |
C |
D |
E |
R1(ABC) |
a1 |
a2 |
a3 |
b14 |
b15 |
R2(ED) |
b21 |
b22 |
b23 |
a4 |
a5 |
R3(ACE) |
a1 |
b32 |
a3 |
b34 |
a5 |
由于A→B,属性A的第1行和第3行相同,可以将第3行的b
32改为a
2;E→A,属性E的第2行和第3行相同,可以将属性A的第2行b
21改为a
1;AC→E,属性E的第2行和第3行相同,可以将属性E的第1行b
15改为a
5;B→D,属性B的第1行和第3行相同,而属性D的第1行b
14和第3行b
34没有一行为a
4,因此改为同一符号,即取行号值最小的b
14。根据Armstong公理,系统传递依赖,E→A,A→B,B→D,所以E→D。此时,属性E的第1~3行相同,可以将属性D的第1行b
14和第3行b
34改为a
4。修改后的判定表如表6所示。
{{B}}表6 修改后的判定表2{{/B}}
|
分解的关系模式 |
A |
B |
C |
D |
E |
R1(ABC) |
a1 |
a2 |
a3 |
a4 |
a5 |
R2(ED) |
a1 |
b22 |
b23 |
a4 |
a5 |
R3(ACE) |
a1 |
a2 |
a3 |
a4 |
a5 |
由于表6的第1行和第3行全为a,因此选项D的分解是无损连接。
保持函数依赖的定义是:若满足(F
1∪F
2)
+=F
+,则分解保持函数依赖,其中F
i函数依赖集F在R
i上的投影。若分解保持函数依赖,那么分解的子模式的函数依赖集[*]。F
R1=A→B,CB→A,F
R2=E→D,F
R3=E→A。可以求证F
+与(F
R1+F
R2+F
R3)
+等价,即F
+=(F
R1+F
R2+F
R3)
+=(A→B,CB→A,E→D,E→A)
+,所以该分解保持函数依赖。