程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> 數據庫-BC范式(BCNF)

數據庫-BC范式(BCNF)

編輯:SyBase教程

數據庫-BC范式(BCNF)


BC范式(BCNF)

關系模式R<U,F>∈1NF,若X→Y且Y ? X時X必包含碼,則R<U,F> ∈BCNF。
這個定義表明,如果非平凡的FD X→Y中X不包含碼,那麼Y必定傳遞依賴於候選鍵,因此R不是BCNF模式。
等價於:每一個決定屬性因素都包含碼
如果關系模式R是1NF,且每個屬性(包括主屬性和非主屬性)都不傳遞依賴於R的候選碼,那麼稱R是BCNF的模式。
若R∈BCNF 
所有非主屬性對每一個碼都是完全函數依賴
所有的主屬性對每一個不包含它的碼,也是完全函數依賴
沒有任何屬性完全函數依賴於非碼的任何一組屬性

R ∈BCNF                R ∈3NF
定理:如果R是BCNF模式,那麼R也是3NF模式。
證明:設R是BCNF,但不是3NF,那麼R上必存在傳遞依賴X→Y,Y→A,這裡X是R的碼,A∈Y, Y→X。顯然Y不包含R的碼,否則Y→X也成立。因此Y→A違反了BCNF的定義,與假設R是BCNF矛盾。從而定理得證。
[例5] 關系模式C(Cno,Cname,Pcno)
C∈3NF
C∈BCNF

[例6]  關系模式S(Sno,Sname,Sdept,Sage)
假定S有兩個碼Sno,Sname
S∈3NF。
S ∈ BCNF
[例7]關系模式SJP(S,J,P)

函數依賴:(S,J)→P;(J,P)→S
(S,J)與(J,P)都可以作為候選碼,屬性相交
SJP∈3NF,
SJP∈BCNF
[例8]在關系模式STJ(S,T,J)中,S表示學生,T表示教師,J表示課程。
函數依賴:
          (S,J)→T,(S,T)→J,T→J
(S,J)和(S,T)都是候選碼

多值依賴

[例9] 學校中某一門課程由多個教師講授,他們使用相同的一套參考書。每個教員可以講授多門課程,每種參考書可以供多門課程使用。
Teaching∈BCNF

Teaching具有唯一候選碼(C,T,B), 即全碼
Teaching模式中存在的問題
(1)數據冗余度大
(2)插入操作復雜
(3) 刪除操作復雜
(4) 修改操作復雜

 設R(U)是一個屬性集U上的一個關系模式, X、 Y和Z是U的子集,並且Z=U-X-Y。關系模式R(U)中多值依賴 X→→Y成立,當且僅當對R(U)的任一關系r,給定的一對(x,z)值,有一組Y的值,這組值僅僅決定於x值而與z值無關

例  Teaching(C, T, B)

多值依賴的另一個等價的形式化的定義:

  在R(U)的任一關系r中,如果存在元組t,s 使得t[X]=s[X],那麼就必然存在元組 w,v? r,(w,v可以與s,t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交換s,t元組的Y值所得的兩個新元組必在r中),則Y多值依賴於X,記為X→→Y。 這裡,X,Y是U的子集,Z=U-X-Y。

平凡多值依賴和非平凡的多值依賴
若X→→Y,而Z=φ,則稱
X→→Y為平凡的多值依賴
否則稱X→→Y為非平凡的多值依賴
[例10]關系模式WSC(W,S,C)
W表示倉庫,S表示保管員,C表示商品
假設每個倉庫有若干個保管員,有若干種商品
每個保管員保管所在的倉庫的所有商品
每種商品被所有保管員保管

多值依賴性質

(1)多值依賴具有對稱性
若X→→Y,則X→→Z,其中Z=U-X-Y
(2)多值依賴具有傳遞性
若X→→Y,Y→→Z, 則X→→Z –Y
(3)函數依賴是多值依賴的特殊情況。
若X→Y,則X→→Y。
(4)若X→→Y,X→→Z,則X→→Y? Z。
(5)若X→→Y,X→→Z,則X→→Y∩Z。
(6)若X→→Y,X→→Z,則X→→Y-Z,X→→Z -Y。

多值依賴與函數依賴的區別

(1) 多值依賴的有效性與屬性集的范圍有關
(2)
若函數依賴X→Y在R(U)上成立,則對於任何Y’ ? Y均有X→Y’ 成立
多值依賴X→→Y若在R(U)上成立,不能斷言對於任何Y’ ? Y有X→→Y’ 成立

4NF

關系模式R<U,F>∈1NF,如果對於R的每個非平凡多值依賴X→→Y(Y ? X),X都含有碼,則R∈4NF。
如果R ∈ 4NF, 則R ∈ BCNF
不允許有非平凡且非函數依賴的多值依賴
允許的非平凡多值依賴是函數依賴
例: Teaching(C,T,B) ∈ 4NF
    存在非平凡的多值依賴C→→T,且C不是碼
用投影分解法把Teaching分解為如下兩個關系模式:
                       CT(C, T) ∈ 4NF
                   CB(C, B) ∈ 4NF
     C→→T, C→→B是平凡多值依賴

關系數據庫的規范化理論是數據庫邏輯設計的工具

目的:盡量消除插入、刪除一場,修改復雜,數據冗余

基本思想:逐步消除數據依賴中不合適的部分
實質:概念的單一化

不能說規范化程度越高的關系模式就越好
在設計數據庫模式結構時,必須對現實世界的實際情況和用戶應用需求作進一步分析,確定一個合適的、能夠反映現實世界的模式
上面的規范化步驟可以在其中任何一步終止

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved