【答案解析】候选关键字使用规范化理论中的图示法进行求解,对R关系模式画图如图所示。
[*]
图中C结点为0度结点,所以它必然被包含在候选关键字中,但仅有C结点并不能遍历全图,所以需要加入其他中间结点。若加入B结点,则BC→E,E→A,B→D,能遍历全图。与此同时,加入A、E都能起到同样的效果。所以关系R有三个候选键:BC、EC,AC。
接下来是判断模式分解过程中的无损连接与保持函数依赖的问题。这个问题相对来说比较复杂。如果逐个判断每个选项的无损连接与保持函数依赖,无疑工作量是很大的。所以我们可以先观察这些选项有什么特点,通过观察发现A与B选项都存在单字段的分解。在进行模式分解时,如果出现单字段,同时该字段未在其他分解的子关系模式中出现,并且函数依赖中有此字段的依赖关系,则说明此分解没有保持函数依赖。原因很简单,关于该字段的那个函数依赖,必然在分解中丢失了。所以A与B选项可以先排除。
然后判断C与D是否为无损连接。
对选项C构造初始的判定表如表所示。
模式分解C选项初始判定表
|
分解的关系模式 |
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,改为同一符号,即取行号值最小的b
14。修改后的判定表如表所示。
模式分解C选项修改判定表
|
分解的关系模式 |
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 |
反复检查函数依赖集F,无法修改上表,所以选项C是有损连接的。 对选项D构造初始的判定表如下表所示。
模式分解D选项初始判定表
|
分解的关系模式 |
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,改为同一符号,即取行号值最小的b
14。E→D,属性E的第1~3行相同,可以将属性D第1行b
14和第3行b
34改为a
4。修改后的判定表如表所示。
模式分解D选项修改判定表
|
分解的关系模式 |
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 |
由于表第一行全为a,故分解无损。
所以本空应选D。