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

Database 正常形式-第二和第三-只是组合键的区别?非平凡依赖?,database,database-normalization,3nf,Database,Database Normalization,3nf,我已经看过了,但我并不真正理解所使用的术语(非平凡的函数依赖项,superkey) 从我所读到的第二范式似乎与复合键有关,而第三范式与主键有关 但我不确定这是否正确 所以第二个标准形式-有一个复合键,表中的所有字段都必须与这两个复合键字段相关。如果某些内容不相关,则应将其重构到另一个表中 第三范式-一切都必须依赖于主键-所以我猜在第三范式中只有一个键,而不是在第二范式中可以有复合键 谢谢你的建议 集合的适当子集或超集是不等于它的子集或超集 我们说,一组列S在功能上决定了表中的另一组T,当第一个列

我已经看过了,但我并不真正理解所使用的术语(非平凡的函数依赖项,superkey)

从我所读到的第二范式似乎与复合键有关,而第三范式与主键有关

但我不确定这是否正确

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

第三范式-一切都必须依赖于主键-所以我猜在第三范式中只有一个键,而不是在第二范式中可以有复合键


谢谢你的建议

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

我们说,一组列S在功能上决定了表中的另一组T,当第一个列的每个子程序总是与第二个列的相同子程序同时出现时。我们写S->T,说S是行列式集,T是确定集。我们称S->T为FD(函数依赖)。当S是T的超集时,我们说它是一个平凡的FD。当S是{A}时,我们说A->T&当T是{A}时,我们说S->A

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

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

2NF和3NF之间的区别是这样的。假设某个关系 满足形式a->B的非平凡函数依赖关系,其中 B是一个非质属性

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

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

引文中说,如果存在这样的FD,则NF“被违反”。而且,只有当这样一个FD存在时,它才被违反

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

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


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

我不是在粗鲁无礼。我给你的是准确而合理的建议。不幸的是,你的问题中没有任何东西可以建立,所以对你问题的回答实际上是教科书中关于规范化的章节。但请仔细阅读我的最后两条评论。你可以用谷歌搜索定义;你提到的其中一个术语在答案中有定义;你写的关于NFs的文章太模糊了,没有用。我的评论是准确的,给出它们是有帮助的。仅仅因为真相令人伤心并不意味着我粗鲁。不要向信使开枪。