我一直在創建一個數據庫,並且我剛剛完成了標準化步驟。 其中一個關係通過部分依賴性違反了2NF,所以我按照規範化準則將它分成兩個關係。我想知道的是,對於我創建的新關係,它是否有一個依賴原始關係主鍵的外鍵?標準化後創建一個外鍵
例如;
正常化之前: 環R {PK1,PK2,attR1位,attR2位}
正常化後: R1 {PK1,PK2,attR1位} R2 {PK2,attR2位}
是否應PK2有外鍵與PK1?
感謝所有幫助
我一直在創建一個數據庫,並且我剛剛完成了標準化步驟。 其中一個關係通過部分依賴性違反了2NF,所以我按照規範化準則將它分成兩個關係。我想知道的是,對於我創建的新關係,它是否有一個依賴原始關係主鍵的外鍵?標準化後創建一個外鍵
例如;
正常化之前: 環R {PK1,PK2,attR1位,attR2位}
正常化後: R1 {PK1,PK2,attR1位} R2 {PK2,attR2位}
是否應PK2有外鍵與PK1?
感謝所有幫助
號,因爲attR2位函數依賴於只有PK2,attR2位有有PK2與給定值的所有行相同的值。如果您將PK1添加到R2,則會有兩種選擇,都是不好的。
對於PK2的每個值,您可以在R2中只有一行,在這種情況下,PK1只能有一個值。這會過度約束您的數據。
你可以在R2很多行,所有PK2的值相同,但每個與PK1不同的值。現在你不再是2NF了,而你又回到了你開始的地方。
理想情況下,您希望強制R1 {PK2}和R2 {PK2}之間的連接依賴關係。不幸的是,大多數DBMS(基於SQL的)不能強制表之間的連接依賴關係。
如果您不能強制連接依賴你至少可以R1.PK2一個外鍵引用R2.PK2。