關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)(ch4)課件_第1頁
關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)(ch4)課件_第2頁
關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)(ch4)課件_第3頁
關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)(ch4)課件_第4頁
關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)(ch4)課件_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第四章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)第4章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì) 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計(jì)是指如何選擇一個(gè) 比較好的關(guān)系模式集合. 規(guī)范化設(shè)計(jì)理論主要包括三個(gè)方面的內(nèi)容: 數(shù)據(jù)依賴、范式和模式設(shè)計(jì)方法. 其中數(shù)據(jù)依賴起著核心的作用. 數(shù)據(jù)依賴研究 數(shù)據(jù)之間的聯(lián)系,范式是關(guān)系模式的標(biāo)準(zhǔn). 規(guī)范化設(shè)計(jì)理論對關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計(jì)起 著重要的作用.4.1.1 關(guān)系模型的外延和內(nèi)涵外延就是通常所說的關(guān)系、表或當(dāng)前值. 由于用戶經(jīng)常對關(guān)系進(jìn)行插入、刪除和修改操作,因此外延是與時(shí)間有關(guān)的,隨著時(shí)間的推移在不斷變化.內(nèi)涵是與時(shí)間獨(dú)立的,是對數(shù)據(jù)的定義以及數(shù)據(jù)完整性約束的定義. 對數(shù)據(jù)的定義包括對關(guān)系、屬性、域的定義

2、和說明.對數(shù)據(jù)完整性約束的定義涉及面較廣,主要包括以下幾個(gè)方面:靜態(tài)約束: 涉及到數(shù)據(jù)之間聯(lián)系(稱為“數(shù)據(jù)依賴”)、主鍵和值域的設(shè)計(jì).動(dòng)態(tài)約束: 定義各種操作(插入、刪除、修改)對關(guān)系值的影響. 4.1.2 關(guān)系模式的冗余和異常問題例4.1 TNAMEADDRESSC#CNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n4 數(shù)據(jù)冗余 如果一個(gè)教師教幾門課程,那么這個(gè)教師的地址就要重復(fù)存儲(chǔ)幾次。4.1.2 關(guān)系模式的冗余和異常問題操作異常修改異常 如教師t1教三門課程,在關(guān)系中就會(huì)有三個(gè)元組. 如果他的地址變了,這三個(gè)元組中的地址都要改變. 若

3、有一個(gè)元組中的地址未更改,就會(huì)造成這個(gè)教師的地址不惟一.插入異常 如果一個(gè)教師剛調(diào)來,尚未分派教學(xué)任務(wù),那么要將教師的姓名和地址存儲(chǔ)到關(guān)系中去時(shí),在屬性C#和CNAME上將為空值.刪除異常 如果要取消教師t3的教學(xué)任務(wù),那么就要把這個(gè)教師的元組刪去,同時(shí)也把t3的地址信息從表中刪去了.4.1.3 關(guān)系模式的非形式化設(shè)計(jì)準(zhǔn)則 關(guān)系模式的設(shè)計(jì)應(yīng)盡可能只包含有直接聯(lián)系的屬性,不要包 含有間接聯(lián)系的屬性. 關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得相應(yīng)關(guān)系中不出現(xiàn)插入、刪除 和修改等操作異?,F(xiàn)象。如果出現(xiàn)異常,則要清楚地加以說 明,并確保更新數(shù)據(jù)庫的操作正確. 關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得相應(yīng)關(guān)系中避免放置經(jīng)常為空 值

4、的屬性 . 關(guān)系模式的設(shè)計(jì)應(yīng)盡可能使得關(guān)系的等值連接在主鍵和外鍵 的屬性上進(jìn)行,并且保證連接以后不會(huì)生成額外的元組. 4.2 函數(shù)依賴 規(guī)范化 規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。 4.2.1 函數(shù)依賴的定義(一) 定義4.1 設(shè)有關(guān)系模式 R(U),X 和 Y 是屬性集 U 的子集, 函數(shù)依賴是形為 XY 的一個(gè)命題, 只要 r 是 R 的當(dāng)前關(guān)系,對 r 中任意兩個(gè)元組 t 和 s,都有 tX=sX蘊(yùn)涵 tY=sY,那么稱FD XY在關(guān)系模式R (U)中成立. “X函數(shù)確定Y” 或 “Y函數(shù)依賴于X”

