關系數據庫理論課件_第1頁
關系數據庫理論課件_第2頁
關系數據庫理論課件_第3頁
關系數據庫理論課件_第4頁
關系數據庫理論課件_第5頁
已閱讀5頁,還剩59頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1

關係資料庫理論

24.1規範化問題的提出4.1.1規範化理論的主要內容關係資料庫的規範化理論最早是由關係資料庫的創始人E.F.Codd提出的,後經許多專家學者對關係資料庫理論作了深入的研究和發展,形成了一整套有關關係資料庫設計的理論。在該理論出現以前,層次和網狀資料庫的設計只是遵循其模型本身固有的原則,而無具體的理論依據可言,因而帶有盲目性,可能在以後的運行和使用中發生許多預想不到的問題。3在關係資料庫系統中,關係模型包括一組關係模式,各個關係不是完全孤立的,資料庫的設計較層次和網狀模型更為重要。如何設計一個適合的關係資料庫系統,關鍵是關係資料庫模式的設計,一個好的關係資料庫模式應該包括多少關係模式,而每一個關係模式又應該包括哪些屬性,又如何將這些相互關聯的關係模式組建一個適合的關係模型,這些工作決定了到整個系統運行的效率,也是系統成敗的關鍵所在,所以必須在關係資料庫的規範化理論的指導下逐步完成。

4關係資料庫的規範化理論主要包括三個方面的內容:函數信賴範式(NormalForm)模式設計其中,函數信賴起著核心的作用,是模式分解和模式設計的基礎,範式是模式分解的標準。4.1.2關係模式的存儲異常問題資料庫的邏輯設計為什麼要遵循一定的規範化理論?什麼是好的關係模式?某些不好的關係模式可能導致哪些問題?下麵通過例子進行分析:5例如,要求設計教學管理資料庫,其關係模式SCD如下:

SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)其中,SNO表示學生學號,SN表示學生姓名,AGE表示學生年齡,DEPT表示學生所在的系別,MN表示系主任姓名,CNO表示課程號,SCORE表示成績。

根據實際情況,這些數據有如下語義規定:1.一個系有若干個學生,但一個學生只屬於一個系;2.一個系只有一名系主任,但一個系主任可以同時兼幾個系的系主任;3.一個學生可以選修多門功課,每門課程可有若干學生選修;4.每個學生學習課程有一個成績。在此關係模式中填入一部分具體的數據,則可得到SCD關係模式的實例,即一個教學管理資料庫,如圖4.1所示。6圖4.1關係SCDSNOSNAGEDEPTMNCNOSCORES1趙亦17電腦劉偉C190S1趙亦17電腦劉偉C285S2錢爾18資訊王平C557S2錢爾18資訊王平C680S2錢爾18資訊王平C7

70S2錢爾18資訊王平C570S3孫珊20資訊王平C10S3孫珊20資訊王平C270S3孫珊20資訊王平C485S4李思男自動化劉偉C1937根據上述的語義規定,並分析以上關係中的數據,我們可以看出:(SNO,CNO)屬性的組合能唯一標識一個元組,所以(SNO,CNO)是該關係模式的主關係鍵。但在進行資料庫的操作時,會出現以下幾方面的問題。1.數據冗餘。每個系名和系主任的名字存儲的次數等於該系的學生人數乘以每個學生選修的課程門數,同時學生的姓名、年齡也都要重複存儲多次,數據的冗餘度很大,浪費了存儲空間。2.插入異常。如果某個新系沒有招生,尚無學生時,則系名和系主任的資訊無法插入到資料庫中。因為在這個關係模式中,(SNO,CNO)是主關係鍵。根據關係的實體完整性約束,主關係鍵的值不能為空,而這時沒有學生,SNO和CNO均無值,因此不能進行插入操作。另外,當某個學生尚未選課,即CNO未知,實體完整性約束還規定,主關係鍵的值不能部分為空,同樣不能進行插入操作。83.刪除異常。某系學生全部畢業而沒有招生時,刪除全部學生的記錄則系名、系主任也隨之刪除,而這個系依然存在,在資料庫中卻無法找到該系的資訊。另外,如果某個學生不再選修C1課程,本應該只刪去C1,但C1是主關係鍵的一部分,為保證實體完整性,必須將整個元組一起刪掉,這樣,有關該學生的其他資訊也隨之丟失。4.更新異常。如果學生改名,則該學生的所有記錄都要逐一修改SN;又如某系更換系主任,則屬於該系的學生記錄都要修改MN的內容,稍有不慎,就有可能漏改某些記錄,這就會造成數據的不一致性,破壞了數據的完整性。9由於存在以上問題,我們說,SCD是一個不好的關係模式。產生上述問題的原因,直觀地說,是因為關係中“包羅萬象”,內容太雜了。那麼,怎樣才能得到一個好的關係模式呢?我們把關系模式SCD分解為下麵三個結構簡單的關係模式,如圖4.2所示。學生關係S(SNO,SN,AGE,DEPT)選課關係SC(SNO,CNO,SCORE)系關係D(DEPT,MN)10SSCSNOSNAGEDEPT

