Database-Theory
Boyce-Codd 範式
我對 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 沒有提供關於“密鑰、整個密鑰和只有密鑰”的事實。