设关系模式R(A,B,C,D),F是R上成立的FD集,F={AB→CD,B→C)。(1)试说明为什么R不是2NF模式。(2)试分析模式R的数据冗余问题。(3)试把R分解成2NF模式集。
设关系模式R(A,B,C,D),F是R上成立的FD集,F={AB→CD,B→C)。(1)试说明为什么R不是2NF模式。(2)试分析模式R的数据冗余问题。(3)试把R分解成2NF模式集。
【正确答案】:(1)根据FD集F,可知模式R的关键码为.AB。由于B→C,可以知道,非主属性C局部依赖于关键码AB,因此R不是2NF、模式。(2)由于B→C,因此每个B值有一个C值对应。如果一个B值与10个A值对应,那么关系中就要有10个元组,也就是这10个元组中同一个C值要重复10次,这就是数据冗余。(3)把局部依赖B→C的属性构成一个模式(BC),再把全部属性减去这个局部依赖右边的属性,构成一个模式(ABD),即把R分解成ϱ→{ABD,BC),此时局部依赖B→C在模式BC中成了完全依赖。ϱ是2NF模式集。
Top