第三范式唯一性约束

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

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

第三范式(3NF)

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

Student_Detail表:

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

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

新学生_Dail表:

Student_id - Student_name - DOB - Zip

地址表:

邮编 - 街道 - 城市 - 州

消除传递依赖的好处是,

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

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

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

我假设这是你的问题

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

而你不理解的原因只是因为Zip是个坏榜样。

所有的解释都是正确的。如果您可以根据另一个“非素数”属性推断出任何“非素数”属性,那么您将拥有所谓的“传递依赖”。您将它们拉到另一个表中,并在其位置插入FK引用。

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

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

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