資料庫管理系統(DBMS)中BCNF的解釋及示例


BCNF (Boyce-Codd正規化)3NF的進階版本。如果每個函式依賴X->Y中,X都是表中的超鍵,則該表處於BCNF。對於BCNF,表應處於3NF,並且對於每個FD,LHS都是超鍵。

示例

考慮一個具有屬性(學生, 科目, 教師)的關係R。

學生教師科目
JhansiP.Naresh資料庫
jhansiK.DasC
subbuP.Naresh資料庫
subbuR.PrasadC
F: { (student, Teacher) -> subject
(student, subject) -> Teacher
Teacher -> subject}

候選鍵是(學生, 教師)和(學生, 科目)。

上述關係處於3NF(因為沒有傳遞依賴)。如果對於每個非平凡的FD X->Y,X必須是一個鍵,則關係R處於BCNF。

上述關係不處於BCNF,因為在FD (教師->科目)中,教師不是鍵。此關係存在異常:

例如,如果我們嘗試刪除學生Subbu,我們將丟失R. Prasad教授C的資訊。這些困難是由教師是決定因素但不是候選鍵這一事實造成的。

BCNF分解

教師->科目違反了BCNF(因為教師不是候選鍵)。

如果X->Y違反BCNF,則將R分成R1(X, Y)和R2(R-Y)。

因此,R被分成兩個關係R1(教師, 科目)和R2(學生, 教師)。

R1

教師科目
P.Naresh資料庫
K.DASC
R.PrasadC

R2

學生教師
JhansiP.Naresh
JhansiK.Das
SubbuP.Naresh
SubbuR.Prasad

R中存在的所有異常,現在在上述兩個關係中都被消除了。

注意

BCNF分解並不總是滿足依賴保持屬性。BCNF分解後,如果依賴關係未保持,則必須決定是保持BCNF還是回滾到3NF。此回滾過程稱為反規範化。

更新於:2023年10月31日

57K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告