複製鏈接
請複製以下鏈接發送給好友

bcnf

鎖定
bcnf,全稱為Boyce Codd Normal Form,中文叫巴斯範式/鮑依斯-科得範式,是由Boyce和Codd提出的,比3NF又進了一步,通常認為是修正的第三範式
關係模式R<U,F>∈1NF,如果對於R的每個函數依賴X→Y,若Y不屬於X,則X必含有超碼,那麼R∈BCNF。滿足BCNF條件有:所有非主屬性對每一個候選鍵都是完全函數依賴; 所有的主屬性對每一個不包含它的候選鍵,也是完全函數依賴;沒有任何屬性完全函數依賴於非候選鍵的任何一組屬性。
中文名
巴斯範式/鮑依斯-科得範式
外文名
BCNF
全    稱
Boycee Codd Normal Form
關係模式
R∈BCNF
提出者
Boyce和Codd
關聯模式
3NF

bcnfBCNF簡介

是由Boyce和Codd提出的,比3NF又進了一步,通常認為是修正的第三範式.所謂第三範式,定義是關係模式R中若不存在這樣的鍵X,屬性組Y及非主屬性Z,使得X—>Y,Y—>Z成立,(不存在Y—>X),則稱R為3NF.
即當2NF(第二範式)消除了非主屬性對鍵的傳遞函數依賴,則稱為3NF。
3NF關係進行投影,將消除原關係中主屬性對鍵的部分與傳遞依賴,得到一組BCNF關係。

bcnfBCNF定義

關係模式R∈1NF。若函數依賴集合F中的所有函數依賴X→Y(Y不包含於X)的左部都包含R的任一候選鍵,則R∈BCNF。換言之,BCNF中的所有依賴的左部都必須包含候選鍵。 [1] 
具有函數依賴集F的關係模式R屬於BCNF的條件是,對所有F的閉包中形如
X->Y,則下面的兩個條件至少有一個成立:
1. X->Y是非平凡函數依賴
2. X是R的一個超鍵。

bcnfBCNF性質

1 所有非主屬性對每一個候選鍵都是完全函數依賴
2 所有的主屬性對每一個不包含它的候選鍵,也是完全函數依賴;
3 沒有任何屬性完全函數依賴於非候選鍵的任何一組屬性。

bcnfBCNF舉例

由於R∈BCNF,按定義排除了任何屬性對鍵的傳遞依賴與部分依賴,所以R∈3NF。但是若R∈3NF,則R未必屬於BCNF。
例一:關係模式STJ(S,T,J)中,S表示學生,T表示教師,J表示課程。每一個教師只教一門課。每門課有 若干個教師,某一學生選定某門課,就對應一個固定的教師。由語義可得到如下函數依賴
(S,J)->T;(S,T)->J;T->J。
(S,J),(S,T)都是候選鍵
STJ是3NF,因為沒有任何非主屬性對鍵傳遞依賴或部分依賴。但STJ不是BCNF關係,因為T是決定因素而T不是超鍵
例二:假設倉庫管理關係表為StorehouseManage(倉庫ID,存儲物品ID,管理員ID,數量),且有一個管理員只在一個倉庫工作;一個倉庫可以存儲多種物品。這個數據庫表中存在如下決定關係:
(倉庫ID,存儲物品ID)→(管理員ID,數量) (管理員ID,存儲物品ID)→(倉庫ID,數量)
所以,(倉庫ID,存儲物品ID)和(管理員ID,存儲物品ID)都是StorehouseManage的候選關鍵字,表中的非關鍵字段為數量,它是符合第三範式的。但是,由於存在如下決定關係:
(倉庫ID)→(管理員ID) (管理員ID)→(倉庫ID)
即存在關鍵字段決定關鍵字段的情況,所以其不符合BCNF範式。

bcnf分解為BCNF方法

需要消除不包含關係 [2] 
1. 假設R(U)不是BCNF, X是R的屬性子集,A是R的單個屬性,X->A是導致違反BCNF的函數依賴,則將R分解為R-A以及XA。
2.若R-A以及XA仍然不是BCNF,則在R-A以及XA遞歸地執行上述分解。
例一:SCT:(S#,CNAME,TNAME),FD:TNAME→CNAME。
可分解為ST(S#,TNAME)和CT(CNAME,TNAME),它們都是BCNF。
例二:把倉庫管理關係表分解為二個關係表:倉庫管理:StorehouseManage(倉庫ID,管理員ID);倉庫:Storehouse(倉庫ID,存儲物品ID,數量)。
參考資料
  • 1.    尹為民.數據庫原理與技術:科學出版社,2010年1月第二版:113
  • 2.    Addison-Wesley Longman.An Introduction to Database Systems:Pearson Education Inc.,07/22/2003