5、,記作XY.4.2.1 函數(shù)依賴的定義(二)例4.2 ABCDABCDa1b1c1d1a1b1c1d1a1b1c2d2a1b2c2d2a2b2c3d3a2b2c3d3a3b1c4d4a3b2c4d4圖 關(guān)系模式R 的兩個(gè)關(guān)系 函數(shù)依賴的說明: 1. 函數(shù)依賴不是指關(guān)系模式R的某個(gè)或某些關(guān)系實(shí)例滿足的約束條件,而是指R的所有關(guān)系實(shí)例均要滿足的約束條件。2. 函數(shù)依賴是語義范疇的概念。只能根據(jù)數(shù)據(jù)的語義來確定函數(shù)依賴。 例如“姓名年齡”這個(gè)函數(shù)依賴只有在不允許有同名人的條件下成立3. 數(shù)據(jù)庫設(shè)計(jì)者可以對現(xiàn)實(shí)世界作強(qiáng)制的規(guī)定。如 規(guī)定不允許同名人出現(xiàn),函數(shù)依賴“姓名年齡”成立。所插入的元組必須滿足規(guī)

6、定的函數(shù)依賴,若發(fā)現(xiàn)有同名人存在, 則拒絕裝入該元組。定義4.2 如果XY和YX同時(shí)成立,則可記為XY. 即在關(guān)系中,X值和Y值具有一一對應(yīng)關(guān)系.4.2.1 函數(shù)依賴的定義(四)例4.3 設(shè)有關(guān)系模式R(ABCD),在R的關(guān)系中,屬性值有這樣 的聯(lián)系:A值與B值有一對多聯(lián)系,C值與D值之間有一 對一聯(lián)系,試根據(jù)這些規(guī)則寫出相應(yīng)的函數(shù)依賴.B A, C D, D C4.2.2 FD的邏輯蘊(yùn)涵定義4.3 設(shè)F是在關(guān)系模式R上成立的函數(shù)依賴的集合,XY是一個(gè)函數(shù)依賴。如果對于R的每個(gè)滿足F的關(guān)系r也滿足XY,那么稱F邏輯蘊(yùn)涵XY,記為: F XY.定義4.4 設(shè)F是函數(shù)依賴集,被 F 邏輯蘊(yùn)涵的函數(shù)

7、依賴全體構(gòu)成的集合,稱為函數(shù)依賴集F的閉包(closure),記為F+.即 F+= XY |記為FXY. 4.2.3 FD的推理規(guī)則(二)定理4.1 FD推理規(guī)則A1、A2和A3是正確的.即:如果XY是從F用推理規(guī)則導(dǎo)出的,那么 XY在F+中. 定理4.2 FD的其他5條推理規(guī)則:A4(合并性,Union):XY , XZ XYZ A5(分解性,Decomposition):XY , ZY XZ A6(偽傳遞性):XY , WYZ WXZ A7(復(fù)合性,Reflexivity):XY , WZ XWYZ A8(通用一致性定理):XY , WZ X(W-Y)YZ 平凡函數(shù)依賴與非平凡函數(shù)依賴 定

8、義4.5 在關(guān)系模式R(U)中,對于U的子集X和Y,如果XY,但Y X,則稱XY是非平凡的FD若XY,但Y X, 則稱XY是平凡的FD例:在關(guān)系SC(Sno, Cno, Score)中, 非平凡函數(shù)依賴: (Sno, Cno) Score 平凡函數(shù)依賴: (Sno, Cno) Sno (Sno, Cno) Cno4.2.4 FD和關(guān)鍵碼的聯(lián)系定義4.6 設(shè)關(guān)系模式R的屬性集是U,X是U的一個(gè)子集.如果XU在R上成立,那么稱X是R的一個(gè)超鍵.如果XU在R上成立,但對于X的任一真子集X1都有X1U不成立,那么稱X是R上的一個(gè)候選鍵.本章的鍵都是指候選鍵FD和關(guān)鍵碼的聯(lián)系例4.6 在學(xué)生選課、教師任

