數(shù)據(jù)庫(kù)原理與應(yīng)用教程N(yùn)O16ppt課件.ppt_第1頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用教程N(yùn)O16ppt課件.ppt_第2頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用教程N(yùn)O16ppt課件.ppt_第3頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用教程N(yùn)O16ppt課件.ppt_第4頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用教程N(yùn)O16ppt課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

4.3關(guān)系模式的分解*,4.3.1模式分解問(wèn)題,定義4.11設(shè)有關(guān)系模式R(U),屬性集為U,R1、Rk都是U的子集,并且有R1R2RkU。關(guān)系模式R1、Rk的集合用表示,=R1,Rk。用代替R的過(guò)程稱為關(guān)系模式的分解。這里稱為R的一個(gè)分解,也稱為數(shù)據(jù)庫(kù)模式。,1,泛關(guān)系模式R,r泛關(guān)系,數(shù)據(jù)庫(kù)模式=R1,Rk,=r1,rk數(shù)據(jù)庫(kù)實(shí)例(數(shù)據(jù)庫(kù)),這里就有兩個(gè)問(wèn)題:和r是否等價(jià)?用“無(wú)損分解”表示。F1,Fk與F是否等價(jià)?用“保持依賴”表示。,計(jì)算機(jī)中的數(shù)據(jù)并不是存儲(chǔ)在泛關(guān)系r中,而是存儲(chǔ)在數(shù)據(jù)庫(kù)中。,R上有函數(shù)依賴集F,每一個(gè)Ri上有一個(gè)函數(shù)依賴集Fi,F(xiàn)1,F(xiàn)k,2,4.3.2無(wú)損連接分解,定義4.12:設(shè)R是一個(gè)關(guān)系模式,F(xiàn)是R上的一個(gè)FD集。R分解成數(shù)據(jù)庫(kù)模式=R1,Rk。如果對(duì)R中滿足F的每一個(gè)關(guān)系r,都有r=R1(r)R2(r)Rk(r)那么稱分解相對(duì)于F是“無(wú)損連接分解”(losslessjoindecomposition),簡(jiǎn)稱為“無(wú)損分解”,否則稱為“損失分解”(lossydecomposition)。,3,例4.10(1)未丟失信息的分解:r1r2=r,(2)丟失信息的分解:r1r2r,多出來(lái)的元組稱為寄生元組(額外元組)丟失的元組稱為懸掛元組。,4,在泛關(guān)系模式R分解成數(shù)據(jù)庫(kù)模式=R1,Rk時(shí),泛關(guān)系r在的每一模式Ri(1in)上投影后再連接起來(lái),比原來(lái)r中多出來(lái)的元組,稱為“寄生元組”(SpuriousTuple)。實(shí)際上,寄生元組表示著錯(cuò)誤的信息。寄生元組也就是4.1.3節(jié)模式設(shè)計(jì)準(zhǔn)則4中提到的額外元組(在上節(jié)NO15中)。無(wú)損的損指的是信息丟失而不是元組丟失.如果一個(gè)分解不具有無(wú)損的性質(zhì),那么泛關(guān)系在投影連接后就可能產(chǎn)生寄生元組。寄生元組表示著錯(cuò)誤的信息,5,r的投影連接表達(dá)式R1(r)Rk(r)用符號(hào)m(r)表示,即m(r)=Ri(r)。設(shè)=R1,Rk是關(guān)系模式R的一個(gè)分解,r是R的任一關(guān)系,ri=Ri(r)(1ik),那么有下列性質(zhì):rm(r);若s=m(r),則Ri(s)=ri;m(m(r)=m(r),這個(gè)性質(zhì)稱為冪等性(idempotent)。r=m(r)時(shí)就是無(wú)損連接分解,6,4.3.3無(wú)損分解的測(cè)試算法(算法4.3),構(gòu)造一張k行n列的表格,每列對(duì)應(yīng)一個(gè)屬性Aj,每行對(duì)應(yīng)一個(gè)模式Ri。如果Aj在Ri中,那么在表格的第i行第j列處填上符號(hào)aj,否則填上bij。把表格看成模式R的一個(gè)關(guān)系,反復(fù)檢查F中每個(gè)FD在表格中是否成立,若不成立,則修改表格中的值。修改方法如下:對(duì)函數(shù)依賴XY,找X相等的行,改Y的分量值:如果Y值中有一個(gè)是aj,那么另一個(gè)也改成aj;如果沒有aj,那么用其中一個(gè)bij替換另一個(gè)值(盡量把下標(biāo)ij改成較小的數(shù))。一直到表格不能修改為止。(這個(gè)過(guò)程稱為追蹤chase過(guò)程)若修改的最后一張表格中有一行是全a,即a1a2an,那么稱相對(duì)于F是無(wú)損分解,否則稱損失分解。,7,例4.11設(shè)關(guān)系模式R(ABCD),R分解成=AB,BC,CD。如果R上成立的函數(shù)依賴集F1=BA,CD,那么相對(duì)于F1是否無(wú)損分解?,(無(wú)損分解),8,續(xù)例4.11設(shè)關(guān)系模式R(ABCD),R分解成=AB,BC,CD。如果R上成立的函數(shù)依賴集F1=AB,CD,那么相對(duì)于F1是否無(wú)損分解?,(損失分解),再看例4-12(P153),9,ABCDE,例:設(shè)R=(ABCDE)分解成AD,AB,BE,CDE,AE函數(shù)依賴F=AC,BC,CD,DEC,CEA判斷是否無(wú)損連接分解。解:按條件給出初始表,a1b12b13a4b15,AD,a1a2b23b24b25,b31a2b33b34a5,b41b42a3a4a5,a1b52b53b54a5,AB,BE,CDE,AE,10,ABCDE,a1b12b13a4b15,AD,a1a2b13a4b25,a1a2a3a4a5,a1b42a3a4a5,a1b52a3a4a5,AB,BE,CDE,AE,通過(guò)追蹤過(guò)程(CHASE)最終得表:,由于第3行全為a,所以該分解是無(wú)損連接分解。,11,定理4.6設(shè)=R1,R2是關(guān)系模式R的一個(gè)分解,F(xiàn)是R上成立的FD集,那么分解相對(duì)于F是無(wú)損分解的充分必要條件是(R1R2)(R1R2)或(R1R2)(R2R1)。(可用CHASE(追蹤)算法證明)定理4.7如果FDXY在模式R上成立,且XY=,那么R分解成=RY,XY是無(wú)損分解。,12,4.3.4保持函數(shù)依賴的分解,定義4.13:設(shè)F是屬性集U上的FD集,Z是U的子集,F(xiàn)在Z上的投影用Z(F)表示,定義為Z(F)=XY|XYF+,且XYZ設(shè)=R1,Rk是R的一個(gè)分解,F(xiàn)是R上的FD集如果有(Ri(F)+=F+,那么稱分解保持函數(shù)依賴集F的分解。根據(jù)定義,測(cè)試一個(gè)分解是否保持FD,比較可行的方法是逐步驗(yàn)證F中的每個(gè)FD是否被(Ri(F)+=F+蘊(yùn)涵,13,兩個(gè)數(shù)據(jù)庫(kù)模式的等價(jià)問(wèn)題,這種等價(jià)包括數(shù)據(jù)等價(jià)和依賴等價(jià)兩個(gè)方面。數(shù)據(jù)等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)實(shí)例應(yīng)表示同樣的信息內(nèi)容,用“無(wú)損分解”衡量。如果是無(wú)損分解,那么對(duì)泛關(guān)系反復(fù)的投影和連接都不會(huì)丟失信息。依賴等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)模式應(yīng)有相同的依賴集閉包。在依賴集閉包相等情況下,數(shù)據(jù)的語(yǔ)義是不會(huì)出差錯(cuò)的。違反數(shù)據(jù)等價(jià)或依賴等價(jià)的分解不是一個(gè)好的模式設(shè)計(jì)。一個(gè)無(wú)損連接分解不一定是保持函數(shù)依賴的一個(gè)保持函數(shù)依賴的分解也不一定是無(wú)損連接的沒有必然聯(lián)系(見下例),14,例:設(shè)關(guān)系模式R(ABC),=AB,AC是R的一個(gè)分解。試分析分別在各種FD的情況下,是否具有無(wú)損分解和保持FD的分解特性。解:相對(duì)于F1=AB,分解是無(wú)損分解,且保持FD的分解。相對(duì)于F2=AC,BC,分解是無(wú)損分解,但不保持FD集(丟失了BC)。相對(duì)于F3=BA,分解是損失分解,但保持FD集的分解。相對(duì)于F4=CB,BA,分解是損失分解,且不保持FD集(丟失了CB)。,15,16,4.4關(guān)系模式的范式,關(guān)系模式的好與壞,用什么標(biāo)準(zhǔn)衡量?這個(gè)標(biāo)準(zhǔn)就是模式的范式(NormalForms,簡(jiǎn)記為NF)。范式的種類與數(shù)據(jù)依賴有著直接的聯(lián)系。范式的概念由E.F.Codd于1971年提出。(發(fā)展過(guò)程見P155)1NF是關(guān)系模式的基礎(chǔ);在數(shù)據(jù)庫(kù)設(shè)計(jì)中最常用的是3NF和BCNF。,17,各種范式之間的關(guān)系,18,4.4.1第一范式(1NF),定義4.14:如果關(guān)系模式R所有的屬性均為簡(jiǎn)單屬性,即每個(gè)屬性都是不可再分的,則稱R屬于第一范式,簡(jiǎn)稱1NF,記作R1NF。1NF是關(guān)系模式應(yīng)具備的最起碼的條件。第一范式可能具有大量的數(shù)據(jù)冗余,具有插入異常、刪除異常和更新異常等弊端。例如關(guān)系模式SCD屬于1NF,它既存在完全函數(shù)依賴,又存在部分函數(shù)依賴和傳遞函數(shù)依賴??朔@些弊端的方法是用投影運(yùn)算將關(guān)系分解,去掉過(guò)于復(fù)雜的函數(shù)依賴關(guān)系,向更高一級(jí)的范式進(jìn)行轉(zhuǎn)換。,19,4.4.2第二范式(2NF),定義4.15:如果關(guān)系模式R是1NF,且每個(gè)非主屬性完全函數(shù)依賴于候選鍵,那么稱R是第二范式(2NF)的模式。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是2NF,則稱數(shù)據(jù)庫(kù)模式為2NF的數(shù)據(jù)庫(kù)模式。(即.沒有對(duì)候選鍵的部分函數(shù)依賴)從1NF中消除非主屬性對(duì)主鍵(主碼)的部分函數(shù)依賴得到2NF.分解時(shí)遵循“一事一地”的基本原則:一個(gè)關(guān)系只描述一個(gè)實(shí)體或聯(lián)系。,20,違反2NF的局部依賴的情況示意圖:,21,本章開始例:教學(xué)管理數(shù)據(jù)庫(kù)(P137)SCD(SNo,SN,Age,Dept,MN,CNo,Score),主鍵:(SNO,CNO),存在數(shù)據(jù)冗余、修改、刪除、插入異常的弊病。原因之一是存在部分函數(shù)依賴。,22,如果把SCD分解成:(將部分函數(shù)依賴分離出來(lái))SD(SNo,SN,Age,Dept,MN)C(SNo,CNo,SCORE)SD與C都是2NF模式。部分函數(shù)依賴消失,分?jǐn)?shù)關(guān)系C不存在冗余、修改、刪除、插入異常。但還是有系、系主任的冗余和操作異常。說(shuō)明2NF不是理想的模式分解。,23,算法4.5分解成2NF模式集的算法設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD:XZ,并且Z是非主屬性,XW,那么WZ就是一個(gè)部分函數(shù)依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式R1(XZ),主鍵是X;(將部分依賴分解出來(lái))R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCES參照R1)。利用外鍵和主鍵的連接可以從R1和R2重新得到R。如果R1和R2還不是2NF,則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是2NF為止。,24,定義4.16:如果關(guān)系模式R是1NF,且每個(gè)非主屬性都不傳遞函數(shù)依賴于R的候選鍵,那么稱R屬于第三范式(3NF)的模式。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是3NF,則稱其為3NF的數(shù)據(jù)庫(kù)模式。,4.4.3第三范式(3NF),25,例:在上邊例中,SD(SNo,SN,Age,Dept,MN)主鍵SNO,無(wú)部分函數(shù)依賴,是2NF模式。SD中存在函數(shù)依賴SNODept和DeptMN,那么SNOMN就是一個(gè)傳遞依賴,SD不是3NF模式。此時(shí)也會(huì)出現(xiàn)冗余和異常操作。譬如一個(gè)系有500學(xué)生,那么系和系主任就會(huì)重復(fù)500次。還有操作異常。若將SD分解成S(SNo,SN,Age,Dept)和D(Dept,MN)已無(wú)傳遞函數(shù)依賴,S、D都是3NF模式,冗余和操作異常消失。,26,算法4.6分解成3NF模式集的算法設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FDXZ。并且Z是非主屬性,ZX,X不是候選鍵,這樣WZ就是一個(gè)傳遞依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式:R1(XZ),主鍵是X;(將傳遞依賴分解出來(lái))R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCES參照R1)。利用外鍵和主鍵相匹配機(jī)制,R1和R2通過(guò)連接可以重新得到R。如果R1和R2還不是3NF,則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是3NF為止。,27,由定義可看出:局部依賴必定蘊(yùn)涵傳遞依賴的存在定理4.8:如果R是3NF模式,那么R也是2NF模式。證明:只要證明模式中部分依賴的存在蘊(yùn)涵著傳遞依賴即可。設(shè)A是R的一個(gè)非主屬性,K是R的一個(gè)候選鍵,且KA是一個(gè)部分依賴。那么R中必存在某個(gè)KK,有KA成立。由于A是非主屬性,因此AKK=。從KK,可知KK,但KK成立。因而從KK和KA可知KA是一個(gè)傳遞依賴。部分依賴和傳遞依賴是模式產(chǎn)生冗余和異常的兩個(gè)重要原因。由于3NF模式中不存在非主屬性對(duì)候選鍵的部分依賴和傳遞依賴,因此消除了很大一部分存儲(chǔ)異常,具有較好的性能。,28,4.4.4BCNF(BoyceCoddNF),定義4.17:如果關(guān)系模式R1NF,且所有的函數(shù)依賴XY(YX),決定因素X都包含了R的一個(gè)候選鍵,則稱R屬于BC范式,記作RBCNF。(3NF不一定是BCNF)例4-19設(shè)有關(guān)系模式SNC(SNo,SN,CNo,Score)假設(shè)學(xué)生無(wú)重名,SNoSN。候選鍵:(SNo,CNo),(SN,CNo)唯一非主屬性Score不存在對(duì)鍵的部分函數(shù)依賴及傳遞函數(shù)依賴,所以是3NF但存在著主屬性對(duì)鍵的部分函數(shù)依賴:(SNo,CNo)SN,(SN,CNo)SNo,所以SNC不是BCNF。,29,定理:如果R是BCNF模式,那么R也是3NF模式。證明:設(shè)R是BCNF,但不是3NF,那么R上必存在傳遞依賴XY,YA,這里X是R的鍵,AY,YX。顯然Y不包含R的鍵,否則YX也成立。因此YA違反了BCNF的定義,與假設(shè)R是BCNF矛盾。,30,無(wú)損分解成BCNF模式集的算法(1)令=R。(2)如果中所有模式都是BCNF,則轉(zhuǎn)(4)。(3)如果中有一個(gè)關(guān)系模式S不是BCNF,則S中必能找到一個(gè)函數(shù)依賴XA且X不是S的候選鍵,且A不屬于X,設(shè)S1=XA,S2=S-A,用分解S1,S2代替S,轉(zhuǎn)(2)。(4)分解結(jié)束,輸出。,這個(gè)算法是從泛關(guān)系模式R出發(fā),去尋找一個(gè)滿足條件的BCNF模式集,因此稱為“分解算法”。這個(gè)算法能保證把R無(wú)損分解成,但不一定能保證能保持FD。,31,F=SNoSN,SNSNo,(SNo,CNo)Score,(SN,CNo)Score,前例:關(guān)系模式SNC(SNo,SN,CNo,Score)假設(shè)學(xué)生無(wú)重名,SNoSN。候選鍵:(SNo,CNo),(SN,CNo),(1)令=SNC(SNo,SN,CNo,Score)。(2)經(jīng)過(guò)前面分析可知,中關(guān)系模式不屬于BCNF。(3)考慮SNoSN,由于SNo不是候選鍵,且SN不屬于SNo.用分解S1(SNo,SN),S2(SNo,CNo,Score)代替SNC。(4)分解結(jié)果為:S1(SNo,SN)描述學(xué)生實(shí)體;S2(SNo,CNo,Score)描述學(xué)生與課程的聯(lián)系。都屬于BCNF.,32,(1)如果Fmin中有一函數(shù)依賴XA,且XA=R,則輸出=R,轉(zhuǎn)(4)。(2)如果R中某些屬性與Fmin中所有依賴的左部和右部都無(wú)關(guān),則將它們構(gòu)成關(guān)系模式,從R中將它們分出去,單獨(dú)構(gòu)成一個(gè)模式。(3)對(duì)于Fmin中的每一個(gè)函數(shù)依賴XA,都單獨(dú)構(gòu)成一個(gè)關(guān)系子模式XA。若Fmin中有XA1,XA2,XAn,則可以用模式XA1A2An取代n個(gè)模式XA1,XA2,XAn。(4)停止分解,輸出??蠢?-16:(P159),算法4.6把一個(gè)關(guān)系模式分解為3NF,使它具有保持函數(shù)依賴性。,33,算法4.7把一個(gè)關(guān)系模式分解為3NF,使它既具有無(wú)損連接性又具有保持函數(shù)依賴性。(1)根據(jù)算法4.6求出保持函數(shù)依賴的分解:=R1,R2,Rk。(2)判定是否具有無(wú)損連接性,若是,轉(zhuǎn)(4)。(3)令=X=R1,R2,Rk,X,其中X是R的候選鍵。(4)輸出。見例4-17(P160),34,例:設(shè)關(guān)系模式R(ABCDE),R的最小依賴集為AB,CD。從依賴集可知R的候選鍵為ACE。(L、N類計(jì)算)按算法4-6,根據(jù)最小依賴集,保持函數(shù)依賴的分解=AB,CD。按算法4-7,再加入由候選鍵組成的模式ACE。因此最后結(jié)果=AB,CD,ACE是一個(gè)3NF模式集且相對(duì)于該依賴集是無(wú)損分解且保持FD。,35,關(guān)系模式R相對(duì)于函數(shù)依賴集F分解成數(shù)據(jù)庫(kù)模式R1,Rk,一般應(yīng)具有三個(gè)特性:是BCNF模式集,或3NF模式集;無(wú)損分解,即對(duì)于R上任何滿足F的泛關(guān)系應(yīng)滿足r=m(r);保持函數(shù)依賴集F,即(Ri(F)F。數(shù)據(jù)庫(kù)設(shè)計(jì)者在進(jìn)行關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),應(yīng)作權(quán)衡,盡可能使數(shù)據(jù)庫(kù)模式保持最好的特性。一般盡可能設(shè)計(jì)成BCNF模式集。如果設(shè)計(jì)成BCNF模式集時(shí)達(dá)不到保持FD的特點(diǎn),那么只能降低要求,設(shè)計(jì)成3NF模式集,以求達(dá)到保持FD和無(wú)損分解的特點(diǎn)。一個(gè)好的模式設(shè)計(jì)方法應(yīng)符合三條原則:表達(dá)性、分離性和最小冗余性。,36,4.4.5多值依賴與第四范式,多值依賴的定義假設(shè)學(xué)校中一門課程可由多名教師講授,教學(xué)中他們使用相同的一套參考書。,關(guān)系CTB,37,CTB轉(zhuǎn)化成規(guī)范化的關(guān)系如下圖所示:,數(shù)據(jù)冗余大,插入異常,刪除異常,C與T間的聯(lián)系被稱為多值依賴多個(gè)T對(duì)應(yīng)一個(gè)C一個(gè)確定的C值,與其所對(duì)應(yīng)的一組T值與B值無(wú)關(guān),38,例:設(shè)關(guān)系模式R(DN,TN,SN)分別代表系名,教師名,學(xué)生名教師與系有直接聯(lián)系,但與學(xué)生無(wú)直接聯(lián)系。學(xué)生與系有直接聯(lián)系。教師與學(xué)生之間的聯(lián)系是間接聯(lián)系。將間接聯(lián)系的屬性放在一個(gè)關(guān)系里出問(wèn)題。若系里有50個(gè)教師,500名學(xué)生,則關(guān)系中將出現(xiàn)25000條記錄。一個(gè)系有多名教師(一對(duì)多),多名學(xué)生(一對(duì)多),教師與學(xué)生無(wú)直接聯(lián)系。系與教師之間、系與學(xué)生之間的聯(lián)系被稱為多值依賴。,39,定義4.18設(shè)有關(guān)系模式R(U),U是屬性全集,X、Y、Z是屬性集U的子集,且Z=UXY,如果對(duì)于R的任一關(guān)系,對(duì)于X的一個(gè)確定值,存在Y的一組值與之對(duì)應(yīng),且Y的這組值僅僅決定于X的值而與Z值無(wú)關(guān),此時(shí)稱Y多值依賴于X,或X多值決定Y,記作XY。若XY且Z=UXY,則稱XY是非平凡的多值依賴(MultivaluedDependenceMVD),否則稱為平凡的多值依賴。,40,多值依賴公理及其推論多值依賴公理增廣律:如果XY,VWU,則WXVY。傳遞律:如果XY,YZ,則XZ-Y。補(bǔ)余律:如果XY,則XU-X-Y。函數(shù)依賴公理與多值依賴混合公理復(fù)制規(guī)則:從FD導(dǎo)出MVD,如果XY,則XY。接合規(guī)則:從MVD導(dǎo)出FD:如果XY,ZY,且存在WU有WY=,WZ,則XZ。多值依賴推論合并律:如果XY,XZ,則XYZ。偽傳遞律:如果XY,WYZ,則XW(Z-W-Y)。分解律:如果XY,XZ,則X(YZ),X(Y-Z),X(Z-Y)?;旌蟼蝹鬟f律:如果XY,XYZ,則X(Z-Y)。,41,第四范式(4NF)定義定義4.19設(shè)有一關(guān)系模式R(U),U是其屬性全集,X、Y是U的子集,D是R上的數(shù)據(jù)依賴集。如果對(duì)于任一多值依賴XY,此多值依賴是平凡的,或者X包含了R的一個(gè)候選關(guān)鍵字,則稱R是第四范式的關(guān)系模式,記為R4NF。一個(gè)BCNF的關(guān)系模式不一定是4NF4NF是BCNF的推廣一個(gè)BCNF的關(guān)系模式不一定是4NF,42,第四范式(4NF)的分解(1)令=R。(2)如果中所有模式Ri都是4NF,則轉(zhuǎn)(4)。(3)如果中有一個(gè)關(guān)系模式S不是4NF,則S中必能找到一個(gè)多值依賴XY且X不包含S的候選鍵,Y-X,XYS,令Z=Y-X,設(shè)S1=XZ,S2=S-Z,用分解S1,S2代替S,由于S1S2=X,S1-S2=Z,所以有(S1S2)(S1-S2),分解具有無(wú)損連接性,轉(zhuǎn)(2)。(4)分解結(jié)束,輸出。,43,4.5關(guān)系模式的規(guī)范化,一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解轉(zhuǎn)化為若干個(gè)高一級(jí)范式的關(guān)系模式的集合,這種分解過(guò)程叫作關(guān)系模式的規(guī)范化。關(guān)系模式規(guī)范化的目的和原則規(guī)范化的目的就是使結(jié)構(gòu)合理,消除存儲(chǔ)異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。規(guī)范化的基本原則就是遵循“一事一地”的原則。,44,4.5.2關(guān)系模式規(guī)范化的步驟,規(guī)范化過(guò)程,1NF,2NF,3NF,BCNF,消除決定屬性,不是候選鍵的,非平凡的函數(shù),依賴,消除非主屬性對(duì)鍵的部分函數(shù)依賴,消除非主屬性對(duì)鍵的傳遞函數(shù)依賴,消除主屬性對(duì)鍵的部分和傳遞函數(shù)依賴,4NF,消除非平凡且非函數(shù)依賴的多值依賴,45,4.5.3關(guān)系模式規(guī)范化的要求,本章討論如何設(shè)計(jì)關(guān)系模式問(wèn)題。關(guān)系模式設(shè)計(jì)得好與壞,直接影響到數(shù)據(jù)冗余度、數(shù)據(jù)一致性等問(wèn)題。要設(shè)計(jì)好的數(shù)據(jù)庫(kù)模式,必須有一定的理論為基礎(chǔ)。這就是模式規(guī)范化理論。在數(shù)據(jù)庫(kù)中,數(shù)據(jù)冗余是指同一個(gè)數(shù)據(jù)存儲(chǔ)了多次,由數(shù)據(jù)冗余將會(huì)引起各種操作異常。通過(guò)把模式分解成若干比較小的關(guān)系模式可以消除冗余。,46,函數(shù)依賴XY是數(shù)據(jù)之間最基本的一種聯(lián)系,在關(guān)系中有兩個(gè)元組,如果X值相等那么要求Y值也相等。FD有一個(gè)完備的推理規(guī)則集。關(guān)系模式在分解時(shí)應(yīng)保持“等價(jià)”,有數(shù)據(jù)等價(jià)和語(yǔ)義等價(jià)兩種,分別用無(wú)損分解和保持依賴兩個(gè)特征來(lái)衡量。前者能保持泛關(guān)系在投影連接以后仍能恢復(fù)回來(lái),而后者能保證數(shù)據(jù)在投影或連接中其語(yǔ)義不會(huì)發(fā)生變化,也就是不會(huì)違反FD的語(yǔ)義。但無(wú)損分解與保持依賴兩者之間沒有必然的聯(lián)系。,47,范式是衡量模式優(yōu)劣的標(biāo)準(zhǔn),范式表達(dá)了模式中數(shù)據(jù)依賴之間應(yīng)滿足的聯(lián)系。如果關(guān)系模式R是3NF,那么R上成立的非平凡FD都應(yīng)該左邊是超鍵或右邊是非主屬性。如果關(guān)系模式R是BCNF,那么R上成立的非平凡的FD都應(yīng)該左邊是超鍵。范式的級(jí)別越高,其數(shù)據(jù)冗余和操作異?,F(xiàn)象就越少。,48,分解成BCNF模式集的算法能保持無(wú)損分解,但不一定能保持FD集。而分解成3NF模式集的算法既能保持無(wú)損分解,又能保持FD集。關(guān)系模式的規(guī)范化過(guò)程實(shí)際上是一個(gè)“分解”過(guò)程:把邏輯上獨(dú)立的信息放在獨(dú)立的關(guān)系模式中。分解是解決數(shù)據(jù)冗余的主要方法,也是規(guī)范化的一條原則:“關(guān)系模式有冗余問(wèn)題就分解它”。,49,書中未講到的還有:嵌入多值依賴連接依賴和第五范式以后可查找資料學(xué)習(xí)。上海復(fù)旦大學(xué)施伯樂(lè)丁寶康汪衛(wèi)數(shù)據(jù)庫(kù)系統(tǒng)教程,50,嵌入多值依賴,有時(shí)關(guān)系模式R中,多值依賴XY不成立,但在R的某個(gè)子集W中可能成立。在數(shù)據(jù)庫(kù)設(shè)計(jì)中,對(duì)這種現(xiàn)象也應(yīng)加以重現(xiàn)。定義:設(shè)關(guān)系模式R(U),X和Y是屬性集U的子集,W是U的真子集,并且XYW。多值依賴XY在模式R上不成立,但在模式W上成立。那么XY在R上稱為嵌入多值依賴(EmbeddedMVD),用符號(hào)(XY)W表示。,51,例:設(shè)模式R(C,S,P,Y)的屬性分別表示課程、選修課程的學(xué)生、這門課程的先修課程和該學(xué)生先修的年份。在R上僅有的非平凡的依賴是SPY,關(guān)鍵碼是CSP。因此可將R分解為R1(CSP)和R2(SPY)。顯然R2已是4NF。在R中,CS和CP顯然不成立。但是在模式R1(C

溫馨提示

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

評(píng)論

0/150

提交評(píng)論