我正在准备考试,在我的课文中我发现了一个我不明白的例子。
在关系上,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
我正在准备考试,在我的课文中我发现了一个我不明白的例子。
在关系上,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
术语
说:“函数依赖处于某种范式”是非常不恰当的,因为只有关系模式可以(或不)处于范式。可以说的是,功能依赖违反了某种范式(因此包含它的模式不在该范式中)。
范式
如果给定的每个 FD 都具有作为决定因素的超键,则可以证明关系模式在 BCNF 中。因为,您是否正确地注意到,这里唯一的候选键是 ABD 和 ACD,所以每个依赖项都违反了该范式。因此,模式不在 BCNF 中。
要在 3NF 中,关系模式必须具有所有给定的函数依赖关系,使得行列式是超键,或者行列式的每个属性都是素数属性,即它是某个候选键的属性。在您的示例中,B 和 C 都是如此,但 E 和 F 则不然,因此 FD3 和 FD4 违反了 3NF。因此,该模式既不在 3NF 中。
2NF 仅具有历史意义,在规范化理论中并不是特别有用,它是一种规范形式,其关系模式不具有非主属性依赖于部分键的函数依赖关系。这对于 FD3 和 FD4 又不是真的,因此该关系也不在 2NF 中。