數(shù)據(jù)庫原理與應(yīng)用教程NO16_第1頁
數(shù)據(jù)庫原理與應(yīng)用教程NO16_第2頁
數(shù)據(jù)庫原理與應(yīng)用教程NO16_第3頁
數(shù)據(jù)庫原理與應(yīng)用教程NO16_第4頁
數(shù)據(jù)庫原理與應(yīng)用教程NO16_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4.3關(guān)系模式的分解*4.3.1模式分解問題定義4.11設(shè)有關(guān)系模式R(U),屬性集為U,R1、…、Rk都是U的子集,并且有R1∪R2∪…∪Rk=U。 關(guān)系模式R1、…、Rk的集合用ρ表示,ρ={R1,…,Rk}。 用ρ代替R的過程稱為關(guān)系模式的分解。這里ρ稱為R的一個分解,也稱為數(shù)據(jù)庫模式。.泛關(guān)系模式Rr泛關(guān)系數(shù)據(jù)庫模式ρ={R1,…,Rk}σ=<r1,…,rk>數(shù)據(jù)庫實例(數(shù)據(jù)庫)這里就有兩個問題:①σ和r是否等價? 用“無損分解”表示。②{F1,…,Fk}與F是否等價?用“保持依賴”表示。計算機中的數(shù)據(jù)并不是存儲在泛關(guān)系r中,而是存儲在數(shù)據(jù)庫ρ中。R上有函數(shù)依賴集F,每一個Ri上有一個函數(shù)依賴集Fi,{F1,…,F(xiàn)k}.4.3.2無損連接分解定義4.12:設(shè)R是一個關(guān)系模式,F(xiàn)是R上的一個FD集。 R分解成數(shù)據(jù)庫模式ρ={R1,…,Rk}。如果對R中滿足F的每一個關(guān)系r,都有r=πR1(r)?πR2(r)?…?πRk(r) 那么稱分解ρ相對于F是“無損連接分解”(losslessjoindecomposition),簡稱為“無損分解”,否則稱為“損失分解”(lossydecomposition)。.例4.10(1)未丟失信息的分解:r1?r2=r

(2)丟失信息的分解:r1?r2≠r

211211111111CAr2BAr1CBAr32142131131213214114111411CBAr1?r2CAr2BAr1CBAr多出來的元組稱為寄生元組(額外元組)丟失的元組稱為懸掛元組。.在泛關(guān)系模式R分解成數(shù)據(jù)庫模式ρ={R1,…,Rk}時,泛關(guān)系r在ρ的每一模式Ri(1≤i≤n)上投影后再連接起來,比原來r中多出來的元組,稱為“寄生元組”(SpuriousTuple)。實際上,寄生元組表示著錯誤的信息。寄生元組也就是4.1.3節(jié)模式設(shè)計準則4中提到的額外元組(在上節(jié)NO15中)。無損的‘損’指的是信息丟失而不是元組丟失.如果一個分解不具有‘無損’的性質(zhì),那么泛關(guān)系在投影連接后就可能產(chǎn)生寄生元組。寄生元組表示著錯誤的信息.r的投影連接表達式πR1(r)?…?πRk(r)用符號mρ(r)表示,即mρ(r)=?πRi(r)。設(shè)ρ={R1,…,Rk}是關(guān)系模式R的一個分解,r是R的任一關(guān)系,ri=πRi(r)(1≤i≤k), 那么有下列性質(zhì):①r

mρ(r);②若s=mρ(r),則πRi(s)=ri;③mρ(mρ(r))=mρ(r),這個性質(zhì)稱為冪等性 (idempotent)。r=mρ(r)時就是無損連接分解.4.3.3無損分解的測試算法(算法4.3)①構(gòu)造一張k行n列的表格,每列對應(yīng)一個屬性Aj,每行對應(yīng)一個模式Ri。如果Aj在Ri中,那么在表格的第i行第j列處填上符號aj,否則填上bij。②把表格看成模式R的一個關(guān)系,反復(fù)檢查F中每個FD在表格中是否成立,若不成立,則修改表格中的值。 修改方法如下:對函數(shù)依賴X→Y,找X相等的行,改Y的分量值:如果Y值中有一個是aj,那么另一個也改成aj;如果沒有aj,那么用其中一個bij替換另一個值(盡量把下標ij改成較小的數(shù))。一直到表格不能修改為止。(這個過程稱為‘追蹤chase’過程)③若修改的最后一張表格中有一行是全a,即a1a2…an,那么稱ρ相對于F是無損分解,否則稱損失分解。

