具有独立属性的表的功能依赖性

时间:2013-07-23 14:25:16

标签: database-design primary-key functional-dependencies

我对表中的独立属性(如常量列)有疑问。应该是以下示例的主键和fds:

设a,b,c,d,e是属性,a,b,c唯一标识一行,d,e是独立列。什么是关键属性,什么是fds

2 个答案:

答案 0 :(得分:2)

  

设a,b,c,d,e是属性,a,b,c唯一标识一行   和d,e是独立的列。什么应该是关键   属性和什么是fds

如果ABC唯一标识一行,并且如果没有ABC的子集唯一标识一行,则ABC是不可简化的超级密钥,也称为候选密钥。假设ABC是唯一的候选键,并假设ABC也是唯一的决定因素,那么这些就是FD。

  • ABC-> d
  • ABC-&GT,E

ABC-> ABC是一个微不足道的依赖。通常省略普通的依赖。

假设ABC是唯一的决定因素是什么意思?这意味着您没有任何其他未表达的FD,例如D-> E,或AB-> D,或D-> A.

答案 1 :(得分:0)

如果某个属性不出现在该集合中任何依赖项的左侧,或者出现在该集合中任何(非平凡)依赖项的右侧,则该属性通常被称为独立于某些依赖项集合。组。独立并不一定意味着常量,它只是意味着属性不是由其他属性决定的。

建模与模式中任何其他属性不同的属性的“正确”(第5范式)方法是将其放在自己的表中。

应该区分由任何表建模的依赖预期的集合和在表中实际生效的依赖集合。你的问题并不完全清楚,因为你说d,e是表中的“独立”属性,然后询问依赖是什么。如果a,b,c是一个(超级)键,就像你说的那样,那么事实上的依赖关系是表中的所有属性是由a确定的, b,c - 所以d和e根本不是“独立的”。

另一方面,如果您不打算在d或e上实现任何依赖,那么您可以使(a,b,c,d,e)成为候选键(因此a,b,c不再是唯一标识)或者你可以将d和e分别分解到他们自己的表中。