第三范式唯一性约束

Third Normal Form uniqeness constraint

我正在尝试在 3NF 中创建我的数据库我对一件事感到困惑。在下面的解释中,我不明白如果 zip 可以多次出现,Zip 如何成为地址 table 的主键。在 Student_Detail table 中,重复出现的 zip 很好,但作为主键,它不会失去其唯一性吗?

第三范式 (3NF)

第三范式适用于table的每个非主属性都必须依赖于主键,或者可以说,不应该存在非主属性由另一个决定的情况非主要属性。因此,应该从 table 中删除这种传递函数依赖,并且 table 必须采用第二范式。例如,考虑具有以下字段的 table。

Student_Detail Table :

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

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

新 Student_Detail Table :

Student_id - Student_name - DOB - 邮编

地址Table:

邮政编码 - 街道 - 城市 - 州

消除传递依赖的优点是,

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

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

我假设这是你的问题

i do not understand how Zip can be the primary key of the address table if the zip can occur more than once.

而你不理解的原因只是因为 Zip 是一个坏例子。

所有的解释都是正确的。如果您可以根据另一个 "non-prime" 属性推断出任何 "non-prime" 属性,那么您就有了所谓的 "transitive dependency"。您将它们拉到不同的 table 并在其位置插入 FK 引用。

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

检查 this 示例是否对您有所帮助。