关系数据库 - 在寻找非关键值之间的函数依赖关系时,我应该关注多依赖关系吗?

时间:2015-04-01 03:12:01

标签: database relational-database normalization database-normalization functional-dependencies

Ex:想象一下,我有这个数据库

A      //primary key
B
C
D

所有字段都取决于密钥的功能。

没有非关键字段在功能上取决于另一个非关键字段。

但是:D depends functionally of B and C.在尝试达到第三范式时,我应该考虑这个(依赖于多个字段)吗?

1 个答案:

答案 0 :(得分:0)

您的问题归结为:R 1 且R 2 是否相同?

  • R 1 A BCD),A-> BCD
  • R 2 A BCD),A-> BCD,BC-> D

显然他们是不同的。 R 1 至少是现在的BCNF; R 2 具有传递依赖性,BC-> D,因此它不高于2NF。

我们使用大写字母来编写属性,因为大写字母代表set theory中的。关系模型部分基于集合论。因此,在实际建模工作中, A 可能代表一组三列。

在您的示例中,一个函数依赖项的左侧和侧面由单个字母 A 表示,另一个的左侧由两个字母表示< em> BC 并不重要。这两个左侧可能代表关系表中的两列,三列或更多列。通过BCNF进行规范化始终会考虑您知道的每个函数依赖关系,无论表达它需要多少字母。

在执行E = BC之后,甚至可以重写R 2 。根本不会改变传递依赖。

  • R 2 A ED),A-> ED,E-> D