數據庫原理與應用(MySQL版) 課件 第8章 關系規范化理論_第1頁
數據庫原理與應用(MySQL版) 課件 第8章 關系規范化理論_第2頁
數據庫原理與應用(MySQL版) 課件 第8章 關系規范化理論_第3頁
數據庫原理與應用(MySQL版) 課件 第8章 關系規范化理論_第4頁
數據庫原理與應用(MySQL版) 課件 第8章 關系規范化理論_第5頁
已閱讀5頁,還剩122頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第8章

關系規范化理論

數據庫原理與應用1本章內容8.1關系規范化的意義8.2函數依賴8.3函數依賴的推理規則8.4范式8.5關系模式的分解準則28.1關系規范化的意義關系模式的好與壞直接影響到數據庫中數據的操作效率。下面通過一個示例來分析“不好”的關系模式會帶來的問題。3示例假設有描述學生借閱書籍的關系模式:S-B-B(SID,Email,ISBN,bname,category,price,borrow_time,return_time)其中各屬性分別為:學號、郵箱、國際標準書號、圖書名、圖書分類、價格、借書時間和還書時間。該關系模式的主鍵為

(SID,ISBN,borrow_time)。4數據示例SIDEmailISBNbnamecategorypriceborrow_timereturn_time202101002liuchen@9787302505945零基礎入門學習C語言TP792021-10-159:45:002021-10-2913:42:00202101004zxhong@9787302505945零基礎入門學習C語言TP792021-10-118:45:002021-11-214:00:00202102001zhanghai@9787304103415我的最后一本發音書H482021-9-2110:05:002021-10-1214:00:00202102003zshshan@9787304103415我的最后一本發音書H482021-9-2411:15:002021-10-1414:00:00202101002liuchen@9787111641247深入理解Java虛擬機TP1292022-6-159:45:00NULL202101002liuchen@9787100158602牛津高階英漢雙解詞典H1692022-6-159:45:00NULL5存在問題數據冗余問題數據更新問題數據插入問題數據刪除問題6本章內容8.1關系規范化的意義8.2函數依賴8.3函數依賴的推理規則8.4范式8.5關系模式的分解準則78.2函數依賴函數依賴非平凡的函數依賴平凡的函數依賴完全函數依賴、部分函數依賴傳遞函數依賴候選鍵、主屬性、非主屬性81、函數依賴函數Y=f(X)表示的是X和Y的對應關系,即給定一個X值,都會有一個Y值和它對應。也可以說,X函數決定Y,或Y函數依賴于X。9函數依賴(續)函數依賴注重的是語義上的關系,如:

書名=f(ISBN)“ISBN”是自變量X,“書名”是因變量或函數值Y。一般把X函數決定Y,或Y函數依賴于X表示為:

X→Y。10示例學生關系模式Students(SID,Sname,gender,college,Email)有以下函數依賴關系:SID→Sname,

SID→gender,

SID→college,

SID→Email11函數依賴定義設有關系模式R(A1,A2,…,An),X和Y均為{A1,A2,…,An}的子集,r是R的任一具體關系,t1、t2是r中的任意兩個元組;如果由t1[X]=t2[X]可以推導出t1[Y]=t2[Y],則稱X函數決定Y,或Y函數依賴于X,記為X→Y。122、非平凡的函數依賴如果X→Y,但Y不包含于X,則稱