SNOCNOSCORES1趙亦17電腦

S1C190S2錢爾18資訊

S1C285S3孫珊20資訊

S2C557S4李思21自動化

S2C680

S2C7

D

S2C570DEPTMN

S3C10電腦劉偉

S3C270資訊王平

S3C485自動化劉偉

S4C193圖4.2分解後的關係模式

11在以上三個關係模式中,實現了資訊的某種程度的分離,S中存儲學生基本資訊,與所選課程及系主任無關;D中存儲系的有關資訊,與學生無關;SC中存儲學生選課的資訊,而與所學生及系的有關資訊無關。與SCD相比,分解為三個關係模式後,數據的冗餘度明顯降低。當新插入一個系時,只要在關係D中添加一條記錄。當某個學生尚未選課,只要在關係S中添加一條學生記錄,而與選課關係無關,這就避免了插入異常。當一個系的學生全部畢業時,只需在S中刪除該系的全部學生記錄,而關係D中有關該系的資訊仍然保留,從而不會引起刪除異常。同時,由於數據冗餘度的降低,數據沒有重複存儲,也不會引起更新異常。

12經過上述分析,我們說分解後的關係模式是一個好的關係資料庫模式。從而得出結論,一個好的關係模式應該具備以下四個條件:1.盡可能少的數據冗餘。2.沒有插入異常。3.沒有刪除異常。4.沒有更新異常。

13但要注意,一個好的關係模式並不是在任何情況下都是最優的,比如查詢某個學生選修課程名及所在系的系主任時,要通過連接,而連接所需要的系統開銷非常大,因此要以實際設計的目標出發進行設計如何按照一定的規範設計關係模式,將結構複雜的關係分解成結構簡單的關係,從而把不好的關係資料庫模式轉變為好的關係資料庫模式,這就是關係的規範化。規範化又可以根據不同的要求而分成若干級別。我們要設計的關係模式中的各屬性是相互依賴、相互制約的,這樣才構成了一個結構嚴謹的整體。因此在設計關模式時,必須從語義上分析這些依賴關係。資料庫模式的好壞和關係中各屬性間的依賴關係有關,因此,我們先討論屬性間的依賴關係,然後再討論關係規範化理論。

144.2函數依賴4.2.1函數依賴的定義及性質關係模式中的各屬性之間相互依賴、相互制約的聯繫稱為數據依賴。數據依賴一般分為函數依賴、多值依賴和連接依賴。其中,函數依賴是最重要的數據依賴。函數依賴(FunctionalDependency)是關係模式中屬性之間的一種邏輯依賴關係。例如在上一節介紹的關係模式SCD中,SNO與SN、AGE、DEPT之間都有一種依賴關係。由於一個SNO只對應一個學生,而一個學生只能屬於一個系,所以當SNO的值確定之後,SN,AGE,DEPT的值也隨之被唯一的確定了。這類似於變數之間的單值函數關係。設單值函數Y=F(X),引數X的值可以決定一個唯一的函數值Y。在這裏,我們說SNO決定函數(SN,AGE,DEPT),或者說(SN,AGE,DEPT)函數依賴於SNO。15下麵給函數依賴的形式化定義。

4.2.1.1函數依賴的定義定義4.1設關係模式R(U,F),U是屬性全集,F是U上的函數依賴集,X和Y是U的子集,如果對於R(U)的任意一個可能的關係r,對於X的每一個具體值,Y都有唯一的具體值與之對應,則稱X決定函數Y,或Y函數依賴於X,記作X→Y。我們稱X為決定因素,Y為依賴因素。當Y不函數依賴於X時,記作:XY。當X→Y且Y→X時,則記作:XY。對於關係模式SCDU={SNO,SN,AGE,DEPT,MN,CNO,SCORE}F={SNO→SN,SNO→AGE,SNO→DEPT}一個SNO有多個SCORE的值與其對應,因此SCORE不能唯一地確定,即SCORE不能函數依賴於SNO,所以有:SNOSCORE。但是SCORE可以被(SNO,CNO)唯一地確定。所以可表示為:(SNO,CNO)→SCORE。

16有關函數依賴的幾點說明:1.平凡的函數依賴與非平凡的函數依賴。當屬性集Y是屬性集X的子集時,則必然存在著函數依賴X→Y,這種類型的函數依賴稱為平凡的函數依賴。如果Y不是X的子集,則稱X→Y為非平凡的函數依賴。若不特別聲明,我們討論的都是非平凡的函數依賴。2.函數依賴是語義範疇的概念。我們只能根據語義來確定一個函數依賴,而不能按照其形式化定義來證明一個函數依賴是否成立。例如,對於關係模式S,當學生不存在重名的情況下,可以得到:

SN→AGE SN→DEPT這種函數依賴關係,必須是在沒有重名的學生條件下才成立的,否則就不存在函數依賴了。所以函數依賴反映了一種語義完整性約束。

