-
bcnf
鎖定
bcnf,全稱為Boyce Codd Normal Form,中文叫巴斯範式/鮑依斯-科得範式,是由Boyce和Codd提出的,比3NF又進了一步,通常認為是修正的第三範式。
- 中文名
- 巴斯範式/鮑依斯-科得範式
- 外文名
- 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.
對3NF關係進行投影,將消除原關係中主屬性對鍵的部分與傳遞依賴,得到一組BCNF關係。
bcnfBCNF定義
具有函數依賴集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。
(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)
即存在關鍵字段決定關鍵字段的情況,所以其不符合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,數量)。