X→Y是非平凡的函數依賴。Students(SID,Sname,gender,college,Email)的函數依賴:SID→Sname,SID→gender, SID→college,SID→Email均為非平凡的函數依賴。無特別聲明,我們討論的都是非平凡的函數依賴。133、平凡的函數依賴如果X→Y,但Y包含于X,則稱X→Y是平凡的函數依賴。例如:(SID,Sname)→Sname144、完全函數依賴、部分函數依賴如果X→Y,并且對于X的一個任意真子集X'都有X'?Y,則稱Y完全函數依賴于X,記作:如果X'→Y成立,則稱Y部分函數依賴于X,記作:155、傳遞函數依賴如果X→Y(非平凡函數依賴,并且Y?X)、Y→Z,則稱Z傳遞函數依賴于X。16例1設有關系模式S(Sno,Sname,Sdept,Dept_master),主鍵為Sno,則有如下函數依賴:由:可推出:176、候選鍵、主屬性、非主屬性設K為關系模式R的一個屬性或屬性組,若滿足:則稱K為關系模式R的候選鍵(也稱為候選碼)包含在候選鍵中的屬性為主屬性,不包含在任何候選鍵中的屬性稱為非主屬性。18例8-2有關系模式:圖書(書號,書名,出版日期,作者號,作者名,作者聯系電話,圖書價格),語義如下:每部圖書有唯一的書號;每個作者有唯一的作者號;每部圖書有唯一的作者,每個作者可以編寫多部圖書;19例8-2(續)每部圖書有唯一的出版日期和價格;每個作者有唯一的聯系電話;書名可能有重復;作者名可能有重復。判斷該關系模式是否存在傳遞函數依賴。20例8-2(續)由:書號→作者號

作者號→作者名

作者號→作者聯系電話

可推出:可見該關系模式存在傳遞函數依賴。21本章內容8.1關系規范化的意義8.2函數依賴8.3函數依賴的推理規則8.4范式8.5關系模式的分解準則228.3函數依賴的推理規則8.3.1Armstrong公理8.3.2閉包及候選鍵求解方法8.3.3極小函數依賴集238.3.1Armstrong公理函數依賴的推理規則最早出現在1974年W.W.Armstrong論文中,因此稱這些規則為Armstrong公理。自反律增廣律傳遞律合并規則分解規則偽傳遞規則復合規則241、自反律設有關系模式R(U,F),U為關系模式R上的屬性全集,F是R上的函數依賴集,X,Y,Z,W均是U的子集,(用XY表示X∪Y)若Y?X?U,則X→Y在R上成立,即一組屬性函數決定它的所有子集。例,對Students(SID,Sname,gender,college,Email),有:(SID,Sname)→Sname和(SID,Sname)→SID例,對Students(SID,Sname,gender,college,Email),有:(SID,Sname)→Sname和(SID,Sname)→SID252、增廣律若X→Y在R上成立

,且Z?U,則XZ→YZ在R上也成立。例:Students(SID,Sname,gender,college,Email)因:SID→Sname

成立,則:(SID,Email)→(Sname,Email)263、傳遞律若X→Y和Y→Z在R上成立,則X→Z在R上也成立。對:S(SID,Sname,Sdept,Dept_master)由:SID→Sdept,Sdept→Dept_master可以推出:SID→Dept_master274、合并規則若X→Y和X→Z在R上成立,則X→YZ在R上也成立。對:Students(SID,Sname,gender,college,Email)有:SID→Sname,SID→Email則有:SID→(Sname,Email)成立285、分解規則若X→Y和Z?Y在R上成立,則X→Z在R上也成立。對:Students(SID,Sname,gender,college,Email)

有:SID→(Sname,gender,college,Email)則有:SID→Email

成立296、偽傳遞規則若X→Y和YW→Z在R上成立,則XW→Z在R上也成立。borrow(ISBD,SID,borrow_time,return_time)的函數依賴:(ISBD,SID,borrow_time)→return_time

增加屬性IDentity,borrow(ISBD,SID,borrow_time,return_time,IDentity)有IDentity→SID,(ISBD,SID,borrow_time)→return_time則有:(ISBD,IDentity,borrow_time)→return_time307、復合規則若X→Y和W→Z在R上成立,則XW→YZ在R上也成立。對S(SID,Sname,Sdept,Dept_master)有函數依賴:

SID→Sname和Sdept→Dept_master則有:(SID,Sdept)→(Sname,Dept_master)318.3.2閉包及候選鍵求解方法對于一個關系模式R(U,F),引入了函數依賴集閉包概念,推導全部的函數依賴。321.函數依賴集的閉包定義:在關系模式R(U,F)中,U是R的屬性全集,F是R上的一組函數依賴。設X、Y是U的子集,對于關系模式R的任何一個關系r,若函數依賴X→Y都成立(即r中任意兩元組t,s,若t[X]=s[X],則t[Y]=s[Y])那么稱F邏輯蘊涵X→Y,或稱函數依賴X→Y可由F導出。所有被F邏輯蘊涵的函數依賴的全集稱為F的閉包,記作F+。33例8-3設有關系模式R(A,B,C,G,H,I)及其函數依賴集F={A→B,A→C,CG→H,CG→I,B→H}判斷A→H、CG→HI和AG→I是否屬于F+。34例8-3(續)解:根據Armstrong公理系統:(1)由:A→B和B→H,根據傳遞性,可推出A→H。(2)由:CG→H和CG→I,根據合并規則,可推出CG→HI。(3)由:A→C和CG→I,根據偽傳遞規則,可推出AG→I。因此,A→H、CG→HI和AG→I均屬于F+。35例8-4已知關系模式R(A,B,C,D,E,G)及其函數依賴集F:F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→BD,CE→AG}判斷BD→AC是否屬于F+。36例8-4(續)解:由D→EG,可推出:D→E,BD→BE…①又由BE→C,C→A,

可推出:BE→A,BE→AC…②由①、②,可推出BD→AC,因此BD→AC被F所蘊涵,即BD→AC屬于F+。37計算F+的過程步驟1:

初始,F+=F。步驟2:

對F+中的每個函數依賴f,在f上應用自反性和增廣性,將結果加入到F+中;對F+中的一對函數依賴f1和f2,如果f1和f2可以使用傳遞律結合起來,則將結果加入到F+中;對F+中的一對函數依賴f1和f2,如果能用合并規則、偽傳遞規則和復合規則,則將結果加入到F+中;對F+中的每個函數依賴f,如果能應用分解規則,將結果加入到F+中;38計算F+的過程(續)步驟3:重復步驟2,直到F+不再增大為止。例:有關系模式R<U,F>,U=(X,Y,Z),F={X→Y,Y→Z},應用Armstrong公理系統計算得出:F+={X→X,X→Y,X→Z,X→XY,X→YZ,X→XZ,Y→Y,Y→Z,Y→YZ,Z→Z,XY→X,XY→Y,XY→Z,XY→XY,XY→YZ,XY→XZ,XY→XYZ,XZ→X,XZ→Y,XZ→Z,XZ→XY,......}39函數依賴集的閉包(續)由于F+中包含大量的冗余信息,因此計算F+的全部函數依賴是不必要的。可用屬性集閉包來判斷X→Y是否為F所蘊涵。402、屬性集閉包判定函數依賴X→Y是否能由F導出的問題,可轉化為求X+并判定Y是否是X+子集的問題。即求函數依賴集閉包問題可轉化為求屬性集問題。定義:設有關系模式R(U,F),U為R的屬性集,F是R上的函數依賴集,X是U的一個子集(X?U)。用函數依賴推理規則可從F推出的函數依賴X→A中所有A的集合,稱為屬性集X關于F的閉包,記為X+(或X+F)。412、屬性集閉包(續)對關系模式R(U,F),求屬性集X相對于函數依賴集F的閉包X+的算法如下:步驟1:初始,X+=X。步驟2:如果F中有某個函數依賴Y→Z滿足Y?X+。

則X+=X+∪Z。步驟3:重復步驟2,直到X+

不再增大為止。42例8-5(續)步驟2:①對X+

中的X,∵有X→Y,∴X+=X+∪Y=XY②對X+