173.函數依賴與屬性之間的聯繫類型有關。(1)在一個關係模式中,如果屬性X與Y有1:1聯繫時,則存在函數依賴X→Y,Y→X,即XY。

例如,當學生無重名時,SNOSN。(2)如果屬性X與Y有1:m的聯繫時,則只存在函數依賴X→Y。

例如,SNO與AGE,DEPT之間均為1:m聯繫,所以有SNO→AGE,SNO→DEPT。(3)如果屬性X與Y有m:n的聯繫時,則X與Y之間不存在任何函數依賴關係。

例如,一個學生可以選修多門課程,一門課程又可以為多個學生選修,所以SNO與CNO之間不存在函數依賴關係。由於函數依賴與屬性之間的聯繫類型有關,所以在確定屬性間的函數依賴關係時,可以從分析屬性間的聯繫類型入手,便可確定屬性間的函數依賴。

184.函數依賴關係的存在與時間無關。因為函數依賴是指關係中的所有元組應該滿足的約束條件,而不是指關係中某個或某些元組所滿足的約束條件。當關係中的元組增加、刪除或更新後都不能破壞這種函數依賴。因此,必須根據語義來確定屬性之間的函數依賴,而不能單憑某一時刻關係中的實際數據值來判斷。例如,對於關係模式S,假設沒有給出無重名的學生這種語義規定,則即使當前關係中沒有重名的記錄,也只能存在函數依賴SNO→SN,而不能存在函數依賴SN→SNO,因為如果新增加一個重名的學生,函數依賴SN→SNO必然不成立。所以函數依賴關係的存在與時間無關,而只與數據之間的語義規定有關。

195.函數依賴可以保證關係分解的無損連接性。設R(X,Y,Z),X,Y,Z為不相交的屬性集合,如果X→Y或X→Z,則有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示關係R在屬性(X,Y)上的投影,即R等於其投影在X上的自然連接,這樣便保證了關係R分解後不會丟失原有的資訊,稱作關係分解的無損連接性。例如,對於關係模式SCD,有SNO→(SN,AGE,DEPT,MN),SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)=SCD[SNO,SN,AGE,DEPT,MN]*SCD[SNO,CNO,SCORE],也就是說,用其投影在SNO上的自然連接可復原關係模式SCD。這一性質非常重要,在後一節的關係規範化中要用到。

204.2.1.2函數依賴的基本性質1.投影性。根據平凡的函數依賴的定義可知,一組屬性函數決定它的所有子集。例如,在關係SCD中,(SNO,CNO)→SNO和(SNO,CNO)→CNO。2.擴張性。若X→Y且W→Z,則(X,W)→(Y,Z)。例如,SNO→(SN,AGE),DEPT→MN,則有(SNO,DEPT)→(SN,AGE,MN)。3.合併性。若X→Y且X→Z則必有X→(Y,Z)。例如,在關係SCD中,SNO→(SN,AGE),SNO→(DEPT,MN),則有SNO→(SN,AGE,DEPT,MN)。4.分解性。若X→(Y,Z),則X→Y且X→Z。很顯然,分解性為合併性的逆過程。由合併性和分解性,很容易得到以下事實:X→A1,A2,…,An成立的充分必要條件是X→Ai(i=1,2,…,n)成立。

214.2.2完全函數依賴與部分函數依賴定義4.2

設關係模式R(U),U是屬性全集,X和Y是U的子集,如果X→Y,並且對於X的任何一個真子集X′,都有X′Y,則稱Y對X完全函數依賴(FullFunctionalDependency),記作XY。如果對X的某個真子集X′,有X′→Y,則稱Y對部分函數依賴(PartialFunctionalDependency),記作XY。例如,在關係模式SCD中,因為SNOSCORE,且CNOSCORE,所以有:(SNO,CNO)SCORE。

而SNO→AGE,所以(SNO,CNO)AGE。由定義4.2可知:只有當決定因素是組合屬性時,討論部分函數依賴才有意義,當決定因素是單屬性時,只能是完全函數依賴。例如,在關係模式S(SNO,SN,AGE,DEPT),決定因素為單屬性SNO,有SNO→(SN,AGE,DEPT),不存在部分函數依賴。

224.2.3傳遞函數依賴定義4.3

設有關係模式R(U),U是屬性全集,X,Y,Z是U的子集,若X→Y,但YX,而Y→Z(YX,ZY),則稱Z對X傳遞函數依賴(TransitiveFunctionalDependency),記作:X

Z。如果Y→X,則XY,這時稱Z對X直接函數依賴,而不是傳遞函數依賴。例如,在關係模式SCD中,SNO→DEPTN,但DEPTNSNO,而DEPTN→MN,則有SNOMN。當學生不存在重名的情況下,有SNO→SN,SN→SNO,SNOSN,SN→DEPTN,這時DEPTN對SNO是直接函數依賴,而不是傳遞函數依賴。綜上所述,函數依賴分為完全函數依賴、部分函數依賴和傳遞函數依賴三類,它們是規範化理論的依據和規範化程度的準則,下麵我們將以介紹的這些概念為基礎,進行資料庫的規範設計。234.3範式

規範化的基本思想是消除關係模式中的數據冗餘,消除數據依賴中的不合適的部分,解決數據插入、刪除時發生異常現象。這就要求關係資料庫設計出來的關係模式要滿足一定的條件。我們把關係數據庫的規範化過程中為不同程度的規範化要求設立的不同標準稱為範式(NormalForm)。由於規範化的程度不同,就產生了不同的範式。滿足最基本規範化要求的關係模式叫第一範式,在第一範式中進一步滿足一些要求為第二範式,以此類推就產生了第三範式等概念。每種範式都規定了一些限制約束條件。

24範式的概念最早由E.F.Codd提出。從1971年起,Codd相繼提出了關係的三級規範化形式,即第一範式(1NF)、第二範式(2NF)、第三範式(3NF)。1974年,Codd和Boyce以共同提出了一個新的範式的概念,即Boyce-Codd範式,簡稱BC範式。1976年Fagin提出了第四範式,後來又有人定義了第五範式。至此在關係資料庫規範中建立了一個範式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一級比一級有更嚴格的要求。各個範式之間的聯繫可以表示為:5NF4NFBCNF3NF2NF1NF如圖4.3所示。

25圖4.3各種範式之間的關係下麵逐一介紹各級範式及其規範化。

4NF5NFBCNF3NF2NF1NF規範與非規範關係264.3.1第一範式第一範式(FirstNormalForm)是最基本的規範形式,即關係中每個屬性都是不可再分的簡單項。定義4.4

如果關係模式R,其所有的屬性均為簡單屬性,即每個屬性都城是不可再分的,則稱R屬於第一範式,簡稱1NF,記作R

1NF。在第2章討論關係的性質時,我們把滿足這個條件的關係稱為規範化關係。在關係資料庫系統中只討論規範化的關係,凡是非規範化的關係模式必須化成規範化的關係。在非規範化的關係中去掉組合項就能化成規範化的關係。每個規範化的關係都屬於1NF,這也是它之所以稱為“第一”的原因。

27然而,一個關係模式僅僅屬於第一範式是不適用的。在4.1節中給出的關係模式SCD屬於第一範式,但其具有大量的數據冗餘,具有插入異常、刪除異常、更新異常等弊端。為什麼會存在這種問題呢?讓我們分析一下SCD中的函數依賴關係,它的關係鍵是(SNO,CNO)的屬性組合,所以有:(SNO,CNO)SCORESNO→SN,(SNO,CNO)SNSNO→AGE,(SNO,CNO)AGESNO→DEPT,(SNO,CNO)DEPTSNOMN,(SNO,CNO)MN

28我們可以用函數信賴圖表示以上函數依賴關係,如圖4.4所示。

SDNMNSNO圖4.4SCD中的函數依賴關係SNOCNOPPf由此可見,在SCD中,既存在完全函數依賴,又存在部分函數依賴和傳遞函數依賴。這種情況往往在資料庫中是不允許的,也正是由於關係中存在著複雜的函數依賴,才導致數據操作中出現了種弊端。克服這些弊端的方法是用投影運算將關係分解,去掉過於複雜的函數依賴關係,向更高一級的範式進行轉換。

294.3.2第二範式4.3.2.1第二範式的定義定義4.5

如果關係模式R

1NF,且每個非主屬性都完全函數依賴於R的每個關係鍵,則稱R屬於第二範式(SecondNormalForm),簡稱2NF,記作R

2NF。在關係模式SCD中,SNO,CNO為主屬性,AGE,DEPT,MN,MN,SCORE均為非主屬性,經上述分析,存在非主屬性對關係鍵的部分函數依賴,所以SCD2NF。而如圖4.2所示的由SCD分解的三個關係模式S,D,SC,其中S的關係鍵為SNO,D的關係鍵為DEPT,都是單屬性,不可能存在部分函數依賴。而對於SC,(SNO,CNO)SCORE。所以SCD分解後,消除了非主屬性對關係鍵的部分函數依賴,S,D,SC均屬於2NF。

30又如在2.4.2中,講述全碼的概念時給出的關係模式TCS(T,C,S),一個教師可以講授多門課程,一門課程可以為多個教師講授,同樣一個學生可以選聽多門課程,一門課程可以為多個學生選聽,(T,C,S)三個屬性的組合是關係鍵,T,C,S都是主屬性,而無非主屬性,所以也就不可能存在非主屬性對關係鍵的部分函數依賴,TCS

2NF。經以上分析,可以得到兩個結論:1.從1NF關係中消除非主屬性對關係鍵的部分函數依賴,則可得到2NF關係。2.如果R的關係鍵為單屬性,或R的全體屬性均為主屬性,則R

2NF。

