数据库规范化错误

时间:2017-12-06 15:11:48

标签: database-normalization functional-dependencies third-normal-form

我正在准备考试,在我的课文上,我发现了一个我不理解的例子。

在关系R(A,B,C,D,E,F)上,我得到了以下功能依赖:

FD1 A,B -> C
FD2 C -> B
FD3 C,D -> E 
FD4 D -> F

现在我认为所有FD都在3NF(没有在BCNF中),但文本说FD1和FD2在2NF,FD3和FD4在1NF。我在哪里犯错误(或文字错误)。

我发现替代密钥是ABD和ACD

1 个答案:

答案 0 :(得分:2)

<强>术语

非常不恰当地说:“功能依赖在某种正常形式中”,因为只有关系模式可以 (或不是)正常表格。可以说是功能依赖违反某个范式(以便包含它的模式不在该范式中)。

普通表格

可以证明,如果给定的每个FD都具有超级密钥作为决定因素,则关系模式在BCNF中。因为,如果你已经正确注意到,这里唯一的候选键是ABD和ACD,每个依赖都违反了Normal Form。因此,架构不在BCNF中。

要在3NF中,关系模式必须具有所有给定的功能依赖性,使得行列式是超级密钥,或者确定性的每个属性是主要属性,即它是某个候选键的属性。在您的示例中,对于B和C,这是正确的,但对于E和F则不是,因此FD3和FD4违反3NF。因此,架构既不在3NF中。

2NF仅具有历史意义,在规范化理论中并不特别有用,它是一种正常形式,其关系模式没有功能依赖关系,其中非主要属性依赖于部分键。对于FD3和FD4,这不是真的,因此该关系既不是2NF。