Database-Theory

Boyce-Codd 範式

  • April 21, 2014

我對 BCNF 有點困惑,希望得到任何澄清。

我有一張桌子

範例表

主鍵是其所有屬性的組合。這張表在 BCNF 中嗎?我的假設不是,因為 BCNF 需要任何行列式作為候選鍵。然而,在這個例子中,有依賴Subjects->Department,即知道學科我們可以說它是在哪個部門教授的。但是,Subjects 欄位不是候選鍵,因此它違反了 BCNF。假設一門學科只能由一個系教授。我可能會誤解一些東西,所以請任何人都可以澄清。

謝謝

我認為您的困惑可能是因為 {Department, Subjects, Programme} 確實不是候選鍵。作為候選鍵,屬性必須保證每個元組的唯一性,並且必須是最小的——也就是說,沒有屬性的子集可以保證唯一性。由於 {Subject, Programme} 單獨保證唯一性,因此在鍵中包含 Department 會取消它作為候選鍵的資格。

從主鍵中刪除 Department 後,您會看到該表不在 BCNF 中,這要求對於任何依賴關係 X -> Y,Y 是 X 的子集,或者 X 是超鍵。在這種情況下,Department 不是 Subjects 的子集,Subjects 也不是超級鍵(因為它不能唯一標識一個元組)。從技術上講,所描述的關係甚至不在 3NF 中,因為現在被辨識為非主屬性的 Department 沒有提供關於“密鑰、整個密鑰和只有密鑰”的事實。

引用自:https://dba.stackexchange.com/questions/63542