.例4.11設(shè)關(guān)系模式R(ABCD),R分解成ρ={AB,BC,CD}。如果R上成立的函數(shù)依賴集F1={B→A,C→D},那么ρ相對于F1是否無損分解?(無損分解)a4

a3b32b31CDa4

a3b32b31CDa4

a3a2a1BCb24

a3a2b21BCb14

b13a2a1ABb14

b13a2a1ABDCBADCBA.續(xù)例4.11設(shè)關(guān)系模式R(ABCD),R分解成ρ={AB,BC,CD}。如果R上成立的函數(shù)依賴集F1={A→B,C→D},那么ρ相對于F1是否無損分解?(損失分解)a4

a3b32b31CDa4

a3b32b31CDa4

a3a2b21BCb24

a3a2b21BCb14

b13a2a1ABb14

b13a2a1ABDCBADCBA再看例4-12(P153).ABCDE例:設(shè)R=(ABCDE)分解成ρ{AD,AB,BE,CDE,AE}函數(shù)依賴F={A→C,B→C,C→D,DE→C,CE→A}判斷是否無損連接分解。解:按條件給出初始表a1b12b13a4b15ADa1a2b23b24b25b31a2b33b34a5b41b42a3a4a5a1b52b53b54a5ABBECDEAE.ABCDEa1b12b13a4b15ADa1a2b13a4b25a1a2a3a4a5a1b42a3a4a5a1b52a3a4a5ABBECDEAE通過追蹤過程(CHASE)最終得表:由于第3行全為a,所以該分解是無損連接分解。.定理4.6設(shè)ρ={R1,R2}是關(guān)系模式R的一個分解,F(xiàn)是R上成立的FD集,那么分解ρ相對于F是無損分解的充分必要條件是 (R1∩R2)→(R1-R2) 或(R1∩R2)→(R2-R1)。(可用CHASE(追蹤)算法證明)定理4.7如果FDX→Y在模式R上成立,且X∩Y=φ,那么R分解成ρ={R-Y,XY}是無損分解。.4.3.4保持函數(shù)依賴的分解定義4.13:設(shè)F是屬性集U上的FD集,Z是U的子集,F(xiàn)在Z上的投影用πZ(F)表示,定義為πZ(F)={X→Y|X→Y∈F+,且XY

Z}設(shè)ρ={R1,…,Rk}是R的一個分解,F(xiàn)是R上的FD集如果有(∪πRi(F))+=F+, 那么稱分解ρ保持函數(shù)依賴集F的分解。根據(jù)定義,測試一個

分解是否保持FD,比較可行的方法是逐步驗證F中的每個FD是否被(∪πRi(F))+=F+蘊涵.兩個數(shù)據(jù)庫模式的等價問題,這種等價包括數(shù)據(jù)等價和依賴等價兩個方面。數(shù)據(jù)等價是指兩個數(shù)據(jù)庫實例應(yīng)表示同樣的信息內(nèi)容,用“無損分解”衡量。如果是無損分解,那么對泛關(guān)系反復(fù)的投影和連接都不會丟失信息。依賴等價是指兩個數(shù)據(jù)庫模式應(yīng)有相同的依賴集閉包。在依賴集閉包相等情況下,數(shù)據(jù)的語義是不會出差錯的。

違反數(shù)據(jù)等價或依賴等價的分解不是一個好的模式設(shè)計。一個無損連接分解不一定是保持函數(shù)依賴的一個保持函數(shù)依賴的分解也不一定是無損連接的

