第三范式单一约束

时间:2016-05-01 17:33:01

标签: database-normalization 3nf

我想在3NF制作我的数据库我对一件事感到困惑。在下面的解释中,如果zip可以多次出现,我不明白Zip如何成为地址表的主键。在Student_Detail表中,reoccuring zip很好,但作为主键,它不会失去它的独特性吗?

第三范式(3NF)

第三范式适用于表的每个非素数属性必须依赖于主键,或者我们可以说,不应该存在非素数属性由另一个非素数属性确定的情况。因此,应该从表中删除此传递函数依赖项,并且表也必须采用Second Normal形式。例如,考虑一个包含以下字段的表。

Student_Detail表:

Student_id - Student_name - DOB - 街道 - 城市 - 州 - 邮编

在此表中,Student_id是主键,但街道,城市和州取决于Zip。 zip和其他字段之间的依赖关系称为传递依赖关系。因此,要应用3NF,我们需要将街道,城市和州移动到新表,并将Zip作为主键。

New Student_Detail表:

Student_id - Student_name - DOB - Zip

地址表:

Zip - Street - city - state

消除转移依赖的好处是,

减少了数据重复的数量。 实现了数据完整性。

实施例: http://www.studytonight.com/dbms/database-normalization.php

1 个答案:

答案 0 :(得分:1)

我假设这是你的问题

  

如果zip可以多次出现,我不明白Zip如何成为地址表的主键。

并且你不理解的原因仅仅是因为Zip是一个不好的例子。

所有解释都是正确的。如果你可以推断任何"非素数"属性基于另一个"非素数"属性你有所谓的#34;传递依赖"。您将它们拉到另一个表格,并在其位置插入FK参考。

Zip不会出现多次,因为该属性是PK。我认为这只是一个不好的例子,尽管解释是正确的。尝试用不同的主题进行分析。

检查this示例是否以任何方式帮助您。