314.3.2.22NF規範化2NF規範化是指把1NF關係模式通過投影分解轉換成2NF關係模式的集合。分解時遵循的基本原則就是“一事一地”,讓一個關係只描述一個實體或者實體間的聯繫。如果多於一個實體或聯繫,則進行投影分解。下麵以關係模式SCD為例,來說明2NF規範化的過程例4.1將SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)規範到2NF。由SNO→SN,SNO→AGE,SNO→DEPT,(SNO,CNO)SCORE,可以判斷,關係SCD至少描述了兩個實體,一個為學生實體,屬性有SNO、SN、AGE、DEPT、MN;另一個是學生與課程的聯繫(選課),屬性有SNO、CNO和SCORE。根據分解的原則,我們可以將SCD分解成如下兩個關係,如圖4.5所示。

32SD(SNO,SN,AGE,DEPT,MN),描述學生實體;SC(SNO,CNO,SCORE),描述學生與課程的聯繫。SD

SNOSNAGEDEPTMNS1趙亦17電腦劉偉S2錢爾18資訊王平S3孫珊20資訊王平S4李思21自動化劉偉SC

SNOCNOSCORES1C190S1C285S2C557S2C680S2C7

S2C570S3C10S3C270S3C485S4C193圖4.5關係SD和SC

33對於分解後的兩個關係SD和SC,主鍵分別為SNO和(SNO,CNO),非主屬性對主鍵完全函數依賴。因此,SD

2NF,SC

2NF,而且前面已經討論,SCD的這種分解沒有丟失任何資訊,具有無損連接性。分解後,SD和SC的函數依賴分別如圖4.6和4.7所示。

SNOSNSNOCNOSCOREAGEDEPTMN圖4.6SD中的函數依賴關係圖4.7SC中的函數依賴關係

341NF的關係模式經過投影分解轉換成2NF後,消除了一些數據冗餘。分析圖4.5中SD和SC中的數據,可以看出,它們存儲的冗餘度比關係模式SCD有了較大輻度的降低。學生的姓名、年齡不需要重複存儲多次。這樣便可在一定程度上避免數據更新所造成的數據不一致性的問題。由於把學生的基本資訊與選課資訊分開存儲,則學生基本資訊因沒選課而不能插入的問題得到瞭解決,插入異常現象得到了部分改善。同樣,如果某個學生不再選修C1課程,只在選課關係SC中刪去該該學生選修C1的記錄即可,而SD中有關該學生的其他資訊不會受到任何影響,也解決了部分刪除異常問題。因此可以說關係模式SD和SC在性能上比SCD有了顯著提高。

35下麵對2NF規範化作形式化的描述。設關係模式R(X,Y,Z),R

1NF,但R2NF,其中,X是鍵屬性,Y,Z是非鍵屬性,且存在部分函數依賴,X

Y。設X可表示為X1、X2,其中X1Y。則R(X,Y,Z)可以分解為R[X1,Y]和R[X,Z]。因為X1→Y,所以R(X,Y,Z)=R[X1,Y]*R[X1,X2,Z]=R[X1,Y]*R[X,Z],即R等於其投影R[X1,Y]和[X,Z]在X1上的自然連接,R的分解具有無損連接性。由於X1Y,因此R[X1,Y]

2NF。若R[X,Z]2NF,可以按照上述方法繼續進行投影分解,直到將R[X,Z]分解為屬於2NF關係的集合,且這種分解必定是有限的。

364.3.2.32NF的缺點2NF的關係模式解決了1NF中存在的一些問題,2NF規範化的程度比1NF前進了一步,但2NF的關係模式在進行數據操作時,仍然存在著一些問題:1.數據冗餘。每個系名和系主任的名字存儲的次數等於該系的學生人數。2.插入異常。當一個新系沒有招生時,有關該系的資訊無法插入。3.刪除異常。某系學生全部畢業而沒有招生時,刪除全部學生的記錄也隨之刪除了該系的有關資訊。4.更新異常。更換系主任時,仍需改動較多的學生記錄。之所以存在這些問題,是由於在SCD中存在著非主屬性對主鍵的傳遞依賴。分析SCD中的函數依賴關係,SNO→SN,SNO→AGE,SNO→DEPT,DEPT→MN,SNOMN,非主屬性MN對主鍵SNO傳遞依賴。為此,對關係模式SCD還需進一步簡化,消除這種傳遞依賴,得到3NF。

374.3.3第三範式4.3.3.1第三範式的定義定義4.6

如果關係模式R

2NF,且每個非主屬性都不傳遞依賴於R的每個關係鍵,則稱R屬於第三範式(ThirdNormalForm),簡稱3NF,記作R

3NF。第三範式具有如下性質:1.如果R

3NF,則R也是2NF。證明:3NF的另一種等價描述是:對於關係模式R,不存在如下條件的函數依賴,X→Y(YX),Y→Z,其中X是鍵屬性,Y是任意屬性組,Z是非主屬性,ZY。在此定義下,令YX,Y是X的真子集,則以上條件X→Y,Y→Z就變成了非主屬性對鍵X的部分函數依賴,XZ。但由於3NF中不存在這樣的函數依賴,所以R中不可能存在非主屬性對鍵X的部分函數依賴,R必定是2NF。