中的Y,∵有Y→Z,∴X+=X+∪Z=XYZ在函數依賴集F中,Z不出現在任何函數依賴的左部,因此X+將不會再擴大,所以最終X+=XYZ。43例8-5設有關系模式R(U,F),其中屬性集U={X,Y,Z,W},函數依賴集F={X→Y,Y→Z,W→Y},計算X+、(XW)+解:(1)計算X+步驟1:初始:X+=X。44例8-5(續)(2)計算(XW)+步驟1:初始:(XW)+=XW。步驟2:①對(XW)+

中的X,∵有X→Y,∴(XW)+=XW+∪Y=XWY②對(XW)+

中的Y,∵有Y→Z,∴(XW)+=XW+∪Z=XWYZ45例8-5(續)③對(XW)+

中的W,有W→Y,但Y已在(XW)+中,因此(XW)+

保持不變。④對(XW)+中的Z,由于Z不出現在任何函數依賴的左部,因此(XW)+

保持不變。最終(XW)+=XWYZ。46例8-6

設有關系模式R(U,F),其中U={A,B,C,D,E},F={(A,B)→C,B→D,C→E,(C,E)→B,(A,C)→B},計算(AB)+。解:步驟1:初始:(AB)+=AB。47例8-6(續)步驟2:①對(AB)+

中的A、B,∵有(A,B)→C,∴(AB)+=(AB)+∪C=ABC②對(AB)+

中的B,∵有B→D,∴(AB)+=(AB)+∪D=ABCD③對(AB)+

中的C,∵有C→E,∴(AB)+=(AB)+∪E=ABCDE48例8-6(續)至此,(AB)+

已包含了R中的全部屬性,因此(AB)+

計算完畢。最終(AB)+=ABCDE。49例8-7已知關系模式R=(A,B,C,D,E,G),其函數依賴集F為:F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→BD,CE→AG}求(BD)+,并判斷BD→AC是否屬于F+。50例8-7(續)解:(BD)+={B,D,E,G,C,A}由于{A,C}?(BD)+

,因此BD→AC可由F導出,即BD→AC屬于F+。51例8-8已知關系模式R(A,B,C,E,H,P,G),其函數依賴集F為:F={AC→PE,PG→A,B→CE,A→P,GA→B,GC→A,PAB→G,AE→GB,ABCP→H}證明BG→HE屬于F+。52例8-8(續)證:因為(BG)+={A,B,C,E,H,P,G},而{H,E}?(BG)+所以BG→HE可由F導出,即BG→HE屬于F+。53屬性集閉包(續)求屬性集閉包的另一個用途是:如果屬性集X的閉包X+包含了R中的全部屬性,則X為R的一個候選鍵。543、候選鍵的求解方法對于給定的關系模式R(A1,A2,…,An)和函數依賴集F,現將R的屬性分為如下四類:(1)L類:僅出現在函數依賴左部的屬性。(2)R類:僅出現在函數依賴右部的屬性。(3)N類:在函數依賴的左部和右部均不出現的屬性。(4)LR類:在函數依賴的左部和右部均出現的屬性。553、候選鍵的求解方法(續)對R中的屬性X,可有以下結論:(1)若X是L類屬性,則X一定包含在關系模式R的任何一個候選鍵中;若X+包含了R的全部屬性,則X為關系模式R的唯一候選鍵。(2)若X是R類屬性,則X不包含在關系模式R的任何一個候選鍵中。(3)若X是N類屬性,則X一定包含在關系模式R的任何一個候選鍵中。(4)若X是LR類屬性,則X可能包含在關系模式R的某個候選鍵中。56例8-9設有關系模式R(U,F),其中U={A,B,C,D},F={D→B,B→D,AD→B,AC→D},求R的所有候選鍵。由A、C兩個屬性是L類屬性,因此A、C兩個屬性必定在R的任何一個候選鍵中;又由(AC)+=ABCD,即(AC)+包含了R的全部屬性,因此,AC是R的唯一候選鍵。57例8-10設有關系模式R(U,F),其中U={A,B,C,D,E,G},F={A→D,E→D,D→B,BC→D,DC→A},求R的所有候選鍵。58例8-10(續)由:C、E兩個屬性是L類屬性,因此C、E兩個屬性必定在R的任何一個候選鍵中。由:G是N類屬性,故屬性G也必定在R的任何一個候選鍵中。又由:(CEG)+=ABCDEG,即(CEG)+包含了R的全部屬性,因此,CEG是R的唯一候選鍵。59例8-11設有關系模式R(U,F),其中U={A,B,C,D,E,G},F={AB→E,AC→G,AD→B,B→C,C→D},求R的所有候選鍵。60例8-11(續)由:A是L類屬性,故A必定在R的任何一個候選鍵中。由:E、G是兩個R類屬性,故E、G一定不包含在R的任何候選鍵中。由:A+=A≠ABCDEG,故A不能單獨作為候選鍵。61例8-11(續)由:B、C、D三個屬性均是LR類屬性則:這三個屬性中必有部分或全部在某個候選鍵中。將B、C、D依次與A結合,分別求閉包:

