正常形式 - 第二对第三 - 只是复合键的区别?非平凡的依赖?

问题描述 投票:2回答:1

我查看了This post,但我并不真正理解所使用的术语(非平凡函数依赖,超级密钥)

从我所读到的第二个正常形式似乎与复合键有关,而第三个正常形式与主键有关。

我不确定这是否正确。

所以第二种常规形式 - 有一个复合键,表中的所有字段都必须与两个复合键字段相关。如果某些内容不相关,则应将其重构为另一个表。

第三种正常形式 - 一切都必须依赖于主键 - 所以我猜测在第3范式中只有1个键而不是第2个普通形式可以有复合键?

任何建议表示赞赏

database database-normalization 3nf
1个回答
2
投票

集合的适当子集或超集是不等于它的集合。

我们说一组列S在功能上确定了表中的另一个集合T,当第一个的每个子行总是出现时,第二个的子行相同。我们写S - > T并且说S是行列式集合而T是确定的集合。我们称S - > T为FD(函数依赖)。当S是T的超集时,我们说它是一个微不足道的FD。当S是{A}时我们说A - > T&当T是{A}时我们说S - > A.

超级键是一组唯一标识行的列。当它在功能上确定每个属性时就是如此。 CK(候选键)是不包含正确超级键的超级键。我们可以选择CK作为PK(主键)。在某个CK中,列是素数。

这足以理解您链接到的答案:

2NF和3NF之间的差异就是这个。假设某些关系满足形式A-> B的非平凡函数依赖性,其中B是非优质属性。

如果A不是超级密钥但是候选密钥的适当子集,则违反2NF

如果A不是超级密钥,则违反3NF

引用说如果“存在这样的FD,则会违反NF”。如果存在这样的FD,它也只会被违反。

当S的适当子集也在功能上确定T时,FD S - > T是部分的;否则就满了。请注意,这不涉及CK。当每个非素数列在功能上完全依赖于每个CK时,表在2NF中。

当存在X时,S - > T是传递的,其中S - > X和X - > T而不是X - > S.注意,这不涉及CK。当每个非素数列非传递性地依赖于每个CK时,表在3NF中。

(注意2NF和3NF的替代定义与报价不同。)

© www.soinside.com 2019 - 2024. All rights reserved.