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