382.如果R

2NF,則R不一定是3NF。例如,我們前面由關係模式SCD分解而得到的SD和SC都為2NF,其中,SC

3NF,但在SD中存在著非主屬性MN對主鍵SNO傳遞依賴,SD3NF。對於SD,應該進一步進行分解,使其轉換成3NF。

4.3.3.23NF規範化3NF規範化是指把2NF關係模式通過投影分解轉換成3NF關係模式的集合。和2NF的規範化時遵循的原則相同,即“一事一地”,讓一個關係只描述一個實體或者實體間的聯繫。下麵以2NF關係模式SD為例,來說明3NF規範化的過程。

39例4.2將SD(SNO,SN,AGE,DEPT,MN)規範到3NF。分析SD的屬性組成,可以判斷,關係SD實際上描述了兩個實體:

一個為學生實體,屬性有SNO,SN,AGE,DEPT;

另一個是系的實體,其屬性DEPT和MN。根據分解的原則,我們可以將SD分解成如下兩個關係,如圖4.8所示。

S(SNO,SN,AGE,DEPT),描述學生實體;

D(DEPT,MN),描述系的實體。

40SDSNOSNAGEDEPT

DEPTMNS1趙亦17電腦

電腦劉偉S2錢爾18資訊

資訊王平S3孫珊20資訊

自動化劉偉S4李思21自動化

對於分解後的兩個關係S和D,主鍵分別為SNO和DEPT,不存在非主屬性對主鍵的傳遞函數依賴。因此,S

3NF,D

3NF。圖4.8關係S和D

41分解後,S和D的函數依賴分別如圖4.9和4.10所示。SNOSNDEPTAGEDEPTMN圖4.9S中的函數依賴關係圖圖4.10D中的函數依賴關係圖由以上兩圖可以看出,關係模式SD由2NF分解為3NF後,函數依賴關係變得更加簡單,既沒有非主屬性對鍵的部分依賴,也沒有非主屬性對鍵的傳遞依賴,解決了2NF中存在的四個問題。421.數據冗餘降低。系主任的名字存儲的次數與該系的學生人數無關,只在關係D中存儲一次。2.不存在插入異常。當一個新系沒有學生時,該系的資訊可以直接插入到關係D中,而與學生關係S無關。3.不存在刪除異常。要刪除某系的全部學生而仍然保留該系的有關資訊時,可以只刪除學生關係S中的相關學生記錄,而不影響系關係D中的數據。

4.不存在更新異常。更換系主任時,只需修改關係D中一個相應元組的MN屬性值,從而不會出現數據的不一致現象。SCD規範到3NF後,所存在的異常現象已經全部消失。但是,3NF只限制了非主屬性對鍵的依賴關係,而沒有限制主屬性對鍵的依賴關係。如果發生了這種依賴,仍有可能存在數據冗餘、插入異常、刪除異常和修改異常。這時,則需對3NF進一步規範化,消除主屬性對鍵的依賴關係,為了解決這種問題,Boyce與Codd共同提出了一個新範式的定義,這就是Boyce-Codd範式,通常簡稱BCNF或BC範式。它彌補了3NF的不足。434.3.4BC範式4.3.4.1BC範式的定義定義4.7

如果關係模式R

1NF,且所有的函數依賴X→Y(YX),決定因素X都包含了R的一個候選鍵,則稱R屬於BC範式(Boyce-CoddNormalForm),記作R

BCNF。BCNF具有如下性質:1.滿足BCNF的關係將消除任何屬性(主屬性或非主屬性)對鍵的部分函數依賴和傳遞函數依賴。也就是說,如果R

BCNF,則R也是3NF。證明:採用反證法。設R不是3NF。則必然存在如下條件的函數依賴,X→Y(YX),Y→Z,其中X是鍵屬性,Y是任意屬性組,Z是非主屬性,ZY,這樣Y→Z函數依賴的決定因素Y不包含候選鍵,這與BCNF範式的定義相矛盾,所以如果R

BCNF,則R也是3NF。

442.如果R

3NF,則R不一定是BCNF。現舉例說明。設關係模式SNC(SNO,SN,CN0,SCORE),其中SNO代表學號,SN代表學生姓名並假設沒有重名,CNO代表課程號,SCORE代表成績。可以判定,SNC有兩個候選鍵(SNO,CNO)和(SN,CNO),其函數依賴如下:

SNOSN

(SNO,CNO)→SCORE

(SN,CNO)→SCORE。唯一的非主屬性SCORE對鍵不存在部分函數依賴,也不存在傳遞函數依賴。所以SNC

3NF。但是,因為SNOSN,即決定因素SNO或SN不包含候選鍵,從另一個角度說,存在著主屬性對鍵的部分函數依賴:(SNO,CNO)SN,(SN,CNO)SNO,所以SNC不是BCNF。正是存在著這種主屬性對鍵的部分函數依賴關係,造成了關係SNC中存在著較大的數據冗餘,學生姓名的存儲次數等於該生所選的課程數。從而會引起修改異常。比如,當要更改某個學生的姓名時,則必須搜索出現該姓名的每個學生記錄,並對其姓名逐一修改,這樣容易造成數據的不一致問題。解決這一問題的辦法仍然是通過投影分解進一步提高SNC的範式等級,將SNC規範到BCNF。