沒有必然聯(lián)系(見下例).例:設(shè)關(guān)系模式R(ABC),ρ={AB,AC}是R的一個分解。試分析分別在各種FD的情況下,ρ是否具有無損分解和保持FD的分解特性。解:①相對于F1={A→B},分解ρ是無損分解, 且保持FD的分解。②相對于F2={A→C,B→C},分解ρ是無損分解, 但不保持FD集(丟失了B→C)。③相對于F3={B→A},分解ρ是損失分解, 但保持FD集的分解。④相對于F4={C→B,B→A},分解ρ是損失分解, 且不保持FD集(丟失了C→B)。.保持FD分解相對于Fρ={AB,AC}B→Aρ={AB,AC}B→Aρ={AB,AC}A→Cρ={AB,AC}A→BabaACbaaAB丟失C→B損失CBA(4)F4={C→B,B→A}abaACbaaAB保持損失CBA(3)F3={B→A}abaACbaaAB丟失B→C無損CBA(2)F2={A→C,B→C}abaACbaaAB保持無損CBA(1)F1={A→B}.4.4關(guān)系模式的范式關(guān)系模式的好與壞,用什么標準衡量?這個標準就是模式的范式(NormalForms,簡記為NF)。范式的種類與數(shù)據(jù)依賴有著直接的聯(lián)系。范式的概念由E.F.Codd于1971年提出。(發(fā)展過程見P155)1NF是關(guān)系模式的基礎(chǔ);在數(shù)據(jù)庫設(shè)計中最常用的是3NF和BCNF。.各種范式之間的關(guān)系.4.4.1第一范式(1NF)定義4.14:如果關(guān)系模式R所有的屬性均為簡單屬性,即每個屬性都是不可再分的,則稱R屬于第一范式,簡稱1NF,記作R∈1NF。1NF是關(guān)系模式應(yīng)具備的最起碼的條件。第一范式可能具有大量的數(shù)據(jù)冗余,具有插入異常、刪除異常和更新異常等弊端。例如關(guān)系模式SCD屬于1NF,它既存在完全函數(shù)依賴,又存在部分函數(shù)依賴和傳遞函數(shù)依賴??朔@些弊端的方法是用投影運算將關(guān)系分解,去掉過于復(fù)雜的函數(shù)依賴關(guān)系,向更高一級的范式進行轉(zhuǎn)換。.4.4.2第二范式(2NF)定義4.15:如果關(guān)系模式R是1NF,且每個非主屬性完全函數(shù)依賴于候選鍵,那么稱R是第二范式(2NF)的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是2NF,則稱數(shù)據(jù)庫模式為2NF的數(shù)據(jù)庫模式。

(即.沒有對候選鍵的部分函數(shù)依賴)

從1NF中消除非主屬性對主鍵(主碼)的部分函數(shù)依賴得到2NF.分解時遵循“一事一地”的基本原則:一個關(guān)系只描述一個實體或聯(lián)系。.屬性集X非主屬性A鍵違反2NF的局部依賴的情況示意圖:. 本章開始例:教學管理數(shù)據(jù)庫(P137)SCD(SNo,SN,Age,Dept,MN,CNo,Score)SNoSNAgeDeptMNCNoScoreS1趙亦17計算機劉偉C190S1趙亦17計算機劉偉C285S2錢爾18信息王平C557S2錢爾18信息王平C680S2錢爾18信息王平C7…主鍵:(SNO,CNO),存在數(shù)據(jù)冗余、修改、刪除、插入異常的弊病。原因之一是存在部分函數(shù)依賴。.如果把SCD分解成:(將部分函數(shù)依賴分離出來)SD(SNo,SN,Age,Dept,MN)C(SNo,CNo,SCORE)SD與C都是2NF模式。部分函數(shù)依賴消失,分數(shù)關(guān)系C不存在冗余、修改、刪除、插入異常。但還是有系、系主任的冗余和操作異常。說明2NF不是理想的模式分解。.算法4.5分解成2NF模式集的算法 設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD:X→Z,并且Z是非主屬性,X?W,那么W→Z就是一個部分函數(shù)依賴。此時應(yīng)把R分解成兩個模式 R1(XZ),主鍵是X;(將部分依賴分解出來) R2(Y),其中Y=U-Z,主鍵仍是W, 外鍵是X(REFERENCES參照R1)。 利用外鍵和主鍵的連接可以從R1和R2重新得到R。 如果R1和R2還不是2NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個關(guān)系模式都是2NF為止。.定義4.16:如果關(guān)系模式R是1NF,且每個非主屬性都不傳遞函數(shù)依賴于R的候選鍵,那么稱R屬于第三范式(3NF)的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是3NF,則稱其為3NF的數(shù)據(jù)庫模式。

