1

我一直在創建一個數據庫,並且我剛剛完成了標準化步驟。 其中一個關係通過部分依賴性違反了2NF,所以我按照規範化準則將它分成兩個關係。我想知道的是,對於我創建的新關係,它是否有一個依賴原始關係主鍵的外鍵?標準化後創建一個外鍵

例如;

正常化之前: 環R {PK1,PK2,attR1位,attR2位}

正常化後: R1 {PK1,PK2,attR1位} R2 {PK2,attR2位}

是否應PK2有外鍵與PK1?

感謝所有幫助

回答

0

號,因爲attR2位函數依賴於只有PK2,attR2位有有PK2與給定值的所有行相同的值。如果您將PK1添加到R2,則會有兩種選擇,都是不好的。

  1. 對於PK2的每個值,您可以在R2中只有一行,在這種情況下,PK1只能有一個值。這會過度約束您的數據。

  2. 你可以在R2很多行,所有PK2的值相同,但每個與PK1不同的值。現在你不再是2NF了,而你又回到了你開始的地方。

0

理想情況下,您希望強制R1 {PK2}和R2 {PK2}之間的連接依賴關係。不幸的是,大多數DBMS(基於SQL的)不能強制表之間的連接依賴關係。

如果您不能強制連接依賴你至少可以R1.PK2一個外鍵引用R2.PK2。