1.函數依賴的定義 (a)平凡的函數依賴與非平凡的函數依賴 (b)函數依賴是語義範疇的概念 (c)函數依賴關係的存在與時間無關 (d)函數依賴可以保證關係分解的無損連接性 2.函數依賴的基本性質 SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE) (a)投影性:一組屬性函數決定它的子 ...
1.函數依賴的定義
(a)平凡的函數依賴與非平凡的函數依賴
(b)函數依賴是語義範疇的概念
(c)函數依賴關係的存在與時間無關
(d)函數依賴可以保證關係分解的無損連接性
2.函數依賴的基本性質 SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)
(a)投影性:一組屬性函數決定它的子集
舉例:(SNO,CNO)->SNO 和(SNO,CNO)->CNO
(b)擴張性: 若x->y且w->z 則有(x,w)->(y,z)
舉例:SNO->(SN,AGE) DEPT->MN 則有(SNO,DEPT)->(SN,AGE,MN)
(c)合併性:若x->y 且x->z則有x->(y,z)
舉例:SNO->(SN,AGE) SNO->(DEPT,MN) 則有SNO->(SN,AGE,DEPT,MN)
(d)分解性:若x->(y,z)則有x->y, x->z
3.完全函數依賴與部分函數依賴
1.如果X→Y,並且對於X的任何一個真子集X′,都有X′→ Y,則稱Y對X完全函數依賴(Full Functional Dependency),記作 X -(f)->Y
2.如果對X的某個真子集X′,有X′→Y,則稱Y對X部分函數依賴(Partial Functional Dependency) 記作X -(p)-> Y。
舉例:
在關係模式SCD中
因為SNO -\->SCORE,且CNO -\-> SCORE,所以有:(SNO,CNO)-(f)->SCORE 。
而SNO→AGE,所以(SNO,CNO)-(p)->AGE
3.只有當決定因素是組合屬性時,討論部分函數依賴才有意義
4.當決定因素是單屬性時,只能是完全函數依賴。
舉例:在關係模式S(SNO,SN,AGE,DEPT),決定因素為單屬性SNO,有SNO→(SN,AGE,DEPT),不存在部分函數依賴。
4.傳遞函數依賴
1.定義:
設有關係模式R(U),U是屬性全集,X,Y,Z是U的子集,
若X→Y,但Y -\->X,而Y→Z(Y 不屬於X,Z 不屬於Y),則稱Z對X傳遞函數依賴(Transitive Functional Dependency),記作:X-(t)-> Z。
如果Y→X,則X <->Y,這時稱Z對X直接函數依賴,而不是傳遞函數依賴。
舉例:
例如,在關係模式SCD中,SNO→DEPTN,但DEPTN -\->SNO,而DEPTN→MN,則有SNO-(t)->MN。系主任是對學號的傳遞依賴
當學生不存在重名的情況下,有SNO→SN,SN→SNO,SNO <->SN,SN→DEPTN,這時DEPTN對SNO是直接函依賴,而不是傳遞函數依賴。
5.總結函數依賴
綜上所述,函數依賴分為完全函數依賴、部分函數依賴和傳遞函數依賴三類,它們是規範化理論的依據和規範化程度的準則,下麵我們將以介紹的這些概念為基礎,進行資料庫的規範設計。
6.範式
規範化的基本思想是消除關係模式中的數據冗餘,消除數據依賴中的不合適的部分,解決數據插入、刪除時發生異常現象。
這就要求關係資料庫設計出來的關係模式要滿足一定的條件。關係資料庫的規範化過程中:不同程度的規範化要求設立的不同標準稱為範式(Normal Form)。規範化的程度不同,產生不同的範式。滿足最基本規範化要求的關係模式叫第一範式,在第一範式中進一步滿足一些要求為第二範式,以此類推就產生了第三範式等概念。
每種範式都規定了一些限制約束條件。
7.範式發展過程
範式的概念最早由E.F.Codd提出。
從1971年起,Codd相繼提出了關係的三級規範化形式,即第一範式(1NF)、第二範式(2NF)、第三範式(3NF)。
1974年,Codd和Boyce以共同提出了一個新的範式的概念,即Boyce-Codd範式,簡稱BC範式。
1976年Fagin提出了第四範式,
後來又有人定義了第五範式。
至此在關係資料庫規範中建立了一個範式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級比一級有更嚴格的要求。
8.第一範式(First Normal Form)
第一範式是最基本的規範形式,即關係中每個屬性都是不可再分的簡單項。
定義:
如果關係模式R,其所有的屬性均為簡單屬性,即每個屬性域都是不可再分的,則稱R屬於第一範式,簡稱1NF,記作R屬於1NF。
然而,一個關係模式僅僅屬於第一範式是不適用的。給出的關係模式SCD屬於第一範式,但其具有大量的數據冗餘,具有插入異常、刪除異常、更新異常等弊端。
為什麼會存在這種問題呢?
讓我們分析一下SCD中的函數依賴關係,它的關係鍵是(SNO,CNO)的屬性組合,所以有:
(SNO,CNO) -(f)->SCORE
SNO→SN,(SNO,CNO)-(p)-> SN
SNO→AGE,(SNO,CNO)-(p)-> AGE
SNO→DEPT,(SNO,CNO)-(p)-> DEPT
SNO -(t)-> MN,(SNO,CNO)-(p)-> MN
我們可以用函數信賴圖表示以上函數依賴關係,如下圖所示。
9.第二範式
定義 如果關係模式RÎ1NF,且每個非主屬性都完全函數依賴於R的每個關係鍵,則稱R屬於第二範式(Second Normal Form),簡稱2NF,記作R屬於2NF。
分析:在關係模式SCD中,SNO,CNO為主屬性,AGE,DEPT,MN,SCORE均為非主屬性,經上述分析,存在非主屬性對關係鍵的部分函數依賴,所以SCD不是2NF。
拆分:而將SCD分解成三個關係模式S(SNO,SN,AGE,DEPT),D(DEPT,MN),SC(SNO,CNO,SCORE),其中S的關係鍵為SNO,D的關係鍵為DEPT,都是單屬性,不可能存在部分函數依賴。
結果:而對於SC,(SNO,CNO)-(f)->SCORE。所以SCD分解後,消除了非主屬性對關係鍵的部分函數依賴,S,D,SC均屬於2NF。
經以上分析,可以得到兩個結論:
1.從1NF關係中消除非主屬性對關係鍵的部分函數依賴,則可得到2NF關係。
2.如果R的關係鍵為單屬性,或R的全體屬性均為主屬性,則R屬於2NF。
10.1NF分解為2NF規則
2NF規範化是指把1NF關係模式通過投影分解轉換成2NF關係模式的集合。
分解時遵循的基本原則就是“一事一表”,讓一個關係只描述一個實體或者實體間的聯繫。如果多於一個實體或聯繫,則進行投影分解。
11.舉例分析
改善之處:關係模式SD和SC在性能上比SCD有了顯著提高。
(a)1NF的關係模式經過投影分解轉換成2NF後,消除了一些數據冗餘。
(b)分析圖中SD和SC中的數據,可以看出,它們存儲的冗餘度比關係模式SCD有了較大輻度的降低。
(c)學生的姓名、年齡不需要重覆存儲多次。
(d)這樣便可在一定程度上避免數據更新所造成的數據不一致性的問題。
(e)由於把學生的基本信息與選課信息分開存儲,則學生基本信息因沒選課而不能插入的問題得到瞭解決,插入異常現象得到了部分改善。
(f)同樣,如果某個學生不再選修C1課程,只在選課關係SC中刪去該該學生選修C1的記錄即可,而SD中有關該學生的其它信息不會受到任何影響,也解決了部分刪除異常問題。
上一篇資料庫知識點③:http://www.cnblogs.com/zpfbuaa/p/5503200.html
下一篇資料庫知識點⑤:http://www.cnblogs.com/zpfbuaa/p/5523163.html