数据库规范化错误

Database Normalization mistake

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

关于关系 R(A,B,C,D,E,F) 我得到了以下函数依赖:

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

现在我认为所有的 FD 都在 3NF 中(none 在 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。