454.3.4.2BCNF規範化BCNF規範化是指把3NF關係模式通過投影分解轉換成BCNF關係模式的集合。下麵以3NF關係模式SNC為例,來說明BCNF規範化的過程。例4.3將SNC(SNO,SN,CNO,SCORE)規範到BCNF。分析SNC數據冗餘的原因,是因為在這一個關係中存在兩個實體,一個為學生實體,屬性有SNO、SN;另一個是選課實體,屬性有SNO、CNO和SCORE。根據分解的原則,我們可以將SNC分解成如下兩個關係:S1(SNO,SN),描述學生實體;S2(SNO,CNO,SCORE),描述學生與課程的聯繫。對於S1,有兩個候選鍵SNO和SN,對於S2,主鍵為(SNO,CNO)。在這兩個關係中,無論主屬性還是非主屬性都不存在對鍵的部分依賴和傳遞依賴,S1

BCNF,S2

BCNF。

46分解後,S1和S2的函數依賴分別如圖4.11和4.12所示。SNOSNSNOCNOSCORE圖4.11S1中的函數依賴關係圖4.12S2中的函數依賴關係

關係SNC轉換成BCNF後,數據冗餘度明顯降低。學生的姓名只在關係S1中存儲一次,學生要改名時,只需改動一條學生記錄中的相應的SN值,從而不會發生修改異常。

47例4.4設關係模式TCS(T,C,S),T表示教師,C表示課程,S表示學生。語義假設是,每一位教師只講授一門課程;每門課程由多個教師講授;某一學生選定某門課程,就對應於一確定的教師。根據語義假設,TCS的函數依賴是:(S,C)→T,(S,T)→C,T→C。函數依賴圖如圖4.13所示。

SCTSTC4.13TCS中的函數依賴關係

48對於TCS,(S,C)和(S,T)都是候選鍵,兩個候選鍵相交,有公共的屬性S。TCS中不存在非主屬性,也就不可能存在非主屬性對鍵的部分依賴或傳遞依賴,所以TCS

3NF。但從TCS的一個關係實例(如圖4.14)分析,仍存在一些問題。

TCST1C1S1T1C1S2T2C1S3T2C1S4T3C2S2T4C2S2T4C3S2圖4.14關係TCS

491.數據冗餘。雖然每個教師只開一門課,但每個選修該教師該該門課程的學生元組都要記錄這一資訊。2.插入異常。當某門課程本學期不開,自然就沒有學生選修。沒有學生選修,因為主屬性不能為空,教師上該門課程的資訊就無法插入。同樣原因,學生剛入校,尚未選課,有關資訊也不能輸入。3.刪除異常。如果選修某門課程的學生全部畢業,刪除學生記錄的同時,隨之也刪除了教師開設該門課程的資訊。4.更新異常。當某個教師開設的某門課程改名後,所有選修該教師該門課程的學生元組都要進行修改,如果漏改某個數據,則破壞了數據的完整性。

50分析出現上述問題的原因在於主屬性部分依賴於鍵,(S,T)C,因此關係模式還繼續分解,轉換成更高一級的範式BCNF,以消除資料庫操作中的異常現象。將TCS分解為兩個關係模式ST(S,T)和TC(T,C),消除函數依賴(S,T)C。其中ST的鍵為S,TC的鍵為T。ST

BCNF,TC

BCNF。這兩個關係模式的函數依賴圖分別如圖4.15和4.16所示。

STTC圖4.15ST中的函數依賴關係圖4.16TC中的函數依賴關係

51關係模式TCS由規範到BCNF後,使原來存在的四個異常問題得到解決。

1.數據冗餘降低。每個教師開設課程的資訊只在TC關係中存儲一次。

2.不存在插入異常。對於所開課程尚未有學生選修的教師資訊可以直接存儲在關係TC中,而對於尚未選修課程的學生可以存儲在關係ST中。

3.不存在刪除異常。如果選修某門課程的學生全部畢業,可以只刪除關係ST中的相關學生記錄,而不影響系關係TC中相應教師開設該門課程的資訊。

4.不存在更新異常。當某個教師開設的某門課程改名後,只需修改關係TC中的一個相應元組即可,不會破壞數據的完整性。如果一個關係資料庫中所有關係模式都屬於3NF,則已在很大程度上消除了插入異常和刪除異常,但由於可能存在主屬性對候選鍵的部分依賴和傳遞依賴,因此關係模式的分離仍不夠徹底。如果一個關係資料庫中所有關係模式都屬於BCNF,那麼在函數依賴的範疇內,已經實現了模式的徹底分解,消除了產生插入異常和刪除異常的根源,而且數據冗餘也減少到極小程度。

524.4關係模式的規範化