(AB)+=ABCDEG,因此AB為R的一個候選鍵;

(AC)+=ABCDEG,因此AC為R的一個候選鍵;

(AD)+=ABCDEG,因此AD為R的一個候選鍵。綜上所述,關系模式R共有三個候選鍵:AB、AC和AD。62例8-12設有關系模式R(U,F),其中U={A,B,C,D,E},F={A→BC,CD→E,B→D,E→A},求R的所有候選鍵。63例8-12(續)由:關系模式R中沒有L類、R類和N類屬性,所有的屬性都是LR類屬性。因此,先從A、B、C、D、E屬性中依次取出一個屬性,分別求它們的閉包: A+=ABCDE B+=BD C+=C D+=D E+=ABCDE64例8-12(續)

由:A+和E+都包含了R的全部屬性,得:A和E分別是R的一個候選鍵。

接下來,從R中任意取出兩個屬性,分別求他們的閉包。由于A、E已是R的候選鍵了,因此只需在C、D、E中進行選取即可。65例8-12(續)(BC)+=ABCDE(BD)+=BD(CD)+=ABCDE因此,BC和CD分別是R的一個候選鍵。至此,關系模式R的全部候選鍵為:A、E、BC和CD。668.3.3極小函數依賴集對于一個關系模式R(U,F),利用推理規則推導出其全部的函數依賴集是非常龐大的,但是每一個函數依賴集均等價于一個極小函數依賴集。678.3.3極小函數依賴集(續)對關系模式R(U,F),如果函數依賴集F滿足下列條件,則稱F為R的一個極小函數依賴集(或稱為最小依賴集、最小覆蓋),記為Fmin。

F中每個函數依賴的右部僅含有一個屬性。

F中每個函數依賴的左部不存在多余的屬性,即不存在這樣的函數依賴X→A,X有真子集Z使得F與(F-{X→A})∪{Z→A}等價。F中不存在多余的函數依賴,即不存在這樣的函數依賴X→A,使得F與F-{X→A}等價。68極小函數依賴集算法①

使F中每個函數依賴的右部都只有一個屬性。逐一檢查F中各函數依賴X→Y,若Y=A1A2…Ak(k≥2),則用{X→Aj|j=1,2,…k}取代X→Y。②

去掉各函數依賴左部多余的屬性。逐一取出F中各函數依賴X→A,設X=B1B2…Bm,逐一檢查Bi(i=1,2,…,m),如果A∈(X-Bi)F+,則以X-Bi取代X。69極小函數依賴集算法(續)③

去掉多余的函數依賴。逐一檢查F中各函數依賴X→A,令G=F-{X→A},若A∈XG+,則從F中去掉X→A函數依賴。70例8-13設有如下兩個函數依賴集F1、F2,分別判斷它們是否是極小函數依賴集。F1={AB→CD,BE→C,C→G}F2={A→D,B→A,A→C,B→D,D→C}71例8-13(續)解:對F1,由于函數依賴AB→CD的右部不是單個屬性,因此,該函數依賴集不是極小函數依賴集。對F2,由于A→C可由A→D和D→C導出,因此A→C是F2中的多余函數依賴,所以F2也不是極小函數依賴集。72例8-14設有關系模式R(U,F),其中U={A,B,C},F={A→BC,B→C,AC→B},求其極小函數依賴集Fmin。解:

讓F中每個函數依賴的右部為單個屬性。結果為:G1={A→B,A→C,B→C,AC→B}73例8-14(續)

分析AC→B:

第1種情況:去掉C,計算AG1+=ABC,包含了B,因此AC→B中C是多余屬性,AC→B可化簡為A→B。第2種情況:去掉A,計算CG1+=C,不包含B,因此AC→B中A不是多余屬性。去掉左部多余屬性后的函數依賴集為:G2={A→B,A→C,B→C,A→B}={A→B,A→C,B→C}74例8-14(續)去掉G2中多余的函數依賴。

對A→B,令G3={A→C,B→C},AG3+=AC,不包含B,因此A→B不是多余的函數依賴。

對A→C,令G4={A→B,B→C},AG4+=ABC,包含了C,因此A→C是多余的函數依賴,應去掉。

對B→C,令G5={A→B,A→C},BG5+=B,不包含C,因此B→C不是多余的函數依賴。最終的極小函數依賴集Fmin={A→B,B→C}。75例8-15設有關系模式R(U,F),其中U={A,B,C},

F={AB→C,A→B,B→A}求其極小函數依賴集Fmin。76例8-15(續)分析AB→C:第1種情況:去掉B,計算AF+=ABC,包含C,因此B是多余屬性,AB→C可化簡為A→C。故F簡化為:G1={A→C,A→B,B→A}第2種情況:去掉A,計算BF+=ABC,包含C,因此A是多余屬性,AB→C可化簡為B→C。故F可簡化為:G2={B→C,A→B,B→A}77例8-15(續)(2)去掉G1和G2中的多余函數依賴。

去掉G1中的多余函數依賴。對A→C,令G11={A→B,B→A},AG11+=AB,不包含C,因此A→C不是多余的函數依賴。對A→B,令G12={A→C,B→A},AG12+=C,不包含B,因此A→B不是多余的函數依賴。

對B→A,令G13={A→C,A→B},BG13+=B,不包含A,因此B→A不是多余的函數依賴。最終的極小函數依賴集Fmin1=G1={A→C,A→B,B→A}。78例8-15(續)②去掉G2中的多余函數依賴。

對B→C,令G21={A→B,B→A},BG21+=AB,不包含C,因此B→C不是多余的函數依賴。

對A→B,令G22={B→C,B→A},AG22+=A,不包含B,因此A→B不是多余的函數依賴。

對B→A,令G23={B→C,A→B},BG23+=BC,不包含A,因此B→A不是多余的函數依賴。最終的極小函數依賴集Fmin2=G2={B→C,A→B,B→A}。79本章內容8.1關系規范化的意義8.2函數依賴8.3函數依賴的推理規則8.4范式8.5關系模式的分解準則808.4范式關系規范化是指導將有“不良”函數依賴的關系模式轉換為良好的關系模式的理論。這里涉及到范式的概念,不同的范式表示關系模式遵守的不同的規則。

818.4范式關系數據庫中的關系要滿足一定的要求,滿足不同程度要求的為不同的范式(NormalForm)。范式的種類:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)828.4范式(續)831NF2NF3NFBCNF4NF5NF8.4范式(續)“第幾范式”表示關系模式滿足的條件。對關系模式的屬性間的函數依賴加以不同的限制,就形成了不同的范式。范式是遞進的。規范化的目的是設計“好的”關系模式。從而消除操作異常。848.4.1第一范式定義:不包含非原子項屬性的關系都是第一范式(1NF)的關系。在1NF的關系中每一列都是不可分割的基本數據項,同一列中不能有多個值

。858.4.1第一范式(續)86非第一范式的關系系

