【发布时间】:2017-04-02 04:51:23
【问题描述】:
我有一个关于规范化 (3NF) 的快速问题。如果我有一个表定义为...
客户(用户名、名字、姓氏、年龄、性别、种族)
而用户名决定了名字、姓氏、年龄、性别、种族
但是..为了论证我们也可以假设firstName、lastName可以用来唯一标识表中的一行,所以firstName、lastName决定了用户名、年龄、性别、种族
是3NF中的表,因为一些非主属性(firstName,lastName)可以用来确定表中的其他属性,但是PK(用户名)可以确定非主属性然后用于确定其他属性。
我知道由于循环依赖问题,这不在 BCNF 中,但我希望它至少在 3NF 中。
提前感谢您的帮助。
【问题讨论】:
-
“一些非主要属性(名字,姓氏)” 这些是主要属性。
-
如果它们不是密钥的一部分,它们就是非质数,对吗?或者如果它们不是候选键的一部分,它们是否是非质数?
-
PK 无关紧要。 CK 可以。它们是素数,因为它们在 CK 中。
-
一个人在数据库中工作的时间太长,以至于无法知道 (FirstName, LastName) 甚至不接近候选键。等到你击中第二个“Joe Smith”或“Sally Jones”或“John Brown”,你就会很快学会它。
-
我以它为例。我的数据库有一个类似于 firstName、lastName、phoneNumber 的 CK。我试图想出一个足以解决我的问题的假设情况。
标签: database database-design normalization database-normalization