2

我有一個關於規範化(3NF)的簡單問題。如果我有一個被定義爲一個表...3NF中的循環依賴關係

客戶(用戶名,名字,姓氏,年齡,性別,種族)

而且用戶名決定名字,姓氏,年齡,性別,種族

但是...爲了論證起見,我們還可以假設名字,姓氏可以用來唯一標識一個行的表,所以名字,姓氏決定用戶名,年齡,性別,種族

是3NF中的表,因爲可以使用某些非主要屬性(firstName,lastName)來確定表中的其他屬性,但PK(用戶名)可以確定隨後用於確定其他屬性的非主要屬性屬性。

我明白,這不是在BCNF,因爲這個循環依賴問題,但我希望它至少在3NF。

在此先感謝您的幫助。

+1

*「一些非主要屬性(firstName,lastName)」*這些是主要屬性。 –

+0

如果它們不是密鑰的一部分,它們是非素數,是正確的?或者,如果它們不是候選關鍵詞的一部分,它們是否爲非素數? – Feek

+3

PK沒關係。 CKs呢。他們是首要的,因爲他們在CK。 – philipxy

回答

4

循環是無關緊要的,它在BCNF和每個較低的NF。 BCNF的定義是,非平凡FD的所有決定因素都是超類。如果有多個CK(候選鍵),那就這樣吧。 CK將確定其他CK的屬性,因爲CK確定每個屬性。

PKs與標準化(和其他所有關係理論)無關,CKs很重要。一個PK只是一個你決定叫PK的CK。

這裏有兩個CK,{username}和{firstName,lastName}。主要屬性(即CK中的屬性)是用戶名,名字爲&姓氏。