4.4.3第三范式(3NF).例:在上邊例中,SD(SNo,SN,Age,Dept,MN)主鍵SNO,無部分函數(shù)依賴,是2NF模式。SD中存在函數(shù)依賴SNO→Dept和Dept→MN,那么SNO→MN就是一個傳遞依賴,SD不是3NF模式。此時也會出現(xiàn)冗余和異常操作。譬如一個系有500學生,那么系和系主任就會重復(fù)500次。還有操作異常。若將SD分解成S(SNo,SN,Age,Dept)和D(Dept,MN)已無傳遞函數(shù)依賴,S、D都是3NF模式,冗余和操作異常消失。.算法4.6分解成3NF模式集的算法 設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FDX→Z。并且Z是非主屬性,Z

X,X不是候選鍵,這樣W→Z就是一個傳遞依賴。此時應(yīng)把R分解成兩個模式: R1(XZ),主鍵是X;(將傳遞依賴分解出來) R2(Y),其中Y=U-Z,主鍵仍是W, 外鍵是X(REFERENCES參照R1)。利用外鍵和主鍵相匹配機制,R1和R2通過連接可以重新得到R。 如果R1和R2還不是3NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個關(guān)系模式都是3NF為止。

.由定義可看出:局部依賴必定蘊涵傳遞依賴的存在定理4.8:如果R是3NF模式,那么R也是2NF模式。證明:只要證明模式中部分依賴的存在蘊涵著傳遞依賴即可。設(shè)A是R的一個非主屬性,K是R的一個候選鍵,且K→A是一個部分依賴。那么R中必存在某個K’?K,有K’→A成立。由于A是非主屬性,因此A∩KK’=φ。從K’?K,可知K’→K,但K→K’成立。因而從K→K’和K’→A可知K→A是一個傳遞依賴。

部分依賴和傳遞依賴是模式產(chǎn)生冗余和異常的兩個重要原因。由于3NF模式中不存在非主屬性對候選鍵的部分依賴和傳遞依賴,因此消除了很大一部分存儲異常,具有較好的性能。.4.4.4BCNF(Boyce–CoddNF)定義4.17:如果關(guān)系模式R∈1NF,且所有的函數(shù)依賴X→Y(Y∈X),決定因素X都包含了R的一個候選鍵,則稱R屬于BC范式,記作R∈BCNF。

(3NF不一定是BCNF)[例4-19]設(shè)有關(guān)系模式SNC(SNo,SN,CNo,Score)假設(shè)學生無重名,SNoSN。候選鍵:(SNo,CNo),(SN,CNo)唯一非主屬性Score不存在對鍵的部分函數(shù)依賴及傳遞函數(shù)依賴,所以是3NF但存在著主屬性對鍵的部分函數(shù)依賴:(SNo,CNo)SN,(SN,CNo)SNo,所以SNC不是BCNF。

.定理:如果R是BCNF模式,那么R也是3NF模式。證明:設(shè)R是BCNF,但不是3NF,那么R上必存在傳遞依賴X→Y,Y→A,這里X是R的鍵,A∈Y,Y→X。顯然Y不包含R的鍵,否則Y→X也成立。因此Y→A違反了BCNF的定義,與假設(shè)R是BCNF矛盾。

.

無損分解成BCNF模式集的算法(1)令ρ={R}。(2)如果ρ中所有模式都是BCNF,則轉(zhuǎn)(4)。(3)如果ρ中有一個關(guān)系模式S不是BCNF,則S中必能找到一個函數(shù)依賴X→A且X不是S的候選鍵,且A不屬于X,設(shè)S1=XA,S2=S-A,用分解{S1,S2}代替S,轉(zhuǎn)(2)。(4)分解結(jié)束,輸出ρ。

