Ex:想象一下,我有这个数据库
A //primary key
B
C
D
所有字段都取决于密钥的功能。
没有非关键字段在功能上取决于另一个非关键字段。
但是:D depends functionally of B and C.
在尝试达到第三范式时,我应该考虑这个(依赖于多个字段)吗?
答案 0 :(得分:0)
您的问题归结为:R 1 且R 2 是否相同?
显然他们是不同的。 R 1 至少是现在的BCNF; R 2 具有传递依赖性,BC-> D,因此它不高于2NF。
我们使用大写字母来编写属性,因为大写字母代表set theory中的集。关系模型部分基于集合论。因此,在实际建模工作中, A 可能代表一组三列。
在您的示例中,一个函数依赖项的左侧和侧面由单个字母 A 表示,另一个的左侧由两个字母表示< em> BC 并不重要。这两个左侧可能代表关系表中的两列,三列或更多列。通过BCNF进行规范化始终会考虑您知道的每个函数依赖关系,无论表达它需要多少字母。
在执行E = BC之后,甚至可以重写R 2 。根本不会改变传递依赖。