首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >普通形式--第二对第三种--区别仅仅是复合键吗?不平凡的依赖?

普通形式--第二对第三种--区别仅仅是复合键吗?不平凡的依赖?
EN

Stack Overflow用户
提问于 2014-12-14 21:15:44
回答 1查看 2.4K关注 0票数 2

我看过This post,但我并不真正理解使用的术语(非平凡的函数依赖关系,超级键)

据我所知,第二范式似乎与复合键有关,而第三范式则与主键有关。

但我不确定这是否正确。

所以第二种范式--有一个复合键,表中的所有字段都必须与两个复合键字段相关联。如果有些东西不相关,那么应该将其重构到另一个表中。

第三范式--一切都必须依赖主键--所以我猜想在第三范式中只有一个键,而不是第二个法线形式,那里可以有复合键?

任何建议都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-16 12:41:24

我们编写S -> T,并说一组列S功能地确定表值中的另一列T. S -> T,当第一列的每个子行总是以第二子行的相同子行出现时。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存在时,它才会被违反。

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

当存在X时,S -> T是传递的,其中S -> X和X -> T而不是X -> S而不是X=T。当每个非素列都非传递依赖于每个CK时,表就在3NF中。

(请注意与引号不同的2NF和3NF的替代定义。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27474203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档