9、課的關(guān)系模式中:R(S#,SNAME,C#,SCORE,CNAME,TNAME,TITLE) 如果規(guī)定:每個(gè)學(xué)生每學(xué)一門課只有一個(gè)成績;每個(gè)學(xué)生只有一個(gè)姓名;每個(gè)課程號只有一個(gè)課程名;每門課程只有一個(gè)任課教師. 根據(jù)這些規(guī)則,可以知道(S#,C#)能函數(shù)決定R的全部屬性,并且是一個(gè)候選鍵。雖然(S#,SNAME,C#,TNAME)也能函數(shù)決定R的全部屬性,但相比之下,只能說是一個(gè)超鍵,而不能說是候選鍵,因?yàn)槠渲泻卸嘤鄬傩浴?4.3 關(guān)系模式的分解特性把低一級的關(guān)系模式分解為若干個(gè)高一級的關(guān)系模式只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價(jià),分解方法才有意義關(guān)系模式分解的標(biāo)準(zhǔn): 分解具有無損連

10、接性 分解要保持函數(shù)依賴 分解既要保持函數(shù)依賴,又要具有無損連接性4.3.2 無損分解(一)例4.9rCC4343rABCr1AB2A111111112112圖 未丟失信息的分解 (b)(c)(a) rABCr1ABr2AC r1r2AB1141114111231213111212(a)(b)(c)(d)圖 丟失信息的分解 4.3.3 無損分解的測試方法(二)a4a3b32b31CDb24a3a2b21BCb14b13a2a1ABDCBAa4a3b32b31CDa4a3a2a1BCb14b13a2a1ABDCBA圖4.12 算法4.3的運(yùn)用示意圖(一) (a) 初始表格 (a) 修改后的表格

11、a4a3b32b31CDb24a3a2b21BCb14b13a2a1ABDCBAa4a3b32b31CDa4a3a2b1BCb14b13a2b1ABDCBA(a) 初始表格 (a) 修改后的表格 圖4.13 算法4.3的運(yùn)用示意圖(二) 4.3.3 無損分解的測試方法(三)定理4.8 如果FD XY在模式R上成立,且XY=,那么R分解成=RY,XY 是無損分解.4.4 關(guān)系模式的范式關(guān)系模式的好與壞,用什么標(biāo)準(zhǔn)衡量? 這標(biāo)準(zhǔn)就是模式的范式(Normal Forms,簡記為NF).范式是符合某一種級別的關(guān)系模式的集合.關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求. 滿足不同程度要求的為不同范式.基于FD

12、的范式有1NF、2NF、3NF、BCNF等多種.1NF是關(guān)系模式的基礎(chǔ);2NF已成為歷史,一般不再提及;數(shù)據(jù)庫設(shè)計(jì)中最常用的是3NF和BCNF.4.4.1 第一范式(1NF)定義4.13 如果關(guān)系模式R的每個(gè)關(guān)系r的屬性值都是不可分的原子值,那么稱R是第一范式(first normal form,簡記為1NF)的模式。滿足1NF的關(guān)系稱為規(guī)范化的關(guān)系,否則稱為非規(guī)范化的關(guān)系。例如: 關(guān)系模式R(NAME,ADDRESS,PHONE), 如果一個(gè)人有兩個(gè)電話號碼(PHONE),那么在關(guān)系中至少要出現(xiàn)兩個(gè)元組,以便存儲(chǔ)這兩個(gè)號碼。1NF是關(guān)系模式應(yīng)具備的最起碼的條件 4.4.2 第二范式(2NF)

13、(一)定義4.14 對于FD WA,如果存在XW有XA成立,那么稱WA是局部依賴(A局部依賴于W);否則稱WA是完全依賴。 完全依賴也稱為“左部不可約依賴”.如果A是關(guān)系模式R的候選鍵中屬性,那么稱A是R的主屬性;否則稱A是R的非主屬性.定義4.16 如果關(guān)系模式R是1NF,且每個(gè)非主屬性完全函數(shù)依賴于候選鍵,那么稱R是第二范式(2NF)的模式. 第二范式(2NF)(二)例: R(S#,C#,SCORE,T#,TITLE) (S#,C#)是R的候選鍵。 R上有兩個(gè)FD: (S#,C#)(SCORE, T#,TITLE), C#(T#,TITLE). C# S# SCORE T# TITLE非主

14、屬性 T# 和 TITLE 局部函數(shù)依賴于碼(S, C)第二范式(2NF)(三) 因此前一個(gè)FD是局部依賴,R不是2NF模式. 此時(shí)R的關(guān)系就會(huì)出現(xiàn)冗余和異常現(xiàn)象.數(shù)據(jù)冗余度大、插入異常、刪除異常、修改復(fù)雜. 如果把R分解成 R1(C#,T#,TITLE) R2(S#,C#,SCORE)第二范式(2NF)(四) 局部依賴(S#,C#)(T#,TITLE)就消失了. R1和R2都是2NF模式. S#C#ScoreR2R1C#T#TITLE思考:如何分解模式至第二范式?第二范式(2NF)(五)分解成2NF模式集的算法:設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD XZ,并且Z是非主屬性和XW,那么

15、WZ就是一個(gè)局部依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式R1(XZ),主鍵是X;(存在FD XZ )R2(Y),其中Y=U-Z, 主鍵仍是W,外鍵是X(REFERENCES R1)。利用外鍵和主鍵的聯(lián)接可以從R1和R2重新得到R.如果R1和R2還不是2NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個(gè)關(guān)系模式都是2NF為止. 4.4.3 第三范式(3NF)(一)定義4.17 如果XY,YA,且YX和 AY,那么稱XA是傳遞依賴(A傳遞依賴于X).定義4.18 如果關(guān)系模式R是1NF,且每個(gè)非主屬性都不傳遞依賴于R的候選鍵,那么稱R是第三范式(3NF)的模式。如果數(shù)據(jù)庫模式中每個(gè)關(guān)系模式都是3NF,則稱其為3

16、NF的數(shù)據(jù)庫模式 .第三范式(3NF)(二)若存在函數(shù)依賴 C#T# 和 T#TITLE,那么C#TITLE 就是一個(gè)傳遞依賴,即R1不是3NF模式.此時(shí)R1的關(guān)系中也會(huì)出現(xiàn)冗余和異常操作。譬如一個(gè)教師開設(shè)五門課程,那么關(guān)系中就會(huì)出現(xiàn)五個(gè)元組,教師的地址就會(huì)重復(fù)五次.R1C#T#TITLE第三范式(3NF)(三)如果把R1分解成R11 (C#,T#) 和R12 (T#,TITLE)后,C#TITLE就不會(huì)出現(xiàn)在R11和R12中。這樣R11和R12都是3NF模式。C#T#R11T#TITLER12思考:如何分解模式至第三范式?第三范式(3NF)(四)分解成3NF模式集的算法設(shè)關(guān)系模式R(U),主

17、鍵是W,R上還存在FD XZ. 并且Z是非主屬性,ZX,X不是候選鍵,這樣WZ就是一個(gè)傳遞依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式:R1(XZ),主鍵是X; R2(Y),其中Y=U-Z, 主鍵仍是W, 外鍵是X(REFERENCES R1).利用外鍵和主鍵相匹配機(jī)制,R1和R2通過聯(lián)接可以重新得到R.如果R1和R2還不是3NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個(gè)關(guān)系模式都是3NF為止. 第三范式(3NF)(五)若R3NF,則R的每一個(gè)非主屬性既不局部函數(shù)依賴于候選碼也不傳遞依賴于候選碼.如果R3NF,則R也是2NF.定義4.22 設(shè)關(guān)系模式R,當(dāng)R上每一個(gè)FD XY滿足下列三個(gè)條件之一時(shí):YXX是R的超鍵Y是主屬性. 關(guān)系模式R就是3NF模式. 規(guī)范化(小結(jié))關(guān)系模式規(guī)范化的基本步驟 1NF 消除非主屬性對碼的局部函數(shù)依賴消除決定屬性 2NF集非碼的非平 消除非主屬性對碼的傳遞函數(shù)依賴凡函數(shù)依賴 3NF 消除主屬性對碼的局部和傳遞函數(shù)依賴 BCNF 規(guī)范化的基本思想 消除不合適的數(shù)據(jù)依賴

溫馨提示

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

最新文檔

評論

0/150

提交評論