我查看了This post,但我并不理解使用的术语(非平凡的函数依赖,超级密钥)
从我读过的内容看,第二范式似乎与复合键有关,而第三范式则与主键有关。
我不确定这是否正确。
所以第二个普通形式 - 有一个复合键,表中的所有字段必须与两个复合键字段相关。如果某些内容不相关,则应将其重构为另一个表。
第3范式 - 一切都必须依赖于主键 - 所以我猜测在第3范式中只有1个键,而不是第2个普通形式可以有复合键?
任何建议表示赞赏。
答案 0 :(得分:2)
集合的正确子集或超集是与它不相等的集合。
我们说一组列S在功能上确定了表中的另一个集合T,当第一个的每个子行总是出现时,第二个的子行相同。我们写S - > T并且假设S是行列式集合而T是确定的集合。我们称之为S - > FD(功能依赖)。当S是T的超集时,我们说它是一个微不足道的FD。当S是{A}时,我们说A - >; T&当T是{A}时,我们说S - >甲
超级键是一组唯一标识行的列。当它在功能上确定每个属性时就是如此。 CK(候选键)是不包含正确超级键的超级键。我们可以选择CK作为PK(主键)。当某个列位于某个CK时,该列是素数。
足以理解您链接到的答案:
2NF和3NF之间的差异就是这个。假设有一些关系 满足形式A-> B的非平凡函数依赖,其中 B是非主要属性。
如果A不是超级密钥但是a的适当子集,则违反了<2> 2NF 候选人密钥 如果A不是超级密钥,违反了3NF
引用说如果&#34;违反了NF&#34;这样的FD存在。如果存在这样的FD,它也只会违反 。
FD S - &gt;当S的适当子集在功能上确定T时,T是部分的;否则就满了。请注意,这不涉及CK。当每个非素数列在功能上完全依赖于每个CK时,表格在2NF中。
S - &gt;当存在X时,T是可传递的,其中S - > X和X - &gt; T而不是X - &gt; S.请注意,这不涉及CK。当每个非素数列非传递性地依赖于每个CK时,表格在3NF中。
(注意2NF和3NF的替代定义与报价不同。)