這個算法是從泛關(guān)系模式R出發(fā),去尋找一個滿足條件的BCNF模式集,因此稱為“分解算法”。這個算法能保證把R無損分解成ρ,但不一定能保證ρ能保持FD。.F={SNo→SN,SN→SNo,(SNo,CNo)→Score,(SN,CNo)→Score}前例:關(guān)系模式SNC(SNo,SN,CNo,Score)假設(shè)學生無重名,SNoSN。候選鍵:(SNo,CNo),(SN,CNo)(1)令ρ={SNC(SNo,SN,CNo,Score)}。(2)經(jīng)過前面分析可知,ρ中關(guān)系模式不屬于BCNF。(3)考慮SNo→SN,由于SNo不是候選鍵,且SN不屬于SNo.用分解{S1(SNo,SN),S2(SNo,CNo,Score)}代替SNC。(4)分解結(jié)果為:S1(SNo,SN)描述學生實體;S2(SNo,CNo,Score)描述學生與課程的聯(lián)系。都屬于BCNF..(1)如果Fmin中有一函數(shù)依賴X→A,且XA=R,則輸出ρ={R},轉(zhuǎn)(4)。(2)如果R中某些屬性與Fmin中所有依賴的左部和右部都無關(guān),則將它們構(gòu)成關(guān)系模式,從R中將它們分出去,單獨構(gòu)成一個模式。(3)對于Fmin中的每一個函數(shù)依賴X→A,都單獨構(gòu)成一個關(guān)系子模式XA。若Fmin中有X→A1,X→A2,…,X→An,則可以用模式XA1A2…An取代n個模式XA1,XA2,…,XAn。(4)停止分解,輸出ρ。

看例4-16:(P159)

算法4.6把一個關(guān)系模式分解為3NF,使它具有保持函數(shù)依賴性。.算法4.7把一個關(guān)系模式分解為3NF,使它既具有無損連接性又具有保持函數(shù)依賴性。(1)根據(jù)算法4.6求出保持函數(shù)依賴的分解:ρ={R1,R2,…,Rk}。(2)判定ρ是否具有無損連接性,若是,轉(zhuǎn)(4)。(3)令ρ=ρ∪{X}={R1,R2,…,Rk,X},其中X是R的候選鍵。(4)輸出ρ。見例4-17(P160).例:設(shè)關(guān)系模式R(ABCDE), R的最小依賴集為{A→B,C→D}。從依賴集可知R的候選鍵為ACE。(L、N類計算)按算法4-6,根據(jù)最小依賴集,保持函數(shù)依賴的分解ρ={AB,CD}。按算法4-7,再加入由候選鍵組成的模式ACE。因此最后結(jié)果ρ={AB,CD,ACE}是一個3NF模式集且ρ相對于該依賴集是無損分解且保持FD。.關(guān)系模式R相對于函數(shù)依賴集F分解成數(shù)據(jù)庫模式ρ={R1,…,Rk},一般應(yīng)具有三個特性:①ρ是BCNF模式集,或3NF模式集;②

無損分解,即對于R上任何 滿足F的泛關(guān)系應(yīng)滿足r=mρ(r);③

保持函數(shù)依賴集F,即(∪πRi(F))?F。數(shù)據(jù)庫設(shè)計者在進行關(guān)系數(shù)據(jù)庫設(shè)計時,應(yīng)作權(quán)衡,盡可能使數(shù)據(jù)庫模式保持最好的特性。一般盡可能設(shè)計成BCNF模式集。如果設(shè)計成BCNF模式集時達不到保持FD的特點,那么只能降低要求,設(shè)計成3NF模式集,以求達到保持FD和無損分解的特點。

一個好的模式設(shè)計方法應(yīng)符合三條原則:表達性、分離性和最小冗余性。.4.4.5多值依賴與第四范式多值依賴的定義假設(shè)學校中一門課程可由多名教師講授,教學中他們使用相同的一套參考書。課程C教師T參考書B數(shù)據(jù)庫原理數(shù)據(jù)結(jié)構(gòu)吳勝利陳晨王平張京生數(shù)據(jù)庫原理與應(yīng)用數(shù)據(jù)庫系統(tǒng)SQLServer2000算法與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)教程關(guān)系CTB.CTB轉(zhuǎn)化成規(guī)范化的關(guān)系如下圖所示:課程C教師T參考書B數(shù)據(jù)庫原理數(shù)據(jù)庫原理數(shù)據(jù)庫原理數(shù)據(jù)庫原理數(shù)據(jù)庫原理數(shù)據(jù)庫原理數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)吳勝利吳勝利吳勝利陳晨陳晨陳晨王平王平張京生張京生數(shù)據(jù)庫原理與應(yīng)用數(shù)據(jù)庫系統(tǒng)SQLServer2000數(shù)據(jù)庫原理與應(yīng)用數(shù)據(jù)庫系統(tǒng)SQLServer2000算法與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)教程算法與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)教程數(shù)據(jù)冗余大