名高級職稱人數教授副教授計算機系610信息管理系35通信工程系48規范化成第一范式的關系系

名教授人數副教授人數計算機系610信息管理系35通信工程系488.4.2第二范式如果R(U,F)∈1NF,并且R中的每個非主屬性都完全函數依賴于主鍵,則R(U,F)∈2NF。可知:若某個第一范式關系的主鍵只由一個列組成,則這個關系就是第二范式關系。87示例1S-B-B(SID,Sname,Email,ISBN,bname,category,price,borrow_time,return_time)主鍵是(SID,ISBN,borrow_time),由于有Email只依賴于SID,因此(SID,ISBN,borrow_time)Email。結論:S-B-B不是第二范式關系。88分解方法(1)用組成主鍵的屬性集合的每一個子集作為主鍵構成一個關系模式。(2)將依賴于這些主鍵的屬性放置到相應的關系模式中。(3)最后去掉只由主鍵的子集構成的關系模式。89示例1--分解S-B-B步驟1(1)將該關系模式分解為如下七個關系模式(下劃線部分表示主鍵):Students(SID,…)Book(ISBN,…)Borrow(borrow_time,…)Students-book(SID,ISBN,…)Students-borrow(SID,borrow_time,…)book-borrow(ISBN,borrow_time,…)Students-book-borrow(SID,ISBN,borrow_time,)90示例1--分解S-B-B步驟2(2)將依賴于這些主鍵的屬性放置到相應的關系模式中,形成如下七個關系模式:①

Students(SID,Email)②

Book(ISBN,Bname,category,price)③

Borrow(borrow_time)④

Students-book(SID,ISBN)⑤

Students-borrow(SID,borrow_time)⑥

book-borrow(ISBN,borrow_time)⑦

Students-book-borrow(SID,ISBN,borrow_time,return_time)91示例1--分解S-B-B步驟3(3)去掉只由主鍵的子集構成的關系模式。刪除③、④、⑤、⑥關系模式,S-B-B關系模式最終被分解為:①Students(SID,Email)②Book(ISBN,Bname,category,price)③Students-book-borrow(SID,ISBN,borrow_time,return_time)92例8-16

有關系模式:S-D-C(Sno,Sname,Ssex,Sdept,Dept_master,Cno,Grade),判斷是否為第二范式關系,如不是,分解到第二范式。因為Sno→Sname,因此存在:(Sno,Cno)Sname結論:S-D-C不是第二范式關系。93例8-16--分解S-D-C步驟1(1)將該關系模式分解為如下三個關系模式(下劃線部分表示主鍵):S-D(Sno,…)C(Cno,…)S-C(Sno,Cno,…)94例8-16--分解S-D-C步驟2(2)將依賴于這些主鍵的屬性放置到相應的關系模式中,形成如下三個關系模式:S-D(Sno,Sname,Ssex,Sdept,Dept_master)C(Cno)S-C(Sno,Cno,Grade)95例8-16--分解S-D-C步驟3(3)去掉只由主鍵的子集構成的關系模式,也就是去掉C(Cno)關系模式。

