我有一个关于规范化(3NF)的快速问题。如果我有一个定义为...的表
客户(用户名,firstName,lastName,年龄,性别,种族)
用户名确定firstName,lastName,年龄,性别,种族
但是..为了参数,我们也可以假设firstName,lastName可以用来唯一地标识表中的一行,所以firstName,lastName确定用户名,年龄,性别,种族
3NF中的表是因为某些非素数属性(firstName,lastName)可用于确定表中的其他属性,但PK(用户名)可以确定非素数属性然后用于确定其他属性。
据我所知,由于循环依赖问题,这不是BCNF,但我希望它至少在3NF。
提前感谢您的帮助。
答案 0 :(得分:4)
圆形不相关,它在BCNF中,以及每个较低的NF。 BCNF的定义是,非平凡FD的所有决定因素都是超密钥。如果有多个CK(候选键),那就这样吧。 CK将确定其他CK的属性,因为CK确定每个属性。
PK与正常化(以及所有其他关系理论)无关,CK很重要。 PK只是你决定称之为PK的CK。
这里有两个CK,{username}和{firstName,lastName}。主要属性,即CK中的主要属性,是username,firstName& lastName的。