到目前為止,規範化理論已經提出了六類範式(有關4NF和5NF的內容不再詳細介紹)。各範式級別是在分析函數依賴條件下對關係模式分離程度的一種測度,範式級別可以逐級升高。一個低一級範式的關係模式,通過模式分解轉化為若干個高一級範式的關係模式的集合,這種分解過程叫作關係模式的規範化(Normalization)。4.4.1關係模式規範化的目的和原則一個關係只要其分量都是不可分的資料項目,就可稱作規範化的關係,但這只是最基本的規範化。這樣的關係模式是合法的。但人們發現有些關係模式存在插入、刪除、修改異常、數據冗餘等弊病。規範化的目的就是使結構合理,消除存儲異常,使數據冗餘儘量小,便於插入、刪除和更新。

53規範化的基本原則就是遵從概念單一化“一事一地”的原則,即一個關係只描述一個實體或者實體間的聯繫。若多於一個實體,就把它“分離”出來。因此,所謂規範化,實質上是概念的單一化,即一個關係表示一個實體。4.4.2關係模式規範化的步驟規範化就是對原關係進行投影,消除決定屬性不是候選鍵的任何函數依賴。具體可以分為以下幾步:1.對1NF關係進行投影,消除原關係中非主屬性對鍵的部分函數依賴,將1NF關係轉換成若干個2NF關係。2.對2NF關係進行投影,消除原關係中非主屬性對鍵的傳遞函數依賴,將2NF關係轉換成若干個3NF關係。3.對3NF關係進行投影,消除原關係中主屬性對鍵的部分函數依賴和傳遞函數依賴,也就是說使決定因素都包含一個候選鍵。得到一組BCNF關係。

54關係規範化的基本步驟如圖4.17所示。

1NF2NF3NFBCNF消除決定屬性不是候選鍵的非平凡的函數依賴消除非主屬性對鍵的部分函數依賴消除非主屬性對鍵的傳遞函數依賴消除主屬性對鍵的部分和傳遞函數依賴圖4.17規範化過程

一般情況下,我們說沒有異常弊病的資料庫設計是好的資料庫設計,一個不好的關係模式也總是可以通過分解轉換成好的關係模式的集合。但是在分解時要全面衡量,綜合考慮,視實際情況而定。對於那些只要求查詢而不要求插入、刪除等操作的系統,幾種異常現象的存在並不影響資料庫的操作。這時便不宜過度分解,否則當要對整體查詢時,需要更多的多表連接操作,這有可能得不償失。在實際應用中,最有價值的是3NF和BCNF,在進行關係模式的設計時,通常分解到3NF就足夠了。

554.4.2關係模式規範化的要求關係模式的規範化過程是通過對關係模式的投影分解來實現的,但是投影分解方法不是唯一的,不同的投影分解會得到不同的結果。在這些分解方法中,只有能夠保證分解後的關係模式與原關係模式等價的方法才是有意義的。下麵先給出兩個定義:無損連接性(LosslessJoin):設關係模式R(U,F)被分解為若干個關係模式R1(U1,F1),R2(U2,F2),…,Rn(Un,Fn),其中U=U1U2…UN,且不存在UNUj式,Fi為F在Uj上的投影,如果R與R1,R2,…,Rn自然連接的結果相等,則稱關係模式R的分解具有無損連接性。函數依賴保持性(PreserveDependency):設關係模式R(U,F)被分解為若干個關係模式R1(U1,F1),R2(U2,F2),…,Rn(Un,Fn),其中U=U1U2…UN,且不存在UNUj式,Fi為F在Uj上的投影,如果F所蘊含的函數依賴一定也由分解得到的某個關係模式中的函數依賴Fi所蘊含,則稱關係模式R的分解具有函數依賴保持性。

56判斷對關係模式的一個分解是否與原關係模式等價可以有三種不同的標準:1.分解要具有無損連接性。2.分解要具有函數依賴保持性。3.分解既要具有無損連接性,又要具有函數依賴保持性。例如,對於4.3.2.2中例4.2的關係模式SD(SNO,SN,AGE,DEPT,MN),規範到3NF,可以有以下三種不同的分解方法:第一種:S(SNO,SN,AGE,DEPT)D(DEPT,MN)SD(SNO,SN,AGE,DEPT,MN)=S[SNO,SN,AGE,DEPT]*D[DEPT,MN],也就是說,用其兩個投影在DEPT上的自然連接可復原關係模式SD。也就是說這種分解具有無損連接性。對於分解後的關係模式S,有函數依賴SNO→DEPT,對於D,有函數依賴DEPT→MN,這種分解方法保持了原來的SD中的兩個完全函數依賴SNO→DEPT,DEPT→MN。分解既具有無損連接性,又具有函數依賴保持性。前面已經給出詳細的論述,這是一種正確的分解方法。

57第二種:S1(SNO,SN,AGE,DEPT)D1(SNO,MN)分解後的關係如圖4.18所示。S1D1SNOSNAGEDEPT

SNOMNS1趙亦17電腦

S1劉偉

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論