插入異常

刪除異常

C與T間的聯(lián)系被稱為多值依賴

多個T對應(yīng)一個C一個確定的C值,與其所對應(yīng)的一組T值與B值無關(guān).例:設(shè)關(guān)系模式R(DN,TN,SN)分別代表系名,教師名,學生名教師與系有直接聯(lián)系,但與學生無直接聯(lián)系。學生與系有直接聯(lián)系。教師與學生之間的聯(lián)系是間接聯(lián)系。將間接聯(lián)系的屬性放在一個關(guān)系里出問題。若系里有50個教師,500名學生,則關(guān)系中將出現(xiàn)25000條記錄。一個系有多名教師(一對多),多名學生(一對多),教師與學生無直接聯(lián)系。系與教師之間、系與學生之間的聯(lián)系被稱為多值依賴。.定義4.18設(shè)有關(guān)系模式R(U),U是屬性全集,X、Y、Z是屬性集U的子集,且Z=U-X-Y,如果對于R的任一關(guān)系,對于X的一個確定值,存在Y的一組值與之對應(yīng),且Y的這組值僅僅決定于X的值而與Z值無關(guān),此時稱Y多值依賴于X,或X多值決定Y,記作X→→Y。若X→→Y且Z=U-X-Y≠Φ,則稱X→→Y是非平凡的多值依賴(MultivaluedDependenceMVD),否則稱為平凡的多值依賴。.多值依賴公理及其推論多值依賴公理

增廣律:如果X→→Y,V?W?U,則WX→→VY。傳遞律:如果X→→Y,Y→→Z,則X→→Z-Y。補余律:如果X→→Y,則X→→U-X-Y。函數(shù)依賴公理與多值依賴混合公理復(fù)制規(guī)則:從FD導(dǎo)出MVD,如果X→Y,則X→→Y。接合規(guī)則:從MVD導(dǎo)出FD:如果X→→Y,ZY,且存在WU有W∩Y=?,W→Z,則X→Z。

多值依賴推論合并律:如果X→→Y,X→→Z,則X→→YZ。偽傳遞律:如果X→→Y,WY→→Z,則XW→→(Z-W-Y)。分解律:如果X→→Y,X→→Z,則X→→(Y∩Z),X→→(Y-Z),X→→(Z-Y)?;旌蟼蝹鬟f律:如果X→→Y,XY→→Z,則X→→(Z-Y)。.第四范式(4NF)定義定義4.19設(shè)有一關(guān)系模式R(U),U是其屬性全集,X、Y是U的子集,D是R上的數(shù)據(jù)依賴集。如果對于任一多值依賴X→→Y,此多值依賴是平凡的,或者X包含了R的一個候選關(guān)鍵字,則稱R是第四范式的關(guān)系模式,記為R∈4NF。一個BCNF的關(guān)系模式不一定是4NF4NF是BCNF的推廣一個BCNF的關(guān)系模式不一定是4NF

.第四范式(4NF)的分解(1)令ρ={R}。(2)如果ρ中所有模式Ri都是4NF,則轉(zhuǎn)(4)。(3)如果ρ中有一個關(guān)系模式S不是4NF,則S中必能找到一個多值依賴X→→Y且X不包含S的候選鍵,Y-X≠?,XY≠S,令Z=Y-X,設(shè)S1=XZ,S2=S-Z,用分解{S1,S2}代替S,由于S1∩S2=X,S1-S2=Z,所以有(S1∩S2)→→(S1-S2),分解具有無損連接性,轉(zhuǎn)(2)。(4)分解結(jié)束,輸出ρ。.4.5關(guān)系模式的規(guī)范化 一個低一級范式的關(guān)系模式,通過模式分解轉(zhuǎn)化為若干個高一級范式的關(guān)系模式的集合,這種分解過程叫作關(guān)系模式的規(guī)范化。

關(guān)系模式規(guī)范化的目的和原則規(guī)范化的目的就是使結(jié)構(gòu)合理,消除存儲異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。規(guī)范化的基本原則就是遵循“一事一地”的原則。.4.5.2關(guān)系模式規(guī)范化的步驟規(guī)范化過程