S-D-C關系模式最終被分解為:S-D(Sno,Sname,Ssex,Sdept,Dept_master)S-C(Sno,Cno,Grade)96例8-16(續)S-D(Sno,Sname,Ssex,Sdept,Dept_master)存在插入異常。978.4.3第三范式定義:如果R(U,F)∈2NF,并且所有的非主屬性都不傳遞依賴于主鍵,則R(U,F)∈3NF。關系模式S-D(Sno,Sname,Ssex,Sdept,Dept_master),主鍵為Sno,由于有: 因此: 結論:S-D不是3NF98分解方法(1)對于不是候選鍵的每個決定因子,從關系模式中刪去依賴于它的所有屬性。(2)新建一個關系模式,新關系模式中包含原關系模式中所有依賴于該決定因子的屬性。(3)將決定因子作為新關系模式的主鍵。99分解S-DS-D分解后的關系模式如下:S(Sno,Sname,Ssex,Sdept),Sdept為引用D的外鍵D(Sdept,Dept_master)S、D關系模式中不存在傳遞依賴,因此是3NF。100模式分解至此,S-D-C(Sno,Sname,Ssex,Sdept,Dept_master,Cno,Grade)被分解為三個關系模式S(Sno,Sname,Ssex,Sdept),Sdept為引用D的外鍵D(Sdept,Dept_master)S-C(Sno,Cno,Grade),Sno為引用S的外鍵。1018.4.4Boyce-Codd范式2NF和3NF都是不允許存在對主鍵的部分函數依賴和傳遞函數依賴,但這些定義并沒有考慮對候選鍵的依賴問題。第三范式的這些不足導致了另一種更強范式的出現,即Boyce-Codd范式,簡稱BC范式或BCNF(BoyceCoddNormalForm)。1028.4.4Boyce-Codd范式(續)BCNF是由Boyce和Codd共同提出的,它比3NF更進了一步,通常認為BCNF是修正的3NF。BCNF考慮了關系中對所有候選鍵的函數依賴。1038.4.4Boyce-Codd范式(續)定義:如果R(U,F)∈1NF,若X→Y且Y?X時X必包含候選鍵,則R(U,F)∈BCNF當且僅當關系中的每個函數依賴的決定因子都是候選鍵時,該范式即為Boyce-Codd范式(BCNF)。1048.4.4Boyce-Codd范式(續)大多數情況下3NF的關系模式都是BCNF的。下面是有可能違反BCNF的情形:關系中包含兩個(或更多)復合候選鍵。候選鍵的屬性有重疊,通常至少有一個重疊的屬性。105ClientInterview部分數據示例106clientNointerviewDateinterviewTimestaffNoroomNoC0012022-10-2010:30Z005R101G0022022-10-2012:00Z005R101G0052022-10-2010:30Z002R102G0022022-10-2810:30Z005R102

ClientInterview語義每個參與洽談的員工被分配到一個特定的房間中進行一個房間在一個工作日內可以被分配多次,但一個員工在特定工作日內只在一個房間洽談客戶一個客戶在某個特定的日期只能參與一次洽談,但可以在不同的日期多次參與洽談。107ClientInterview關系模式分析ClientInterview關系有三個候選鍵:(clientNo,interviewDate)(staffNo,interviewDate,interviewTime)(roomNo,interviewDate,interviewTime)現選擇(clientNo,interviewDate)作為該關系的主鍵108ClientInterview關系模式分析(續)ClientInterview具有如下函數依賴關系:fd1:(clientNo,interviewDate)→interviewTime,staffNo,roomNofd2:(staffNo,interviewDate,interviewTime)→clientNofd3:(roomNo,interviewDate,interviewTime)→stuffNo,ClientNofd4:(staffNo,interviewDate)→roomNo109ClientInterview關系模式分析(續)fd4:(staffNo,interviewDate)→roomNo(stuffNo,interviewDate)不是該關系的候選鍵,而BCNF要求關系中所有的決定因子都必須是候選鍵,因此不是BCNF。存在操作異常,需要模式分解。110ClientInterview模式分解111

Interview部分數據示例clientNointerviewDateinterviewTimestaffNoC0012022-10-2010:30Z005G0022022-10-2012:00Z005G0052022-10-2010:30Z002G0022022-10-2810:30Z005StuffRoom部分數據示例staffNointerviewDateroomNoZ0052022-10-20R101Z0022022-10-20R102Z0052022-10-28R1028.4.5規范化小節在關系數據庫中,對關系模式的基本要求是要滿足第一范式。但第一范式的關系會存在數據操作異常,因此,人們尋求解決這些問題的方法,這是規范化引出的目的。112本章內容8.1關系規范化的意義8.2函數依賴8.3函數依賴的推理規則8.

溫馨提示

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

評論

0/150

提交評論