1NF

2NF

3NF

BCNF

消除決定屬性不是候選鍵的非平凡的函數(shù)依賴

消除非主屬性對鍵的部分函數(shù)依賴

消除非主屬性對鍵的傳遞函數(shù)依賴

消除主屬性對鍵的部分和傳遞函數(shù)依賴

4NF

消除非平凡且非函數(shù)依賴的多值依賴

.4.5.3關(guān)系模式規(guī)范化的要求本章討論如何設(shè)計關(guān)系模式問題。關(guān)系模式設(shè)計得好與壞,直接影響到數(shù)據(jù)冗余度、數(shù)據(jù)一致性等問題。要設(shè)計好的數(shù)據(jù)庫模式,必須有一定的理論為基礎(chǔ)。這就是模式規(guī)范化理論。在數(shù)據(jù)庫中,數(shù)據(jù)冗余是指同一個數(shù)據(jù)存儲了多次,由數(shù)據(jù)冗余將會引起各種操作異常。通過把模式分解成若干比較小的關(guān)系模式可以消除冗余。.函數(shù)依賴X→Y是數(shù)據(jù)之間最基本的一種聯(lián)系,在關(guān)系中有兩個元組,如果X值相等那么要求Y值也相等。FD有一個完備的推理規(guī)則集。關(guān)系模式在分解時應(yīng)保持“等價”,有數(shù)據(jù)等價和語義等價兩種,分別用無損分解和保持依賴兩個特征來衡量。前者能保持泛關(guān)系在投影連接以后仍能恢復(fù)回來,而后者能保證數(shù)據(jù)在投影或連接中其語義不會發(fā)生變化,也就是不會違反FD的語義。但無損分解與保持依賴兩者之間沒有必然的聯(lián)系。.范式是衡量模式優(yōu)劣的標準,范式表達了模式中數(shù)據(jù)依賴之間應(yīng)滿足的聯(lián)系。如果關(guān)系模式R是3NF,那么R上成立的非平凡FD都應(yīng)該左邊是超鍵或右邊是非主屬性。如果關(guān)系模式R是BCNF,那么R上成立的非平凡的FD都應(yīng)該左邊是超鍵。范式的級別越高,其數(shù)據(jù)冗余和操作異常現(xiàn)象就越少。.分解成BCNF模式集的算法能保持無損分解,但不一定能保持FD集。而分解成3NF模式集的算法既能保持無損分解,又能保持FD集。關(guān)系模式的規(guī)范化過程實際上是一個“分解”過程:把邏輯上獨立的信息放在獨立的關(guān)系模式中。分解是解決數(shù)據(jù)冗余的主要方法,也是規(guī)范化的一條原則:“關(guān)系模式有冗余問題就分解它”。.書中未講到的還有:嵌入多值依賴連接依賴和第五范式以后可查找資料學習。上海復(fù)旦大學施伯樂丁寶康汪衛(wèi)《數(shù)據(jù)庫系統(tǒng)教程》.嵌入多值依賴有時關(guān)系模式R中,多值依賴X→→Y不成立,但在R的某個子集W中可能成立。在數(shù)據(jù)庫設(shè)計中,對這種現(xiàn)象也應(yīng)加以重現(xiàn)。定義:設(shè)關(guān)系模式R(U),X和Y是屬性集U的子集,W是U的真子集,并且XY

W。多值依賴X→→Y在模式R上不成立,但在模式W上成立。那么X→→Y在R上稱為嵌入多值依賴(EmbeddedMVD),用符號(X→→Y)W表示。.例:設(shè)模式R(C,S,P,Y)的屬性分別表示課程、選修課程的學生、這門課程的先修課程和該學生先修的年份。在R上僅有的非平凡的依賴是SP→Y,關(guān)鍵碼是CSP。因此可將R分解為R1(CSP)和R2(SPY)。顯然R2已是4NF。在R中,C→→S和C→→P顯然不成立。但是在模式R1(CSP)中,C→→S和C→→P是成立的。因為每門課程的先修課程對任何學生都是一樣的。因而C→→S和C→→P在

溫馨提示

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

評論

0/150

提交評論