《數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用》電子課件
《數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用》電子課件,數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用,數(shù)據(jù)庫(kù)技術(shù),應(yīng)用,電子,課件
第6章關(guān)系數(shù)據(jù)理論本章學(xué)習(xí)目標(biāo)l理解函數(shù)依賴(lài)的基本概念。理解函數(shù)依賴(lài)的基本概念。l理解函數(shù)依賴(lài)的相關(guān)理論。理解函數(shù)依賴(lài)的相關(guān)理論。l掌握并會(huì)運(yùn)用函數(shù)依賴(lài)?yán)碚撝械南嚓P(guān)算法。掌握并會(huì)運(yùn)用函數(shù)依賴(lài)?yán)碚撝械南嚓P(guān)算法。l理解范式的基本概念、類(lèi)型以及各范式間的關(guān)系。理解范式的基本概念、類(lèi)型以及各范式間的關(guān)系。l掌握各種范式設(shè)計(jì)的基本技術(shù)和原則。掌握各種范式設(shè)計(jì)的基本技術(shù)和原則。l掌握模式分解的基本理論。掌握模式分解的基本理論。l掌握并會(huì)運(yùn)用模式分解的算法。掌握并會(huì)運(yùn)用模式分解的算法。本章概述設(shè)計(jì)任何一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),都存在著如何構(gòu)造合理的數(shù)據(jù)庫(kù)設(shè)計(jì)任何一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),都存在著如何構(gòu)造合理的數(shù)據(jù)庫(kù)模式的問(wèn)題。在關(guān)系模型提出之前,數(shù)據(jù)庫(kù)模式的設(shè)計(jì)很大程度上依模式的問(wèn)題。在關(guān)系模型提出之前,數(shù)據(jù)庫(kù)模式的設(shè)計(jì)很大程度上依賴(lài)于設(shè)計(jì)者的經(jīng)驗(yàn)和技巧,缺乏系統(tǒng)的方法。而關(guān)系模型有著嚴(yán)格的賴(lài)于設(shè)計(jì)者的經(jīng)驗(yàn)和技巧,缺乏系統(tǒng)的方法。而關(guān)系模型有著嚴(yán)格的理論基礎(chǔ),提出了一些理論、技術(shù)和方法,形成了數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的理論基礎(chǔ),提出了一些理論、技術(shù)和方法,形成了數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的有力基礎(chǔ)有力基礎(chǔ)關(guān)系數(shù)據(jù)理論。該理論體系的核心思想是數(shù)據(jù)依賴(lài),基關(guān)系數(shù)據(jù)理論。該理論體系的核心思想是數(shù)據(jù)依賴(lài),基本方法是模式分解,目的是將關(guān)系模式規(guī)范化。本方法是模式分解,目的是將關(guān)系模式規(guī)范化。本章從如何構(gòu)造一個(gè)好的關(guān)系模式這一問(wèn)題出發(fā),逐步深入地介本章從如何構(gòu)造一個(gè)好的關(guān)系模式這一問(wèn)題出發(fā),逐步深入地介紹函數(shù)依賴(lài)定義及函數(shù)依賴(lài)集理論,關(guān)系模式的范式以及規(guī)范化理論紹函數(shù)依賴(lài)定義及函數(shù)依賴(lài)集理論,關(guān)系模式的范式以及規(guī)范化理論和方法,關(guān)系模式的分解概念和分解方法。和方法,關(guān)系模式的分解概念和分解方法。主要內(nèi)容6.1 問(wèn)題的提出6.3 規(guī)范化6.4 模式分解6.2 函數(shù)依賴(lài)6.1 問(wèn)題的提出對(duì)于一個(gè)具體問(wèn)題而言,不同的設(shè)計(jì)者可能會(huì)設(shè)計(jì)出對(duì)于一個(gè)具體問(wèn)題而言,不同的設(shè)計(jì)者可能會(huì)設(shè)計(jì)出不同的數(shù)據(jù)庫(kù)模式。一個(gè)合適的數(shù)據(jù)庫(kù)模式不僅可以使不同的數(shù)據(jù)庫(kù)模式。一個(gè)合適的數(shù)據(jù)庫(kù)模式不僅可以使數(shù)據(jù)的基本關(guān)系占用的存儲(chǔ)空間最小化,還可以消除大數(shù)據(jù)的基本關(guān)系占用的存儲(chǔ)空間最小化,還可以消除大量數(shù)據(jù)冗余以及由此帶來(lái)的各種操作異常。本節(jié)主要討量數(shù)據(jù)冗余以及由此帶來(lái)的各種操作異常。本節(jié)主要討論不合理的,或者說(shuō)是不符合規(guī)范化設(shè)計(jì)理論的關(guān)系模論不合理的,或者說(shuō)是不符合規(guī)范化設(shè)計(jì)理論的關(guān)系模式給數(shù)據(jù)庫(kù)操作帶來(lái)的一些問(wèn)題。式給數(shù)據(jù)庫(kù)操作帶來(lái)的一些問(wèn)題。6.1.1 數(shù)據(jù)冗余導(dǎo)致的問(wèn)題數(shù)數(shù)據(jù)據(jù)冗冗余余(Data(Data Redundancy)Redundancy)是是指指同同一一數(shù)數(shù)據(jù)據(jù)在在一一個(gè)個(gè)或或者者多多個(gè)數(shù)據(jù)文件中重復(fù)存儲(chǔ)。個(gè)數(shù)據(jù)文件中重復(fù)存儲(chǔ)。例6-1 設(shè)有一個(gè)學(xué)生選課關(guān)系模式S-C-G(U),該關(guān)系模式的屬性集合可以表示為:U=Sno,Sname,Sdept,Mname,Cno,Cname,Grade其中屬性集Sno,Cno是主鍵。根據(jù)現(xiàn)實(shí)世界的已知事實(shí)(語(yǔ)義)規(guī)定:(1)一個(gè)系有若干名學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系。系與學(xué)生之間是1:n的聯(lián)系。(2)一個(gè)系只有一名系主任。系與系主任之間是1:1的聯(lián)系。(3)一個(gè)學(xué)生可以選修多門(mén)課程,每門(mén)課程可被多個(gè)學(xué)生選修,且該聯(lián)系有一描述學(xué)生成績(jī)的屬性。學(xué)生與課程之間是m:n的聯(lián)系。6.1.1 數(shù)據(jù)冗余導(dǎo)致的問(wèn)題表 6-1是關(guān)系模式SCG的一個(gè)實(shí)例,即數(shù)據(jù)表。SnoSnameSdeptMnameCnoCnameGrade0708114001王剛計(jì)算機(jī)系張青山JSJ001離散數(shù)學(xué)850708114002張建計(jì)算機(jī)系張青山JSJ001離散數(shù)學(xué)920708114001王剛計(jì)算機(jī)系張青山JSJ007操作系統(tǒng)790708114004孫繼紅計(jì)算機(jī)系張青山JSJ007操作系統(tǒng)80表6-1 SCG表關(guān)系模式SCG存在以下四方面問(wèn)題:l數(shù)據(jù)大量冗余 同一學(xué)號(hào)的學(xué)生姓名和同一課程號(hào)的課程名被重復(fù)存儲(chǔ)多次,即相同信息的數(shù)據(jù)在關(guān)系的多個(gè)元組中重復(fù)出現(xiàn),這將浪費(fèi)大量的存儲(chǔ)空間。l更新異常 當(dāng)修改一個(gè)學(xué)生的姓名時(shí),需要修改所有存有該學(xué)生信息的元組。如果部分修改,將會(huì)出現(xiàn)數(shù)據(jù)間的不一致,這樣系統(tǒng)便需要付出很大的代價(jià)來(lái)維護(hù)數(shù)據(jù)庫(kù)的完整性。l插入異常 如果某學(xué)生沒(méi)有選修課程,或某門(mén)課程未被任何學(xué)生選修時(shí),則根據(jù)實(shí)體完整性原則,該學(xué)生或該課程信息無(wú)法存入數(shù)據(jù)庫(kù)。l刪除異常 當(dāng)一學(xué)生的所有選修課程信息被刪除時(shí),則該學(xué)生的信息也被丟掉了。6.1.2 問(wèn)題分析l關(guān)系模式出現(xiàn)上述四種問(wèn)題的原因:例6-1中的關(guān)系模式S-C-G模式中某些屬性之間存在一些依賴(lài)關(guān)系,導(dǎo)致數(shù)據(jù)冗余而引起的。在SCG中存在的屬性依賴(lài)關(guān)系有:Sno決定Sname和Sdept,Sdept決定Mname,Cno決定Cname,Sno,Cno 共同決定Grade。l問(wèn)題的解決如 果 將 SCG分 解 為 S(Sno,Sname,Sdept),DEPT(Sdept,Mname),C(Cno,Cname)和SC(Sno,Cno,Grade)4個(gè)關(guān)系模式,則SCG中原有的4種屬性依賴(lài)關(guān)系就被分解到每個(gè)單獨(dú)的關(guān)系模式中去了,這樣便不會(huì)出現(xiàn)上述異?,F(xiàn)象,且數(shù)據(jù)冗余也會(huì)得到有效控制。數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)?yán)砝碚撜摽煽梢砸詭蛶臀椅覀儌兏母脑煸礻P(guān)關(guān)系系模模式式,通通過(guò)過(guò)分分解解較較大大的的關(guān)關(guān)系系模模式式來(lái)來(lái)消消除除其其中中不不合合適適的的數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài),以以解解決決數(shù)數(shù)據(jù)據(jù)冗冗余余及及其其帶帶來(lái)來(lái)的的各各種種問(wèn)問(wèn)題題;同同時(shí)時(shí),出出于于性性能能方方面面的的考考慮慮,還還要要注注意意分分解解后后的的模模式式是是否否具具有有無(wú)無(wú)損損連連接接和保持依賴(lài)的特性。和保持依賴(lài)的特性。6.2 函數(shù)依賴(lài)數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)(Data(Data Dependence)Dependence)是是一一個(gè)個(gè)關(guān)關(guān)系系內(nèi)內(nèi)部部屬屬性性與與屬屬性性之之間間的的一一種種約約束束關(guān)關(guān)系系。具具體體來(lái)來(lái)說(shuō)說(shuō),數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)是是指指通通過(guò)過(guò)一一個(gè)個(gè)關(guān)關(guān)系系中中屬屬性性之之間間值值的的相相等等與與否否體體現(xiàn)現(xiàn)出出來(lái)來(lái)的的數(shù)數(shù)據(jù)據(jù)間間的的相相互互關(guān)關(guān)系系。它它是是現(xiàn)現(xiàn)實(shí)實(shí)系系統(tǒng)統(tǒng)中中實(shí)實(shí)體體屬屬性性間間相相互互聯(lián)聯(lián)系系的的抽抽象象,是是數(shù)數(shù)據(jù)據(jù)內(nèi)內(nèi)在在的的性性質(zhì)質(zhì),是是語(yǔ)語(yǔ)義義的的體體現(xiàn)現(xiàn)。因因此此,數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)是是否否存存在在,是是由由現(xiàn)現(xiàn)實(shí)實(shí)系系統(tǒng)統(tǒng)中中實(shí)實(shí)體體屬屬性性間間相相互互聯(lián)聯(lián)系系的的語(yǔ)語(yǔ)義義來(lái)來(lái)決決定定,而而不不是是憑憑空空臆臆造造。數(shù)數(shù)據(jù)據(jù)異異常?,F(xiàn)現(xiàn)象象與與數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)有有著著緊緊密密的的關(guān)關(guān)聯(lián)聯(lián)。數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)有有很很多多種種,其其中中最最重重要要的的有有函函數(shù)數(shù)依依賴(lài)賴(lài)(Functional(Functional DependencyDependency,F(xiàn)D)FD)、多多值值依依賴(lài)賴(lài)(Multivalued(Multivalued DependencyDependency,MVD)MVD)和和連連接接依依賴(lài)賴(lài)(Join Dependency(Join Dependency,JD)JD)。在在數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)中中,函函數(shù)數(shù)依依賴(lài)賴(lài)是是最最基基本本的的一一種種依依賴(lài)賴(lài)形形式式。認(rèn)認(rèn)識(shí)識(shí)和和掌掌握握函函數(shù)數(shù)依依賴(lài)賴(lài)知知識(shí)識(shí),對(duì)對(duì)于于數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)的的約約束束設(shè)設(shè)計(jì)計(jì)和和規(guī)規(guī)范范化化設(shè)設(shè)計(jì)有重要意義。計(jì)有重要意義。6.2.1 函數(shù)依賴(lài)定義定定義義6-1 6-1 設(shè)設(shè)R(U)R(U)是是屬屬性性集集U U上上的的關(guān)關(guān)系系模模式式。X X,Y Y是是U U的的子子集集,若若對(duì)對(duì)于于R(U)R(U)的的任任意意一一個(gè)個(gè)可可能能的的關(guān)關(guān)系系r r,r r中中不不可可能能存存在在兩兩個(gè)個(gè)元元組組在在X X上上的的屬屬性性相相等等,而而在在Y Y上上的的屬屬性性值值不不等等,則則稱(chēng)稱(chēng)X X函函數(shù)確定數(shù)確定Y Y或或Y Y函數(shù)依賴(lài)于函數(shù)依賴(lài)于X X,記作,記作X XY Y。函數(shù)依賴(lài)的3種基本形式為:1.平凡與非平凡函數(shù)依賴(lài)XY,但Y X,則稱(chēng)XY是非平凡的函數(shù)依賴(lài)。XY,但Y X,則稱(chēng)XY是平凡的函數(shù)依賴(lài)。若XY,則X稱(chēng)為這個(gè)函數(shù)依賴(lài)的決定屬性組,也稱(chēng)為決定子(Determinant)。若XY,且YX,則記作XY。6.2.1 函數(shù)依賴(lài)定義2.完全與部分函數(shù)依賴(lài)如果XY,但對(duì)于X中的任意一個(gè)真子集 ,都有Y不依賴(lài)于,則稱(chēng)Y對(duì)X完全函數(shù)依賴(lài)(Full Functional Dependency),記作:X Y。如果XY,但Y不完全函數(shù)依賴(lài)于X,則稱(chēng)Y對(duì)X 部分函數(shù)依賴(lài)(Partial Functional Dependency),記作:X Y。例6-1中(Sno,Cno)Grade是完全函數(shù)依賴(lài),(Sno,Cno)Sname是部分函數(shù)依賴(lài),因?yàn)镾noSname成立,而Sno是(Sno,Cno)的真子集。3.傳遞與直接函數(shù)依賴(lài)如果XY,YZ,ZY,且Y X,Y不依賴(lài)于X,則稱(chēng)Z對(duì)X傳遞函數(shù)依賴(lài)(Transitive Functional Dependency)。記作:X Z。例6-1中有SnoSdept,SdeptMname成立,而且 Sdept Sno且Sdept不依賴(lài)于Sno,所以 。6.2.2 碼定定義義6-2 6-2 設(shè)設(shè)有有關(guān)關(guān)系系模模式式R(UR(U,F(xiàn))F),K K是是R(UR(U,F(xiàn))F)的的屬屬性性或或?qū)賹傩孕约虾?,若若有有K K U U,則則K K為為R R的一個(gè)的一個(gè)超碼超碼(Super key)(Super key)。定定義義6-3 6-3 設(shè)設(shè)有有關(guān)關(guān)系系模模式式R(UR(U,F(xiàn))F),K K是是R(UR(U,F(xiàn))F)的的屬屬性性或或?qū)賹傩孕约虾?,若若有有K K U U,則,則K K為為R R的的候選碼候選碼(Candidate key)(Candidate key)。當(dāng)一個(gè)關(guān)系的候選碼多于一個(gè),則可選定其中的一個(gè)作為主碼(Primary-key)。包含在任何一個(gè)候選碼中的屬性,稱(chēng)為主屬性(Prime Attribute)或碼屬性(Key Attribute)。不包含在任何碼中的屬性稱(chēng)為非主屬性(Non-prime Attribute)或非碼屬性(Non-key Attribute)。最簡(jiǎn)單的情況,候選碼只包含一個(gè)屬性。最復(fù)雜的情況,候選碼包含關(guān)系模式的所有屬性,稱(chēng)為全碼(All-key)。例6-2 關(guān)系模式C(Cno,Cbook,Credit),假設(shè)同一門(mén)課只有指定的唯一教材和指定唯一的學(xué)分。這個(gè)關(guān)系模式中單個(gè)屬性Cno是碼,用下橫線(xiàn)表示。例6-3 關(guān)系模式R(T,C,S),屬性T表示教師,屬性C表示課程,屬性S表示學(xué)生。假設(shè)一個(gè)教師可以講授多門(mén)課程,某門(mén)課程可以有多個(gè)教師講授,學(xué)生可以聽(tīng)不同教師講授的不同課程。那么,這個(gè)關(guān)系模式R的碼為(T,C,S),即全碼。6.2.2 碼定定義義6-4 6-4 關(guān)關(guān)系系模模式式R(UR(U,F(xiàn))F)中中,屬屬性性子子集集K K不不是是關(guān)關(guān)系系模模式式R R的的候候選選碼,但是另一個(gè)關(guān)系模式的候選碼,則稱(chēng)碼,但是另一個(gè)關(guān)系模式的候選碼,則稱(chēng)K K是是R R的外部碼,簡(jiǎn)稱(chēng)為的外部碼,簡(jiǎn)稱(chēng)為外碼外碼。例6-4 教師(教師號(hào),姓名,性別,職稱(chēng),學(xué)院號(hào))學(xué)院(學(xué)院號(hào),學(xué)院名,電話(huà),主任)其中,教師關(guān)系中的“學(xué)院號(hào)”就是教師關(guān)系的一個(gè)外碼。例6-5 學(xué)生選課關(guān)系模式。學(xué)生(學(xué)號(hào),姓名,性別,年齡,)課程(課程號(hào),課程名,任課老師,)選課(學(xué)號(hào),課程號(hào),成績(jī))(學(xué)號(hào),課程號(hào))是選課關(guān)系的碼,學(xué)號(hào)、課程號(hào)又分別是組成主碼的屬性(但單獨(dú)不是碼),它們分別是學(xué)生關(guān)系和課程關(guān)系的主碼,所以是選課關(guān)系的兩個(gè)外碼。6.2.3 邏輯蘊(yùn)含定定義義6-5 6-5 對(duì)對(duì)于于滿(mǎn)滿(mǎn)足足一一組組函函數(shù)數(shù)依依賴(lài)賴(lài)F F的的關(guān)關(guān)系系模模式式RURF,其其中中任任何何一一個(gè)個(gè)關(guān)關(guān)系系r r,若若函函數(shù)數(shù)依依賴(lài)賴(lài)都都成成立立(即即r r中中任任意意兩兩元元組組t t,s s,若若tX=sXtX=sX,則,則tY=sY)tY=sY),則稱(chēng),則稱(chēng)F F邏輯蘊(yùn)含邏輯蘊(yùn)含。Armstrong公理系統(tǒng)(Armstrongs axiom)設(shè)有關(guān)系模式R(U,F(xiàn)),F(xiàn)是R的屬性集上的函數(shù)依賴(lài)集,則對(duì)于R有以下推理規(guī)則:自反律(Reflexivity rule):若 ,則XY 為F所蘊(yùn)含。增廣律(Augmentation rule):若XY為F所蘊(yùn)含,且 ,則XZYZ為F所蘊(yùn)含。傳遞律(Transitivity):若XY 和 YZ為F所蘊(yùn)含,則X Z為F所蘊(yùn)含。函數(shù)依賴(lài)的推理規(guī)則Armstrong推理規(guī)則系統(tǒng):6.2.3 邏輯蘊(yùn)含合并規(guī)則(union rule):由XY,XZ,則有XYZ。偽傳遞規(guī)則(pseudo transitivity rule):由XY,WYZ,則有XWZ。分解規(guī)則:由XY及Z則有XZ。根據(jù)這3條推理規(guī)則可以得到下面3條很有用的推理規(guī)則:例6-6設(shè)有關(guān)系模式S,其中U=A,B,C,E,H,G,F(xiàn)=AB,AC,CEH,CEG,BH,可以推出F蘊(yùn)含的幾個(gè)函數(shù)依賴(lài):(1)由傳遞律可得AH,因?yàn)锳B且BH。(2)由合并規(guī)則可得CEHG,因?yàn)镃EH且CEG。(3)由偽傳遞規(guī)則可得AEG,因?yàn)锳C且CEG。引理6-1 XA1 A2 An成立的充分必要條件是XAi成立(i=1,2,n)。6.2.4 閉包定定義義6-6 6-6 F F為為關(guān)關(guān)系系模模式式R R上上的的函函數(shù)數(shù)依依賴(lài)賴(lài)集集,被被F F邏邏輯輯蘊(yùn)蘊(yùn)含含的的所有函數(shù)依賴(lài)組成的集合稱(chēng)為所有函數(shù)依賴(lài)組成的集合稱(chēng)為F F的的閉包閉包,記作,記作F F+。定定義義6-7 6-7 設(shè)設(shè)F F為為屬屬性性集集U U上上的的一一組組函函數(shù)數(shù)依依賴(lài)賴(lài),能能由由F F根根據(jù)據(jù)ArmstrongArmstrong公公理理導(dǎo)導(dǎo)出出,稱(chēng)稱(chēng)作作屬屬性性集集X X關(guān)關(guān)于于函函數(shù)數(shù)依依賴(lài)賴(lài)集集F F的閉包的閉包。Armstrong公理具有有效性和完備性,它們的具體表現(xiàn)形式為:有效性:由F出發(fā)根據(jù)Armstrong公理系統(tǒng)推導(dǎo)出來(lái)的每一個(gè)函數(shù)依賴(lài)一定是F所邏輯蘊(yùn)含的函數(shù)依賴(lài),即一定在F+。完備性:對(duì)于F所邏輯蘊(yùn)含(即F+)的每一函數(shù)依賴(lài),必定可以由F出發(fā)根據(jù)Armstrong公理系統(tǒng)推導(dǎo)出來(lái)。6.2.4 閉包引引理理6-2 6-2 設(shè)設(shè)F F為為屬屬性性集集U U上上的的一一組組函函數(shù)數(shù)依依賴(lài)賴(lài),能能由由F F根據(jù)根據(jù)ArmstrongArmstrong公理導(dǎo)出的充分必要條件是公理導(dǎo)出的充分必要條件是 。因此,判斷能否由Armstrong公理推導(dǎo)出的問(wèn)題,可以轉(zhuǎn)化為求,判斷是否為的子集的問(wèn)題。具體可以通過(guò)算法6-1來(lái)實(shí)現(xiàn)。算法6-1 求屬性集X(XU)關(guān)于U上的函數(shù)依賴(lài)集F的閉包。輸入:X,F(xiàn);輸出:;步驟如下:(1)令 ,i=0。(2)求B,這里B=。(3)(4)判斷 嗎?(5)若相等或 ,則 ,算法結(jié)束。(6)若不相等,則i=i+1 返回(2)步。6.2.4 閉包6.2.5 極小函數(shù)依賴(lài)集定定義義6-8 6-8 如如果果函函數(shù)數(shù)依依賴(lài)賴(lài)集集F F滿(mǎn)滿(mǎn)足足下下列列條條件件,則則稱(chēng)稱(chēng)F F為為一一個(gè)個(gè)極極小小函函數(shù)數(shù)依依賴(lài)賴(lài)集集。也稱(chēng)之為最小依賴(lài)集合或最小覆蓋。也稱(chēng)之為最小依賴(lài)集合或最小覆蓋。(1)F(1)F中任意一函數(shù)依賴(lài)的右部?jī)H含有一個(gè)屬性。中任意一函數(shù)依賴(lài)的右部?jī)H含有一個(gè)屬性。(2)F(2)F中不存在這樣的函數(shù)依賴(lài)中不存在這樣的函數(shù)依賴(lài) ,使得,使得F F與與F F 等價(jià)。等價(jià)。(3)F(3)F中不存在這樣的函數(shù)依賴(lài)中不存在這樣的函數(shù)依賴(lài) ,真子集,真子集A A使得使得F F 與與F F等價(jià)等價(jià)。例6-8 設(shè)有關(guān)系模式SCG,其中U=Sno,Sname,Cno,Cname,Grade。對(duì)于函數(shù)依賴(lài)集F=Sno Sname,Cno Cname,(Sno,Cno)Grade 可以根據(jù)定義6-8驗(yàn)證F是最小覆蓋。6.2.5 極小函數(shù)依賴(lài)集定定理理6-1 6-1 每每一一個(gè)個(gè)函函數(shù)數(shù)依依賴(lài)賴(lài)集集F F都都等等價(jià)價(jià)于于一一個(gè)個(gè)極極小小函函數(shù)數(shù)依依賴(lài)賴(lài)集集FmFm,這這個(gè)個(gè)Fm Fm 稱(chēng)為稱(chēng)為F F的的最小依賴(lài)集最小依賴(lài)集。6.2.5 極小函數(shù)依賴(lài)集例6-9 F=X Y,Y X,Y Z,X Z,Z XFm1=X Y,Y Z,Z XFm2=X Y,Y X,X Z,Z X這里給出了F的兩個(gè)最小依賴(lài)集Fm1、Fm2。若改造后的F與原來(lái)的F相同,說(shuō)明F本身就是一個(gè)最小依賴(lài)集,因此定理6-1的證明給出的最小化過(guò)程也可以看作為檢驗(yàn)F是否為最小依賴(lài)集的一個(gè)算法。如果存在兩個(gè)關(guān)系模式R1與R2,其中F1與F2等價(jià),那么這兩個(gè)關(guān)系模式等價(jià)。因此,在R中用與F等價(jià)的依賴(lài)集G來(lái)代替F是允許的。例6-10 設(shè)F是關(guān)系模式R(A,B,C)的函數(shù)依賴(lài)集,F(xiàn)=ABC,BC,AB,ABC,求其最小函數(shù)依賴(lài)集Fm。解:將F中每個(gè)函數(shù)依賴(lài)的右部均變成單屬性。則,F(xiàn)=AB,AC,BC,AB,ABC (2)去掉F中各函數(shù)依賴(lài)左部多余的屬性。在ABC中,由于A+=(ABC),所以A+包含屬性C,因此,B是左部多余的屬性,可去掉,這樣ABC簡(jiǎn)化為AC。則F=AB,AC,BC。(3)去掉F中冗余的函數(shù)依賴(lài)。由于AC可由AB和BC推出,因此,可去掉AC。因此,F(xiàn)m=AB,BC6.3規(guī)范化要要進(jìn)進(jìn)行行科科學(xué)學(xué)合合理理的的數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)邏邏輯輯設(shè)設(shè)計(jì)計(jì),需需要要引引入入規(guī)規(guī)范范化化理理論論。數(shù)數(shù)據(jù)據(jù)依依賴(lài)賴(lài)滿(mǎn)滿(mǎn)足足一一定定約約束束的的關(guān)關(guān)系系模模式式的的集集合合稱(chēng)稱(chēng)為為范范式式(Normal(Normal FormsForms,NF)NF)。根根據(jù)據(jù)依依賴(lài)賴(lài)程程度度,范范式式可可分分為為第第一一范范式式(1NF)(1NF)、第第二二范范式式(2NF)(2NF)、第第三三范范式式(3NF)(3NF)、BCNFBCNF、第四范式、第四范式(4NF)(4NF)和第五范式和第五范式(5NF)(5NF)等。等。所所謂謂“第第幾幾范范式式”,是是表表示示關(guān)關(guān)系系的的某某一一種種級(jí)級(jí)別別,稱(chēng)稱(chēng)某某關(guān)關(guān)系系模模式式R R為為第第幾范式,也可以寫(xiě)成幾范式,也可以寫(xiě)成RXNFRXNF。各各范范式式之之間間的的關(guān)關(guān)系系可可以以表表示示為為:1NF1NF 2NF2NF 3NF3NF BCNFBCNF 4NF4NF 5NF5NF。其其中中,一一個(gè)個(gè)低低一一級(jí)級(jí)范范式式的的關(guān)關(guān)系系模模式式,通通過(guò)過(guò)模模式式分分解解可可以以轉(zhuǎn)轉(zhuǎn)換換為為若若干干個(gè)個(gè)高一級(jí)范式的關(guān)系模式集合,這個(gè)過(guò)程叫做高一級(jí)范式的關(guān)系模式集合,這個(gè)過(guò)程叫做規(guī)范化規(guī)范化。6.3.1 第一范式(1NF)定定義義6-9 6-9 若若一一個(gè)個(gè)關(guān)關(guān)系系模模式式R R中中每每一一個(gè)個(gè)屬屬性性值值都都是是一一個(gè)個(gè)不不可可再再分分的的最最小數(shù)據(jù)單元,則稱(chēng)關(guān)系模式滿(mǎn)足第一范式,記作小數(shù)據(jù)單元,則稱(chēng)關(guān)系模式滿(mǎn)足第一范式,記作R 1NFR 1NF。第一范式規(guī)定了一個(gè)關(guān)系中的屬性必須是“原子”的,即排斥屬性值為元組、數(shù)組或某種復(fù)合數(shù)據(jù)的可能性,要求關(guān)系數(shù)據(jù)庫(kù)中所有關(guān)系的屬性值都是“最簡(jiǎn)形式”。例6-11 1NF異常情況。關(guān) 系 模 式 S-C-G(Sno,Sname,Sdept,Mname,Cno,Cname,Grade),S-C-G的碼為(Sno,Cno),S-C-G中每一個(gè)屬性值都是一個(gè)不可再分的最小數(shù)據(jù)單元,則S-C-G 1NF。該關(guān)系模式存在以下三種異常:(1)插入異常。假若要插入一個(gè)學(xué)生,但該生還未選課,即這個(gè)學(xué)生無(wú)Cno,這樣的元組就插不進(jìn)S-C-G中。因?yàn)椴迦朐M時(shí)必須給定碼值,而這時(shí)碼值的Cno為空,因而學(xué)生的信息無(wú)法插入。6.3.1 第一范式(1NF)(2)刪除異常。假定某個(gè)學(xué)生S4只選一門(mén)課C3,現(xiàn)在C3這門(mén)課他也不選了,那么C3這個(gè)數(shù)據(jù)項(xiàng)就要?jiǎng)h除。而C3是主屬性,刪除了C3,整個(gè)元組就必須跟著刪除,使得S4的其他信息也被刪除了,從而造成刪除異常,即不應(yīng)該刪除的信息也刪除了。(3)修改復(fù)雜。某個(gè)學(xué)生從數(shù)學(xué)系(MA)轉(zhuǎn)到計(jì)算機(jī)科學(xué)系(CS),這本來(lái)只需修改此學(xué)生元組中的Sdept分量。但因?yàn)殛P(guān)系模式S-C-G中還含有系主任姓名Mname屬性,學(xué)生轉(zhuǎn)系時(shí)將同時(shí)改變系主任,因而還必須修改元組中Mname分量。另外,如果這個(gè)學(xué)生選修了k門(mén)課,Sdept,Mname重復(fù)存儲(chǔ)了k次,不僅存儲(chǔ)冗余度大,而且必須無(wú)遺漏地修改k個(gè)元組中全部Sdept,Mname信息,造成修改的復(fù)雜化。分析上面的例子,可以發(fā)現(xiàn)問(wèn)題在于關(guān)系模式S-C-G有兩種非主屬性。一種如Grade,它對(duì)碼是完全函數(shù)依賴(lài),另一種如Sdept,Mname對(duì)碼不是完全函數(shù)依賴(lài),即部分函數(shù)依賴(lài)。6.3.2 第二范式(2NF)定定義義6-10 6-10 若若R R 1NF1NF,且且每每一一個(gè)個(gè)非非主主屬屬性性完完全全函函數(shù)數(shù)依依賴(lài)賴(lài)于于R R的的碼碼,則則R 2NFR 2NF。非2NF關(guān)系或1NF關(guān)系向2NF轉(zhuǎn)換的方法是:消除其中的部分函數(shù)依賴(lài),一般是將一個(gè)關(guān)系模式分解為多個(gè)2NF的關(guān)系模式。例 6-1中 關(guān) 系 模 式 S-C-G(Sno,Sname,Sdept,Mname,Cno,Cname,Grade),S-C-G的碼為(Sno,Cno),則該關(guān)系模式屬性之間的函數(shù)依賴(lài)表示及依賴(lài)情況如圖6-1所示。6.3.2 第二范式(2NF)定定義義6-10 6-10 若若R R 1NF1NF,且且每每一一個(gè)個(gè)非非主主屬屬性性完完全全函函數(shù)數(shù)依依賴(lài)賴(lài)于于R R的的碼碼,則則R 2NFR 2NF。非2NF關(guān)系或1NF關(guān)系向2NF轉(zhuǎn)換的方法:消除其中的部分函數(shù)依賴(lài),一般是將一個(gè)關(guān)系模式分解為多個(gè)2NF的關(guān)系模式。例6-1中關(guān)系模式S-C-G屬性之間的函數(shù)依賴(lài)表示及依賴(lài)情況如圖6-1所示。圖6-1 S-C-G存在部分函數(shù)依賴(lài)6.3.2 第二范式(2NF)例6-12 1NF分解示例。為了使關(guān)系模式S-C-G滿(mǎn)足第二范式,我們可以對(duì)它進(jìn)行模式分解,分解成如下3個(gè)關(guān)系模式:S-C-G1,其中U1=Sno,Cno,Grade,F(xiàn)1=(Sno,Cno)Grade,見(jiàn)圖6-2。S-C-G2,其中U2=Sno,Sname,Sdept,Mname,F(xiàn)2=Sno Sname,Sno Sdept,Sdept Mname,Sno Mname,見(jiàn)圖6-3。S-C-G3,其中U3=Cno,Cname,F(xiàn)3=CnoCname,見(jiàn)圖6-4。圖6-4滿(mǎn)足2NF的S-C-G3圖6-2 滿(mǎn)足2NF的S-C-G1圖6-3 滿(mǎn)足2NF的S-C-G26.3.2 第二范式(2NF)例6-13 2NF異常情況。以例6-12分解出的第二個(gè)2NF關(guān)系模式(圖6-3)為例:S-C-G2(Sno,Sname,Sdept,Mname)該關(guān)系模式的主鍵為Sno,其中的函數(shù)依賴(lài)關(guān)系有:SnoSname,SnoSdept,SdeptMname,SnoMname該關(guān)系模式存在傳遞函數(shù)依賴(lài),即Sno Mname為傳遞函數(shù)依賴(lài),存在以下異常:(1)插入異常。插入尚未招生的系時(shí),不能插入,因?yàn)橹麈I是Sno,而其值是NULL。(2)刪除異常。如某系學(xué)生全畢業(yè)了,刪除學(xué)生則會(huì)刪除系的信息。(3)冗余。由于系有眾多學(xué)生,而每個(gè)學(xué)生均帶有系信息,故冗余。(4)更新異常。由于存在冗余,故如修改一個(gè)系信息,則要修改多行。6.3.3 第三范式(3NF)例6-12中的S-C-G2(Sno,Sname,Sdept,Mname)滿(mǎn)足第二范式,其中的函數(shù)依賴(lài)關(guān)系有:SnoSname,SnoSdept,SdeptMname,SnoMname該關(guān)系模式存在傳遞函數(shù)依賴(lài),即SnoMname為傳遞函數(shù)依賴(lài)。通過(guò)消除該傳遞函數(shù)依賴(lài),將其分解為兩個(gè)3NF關(guān)系模式,各自的模式及函數(shù)依賴(lài)分別如下:(1)Stu(Sno,Sname,Sdept)SnoSname,SnoSdept(2)Dept(Sdept,Mname)SdeptMname,Mname Sdept 定定義義6-11 6-11 關(guān)關(guān)系系模模式式RURF中中若若不不存存在在這這樣樣的的候候選選碼碼X X,屬屬性性組組Y Y及及非主屬性非主屬性Z(Z Z(Z 不包含于不包含于Y)Y)使得使得X X Y Y,Y Y Z Z成立,則稱(chēng)成立,則稱(chēng)RUR 3NFF 3NF。2NF關(guān)系向3NF轉(zhuǎn)換的方法是:消除傳遞函數(shù)依賴(lài),將2NF關(guān)系分解為多個(gè)3NF關(guān)系模式。6.3.3 第三范式(3NF)現(xiàn)在,例6-1關(guān)系模式S-C-G(Sno,Sname,Sdept,Mname,Cno,Cname,Grade)的依賴(lài)情況如圖6-5。3NF關(guān)系仍可能存在插入異常、刪除異常、冗余和更新異常。因?yàn)檫€可能存在“主屬性”、“部分函數(shù)依賴(lài)”或“傳遞函數(shù)依賴(lài)”于碼的情況。6.3.3 第三范式(3NF)例6-15 3NF異常情況。上例中關(guān)系模式存在以下異常:(1)插入異常。插入尚未選課的學(xué)生時(shí),不能插入;或插入沒(méi)有學(xué)生選課的課程時(shí),不能插入,因?yàn)樵撽P(guān)系模式有兩個(gè)候選鍵,無(wú)論哪種情況的插入,都會(huì)出現(xiàn)候選鍵中的某個(gè)主屬性值為NULL,故不能插入。(2)刪除異常。如選修某課程的學(xué)生全畢業(yè)了,刪除學(xué)生,則會(huì)刪除課程的信息。(3)冗余。每個(gè)選修某課程的學(xué)生均帶有教師的信息,故冗余。(4)更新異常。由于存在冗余,故如修改某門(mén)課程的信息,則要修改多行。6.3.4 BCNF例6-19 3NF分解示例 以例6-15 中的關(guān)系模式STC(Sno,Tno,Cno)為例,該關(guān)系模式的候選碼為(Sno,Cno)和(Sno,Tno)。該關(guān)系模式屬于第三范式,且存在一個(gè)主屬性Cno部分函數(shù)依賴(lài)于候選碼(Sno,Tno)的情況。通過(guò)消除主屬性Cno的部分函數(shù)依賴(lài),將其分解為如下兩個(gè)BCNF關(guān)系模式:ST(Sno,Tno)和TC(Tno,Cno)。這時(shí),分解出的兩個(gè)BCNF關(guān)系模式,不再存在主屬性部分函數(shù)依賴(lài)于碼的情況了。定義6-12 關(guān)系模式R 1NF。若對(duì)于R中的每一個(gè)函數(shù)依賴(lài)XY且YX,X必含有碼,則R BCNF。從函數(shù)依賴(lài)的角度得出,一個(gè)滿(mǎn)足BCNF的關(guān)系模式有:(1)所有非主屬性都完全函數(shù)依賴(lài)于每個(gè)候選碼。(2)所有主屬性都完全函數(shù)依賴(lài)于每個(gè)不包含它的候選碼。(3)沒(méi)有任何屬性完全函數(shù)依賴(lài)于非候選碼的任何一組屬性。(4)由此看出,BCNF范式不僅排除了任何屬性碼的部分依賴(lài)和傳遞依賴(lài),還排除了主屬性之間的傳遞依賴(lài)。6.3.5 多值依賴(lài)與第四范式(4NF)定定義義6-13 6-13 設(shè)設(shè)R(U)R(U)是是屬屬性性集集U U上上的的一一個(gè)個(gè)關(guān)關(guān)系系模模式式。X X,Y Y,Z Z是是U U的的子子集集,并并且且Z=UZ=U X X Y Y。關(guān)關(guān)系系模模式式R(U)R(U)中中多多值值依依賴(lài)賴(lài)X XY Y成成立立,當(dāng)當(dāng)且且僅僅當(dāng)當(dāng)對(duì)對(duì)R(U)R(U)的的任任一一關(guān)關(guān)系系r r,給給定定的的一一對(duì)對(duì)(x(x,z)z)值值,有有一一組組Y Y的的值值,這這組組值值僅僅僅僅決決定于定于x x值,而與值,而與z z值無(wú)關(guān)。值無(wú)關(guān)。多值依賴(lài)具有以下性質(zhì):(1)多值依賴(lài)具有對(duì)稱(chēng)性。即若XY,則XZ,其中Z=U X Y。(2)多值依賴(lài)的傳遞性。即若XY,YZ,則XZ Y。(3)函數(shù)依賴(lài)可以看作是多值依賴(lài)的特殊情況。即若XY,則XY。這是因?yàn)楫?dāng)XY時(shí),對(duì)X的每一個(gè)值x,Y有一個(gè)確定的值y與之對(duì)應(yīng),所以XY。(4)多值依賴(lài)合并律。若XY,XZ,則XYZ。(5)多值依賴(lài)分解律。若XY,XZ,則XYZ。6.3.5 多值依賴(lài)與第四范式(4NF)多值依賴(lài)與函數(shù)依賴(lài)的區(qū)別:(1)多值依賴(lài)的有效性與屬性集的范圍有關(guān)。若XY在U上成立,則在W(X Y W U)上一定成立;反之則不然,即XY在W(W U)上成立,在U上并不一定成立。這是因?yàn)槎嘀狄蕾?lài)的定義中不僅涉及屬性組X和Y,而且涉及U中其余屬性Z。(2)若函數(shù)依賴(lài)XY在R(U)上成立,則對(duì)于任何Y Y,均有XY 成立。多值依賴(lài)XY若在R(U)上成立,卻不能斷言對(duì)于任何Y Y有XY 成立。(3)函數(shù)依賴(lài)是對(duì)屬性取值的約束。(4)多值依賴(lài)是對(duì)元組的約束。針對(duì)Teach(Cname,Tname,Rbook)關(guān)系模式,存在多值依賴(lài)CnameTname,如果出現(xiàn)元組和,則必有元組和。6.3.5 多值依賴(lài)與第四范式(4NF)定定義義6-14 6-14 關(guān)關(guān)系系模模式式RURF 1NF1NF,如如果果對(duì)對(duì)于于R R的的每每個(gè)個(gè)非非平平凡凡多多值值依依賴(lài)賴(lài)X XY(YY(Y X)X),X X都含有碼,則稱(chēng)都含有碼,則稱(chēng)RURF 4NF4NF。4NF就是限制關(guān)系模式的屬性之間不允許有非平凡且非函數(shù)依賴(lài)的多值依賴(lài)。例6-21關(guān)系模式Teach(Cname,Tname,Rbook)中,CnameTname,CnameRbook,它們都是非平凡的多值依賴(lài)。而Cname不是碼,關(guān)系模式Teach的碼是(Cname,Tname,Rbook)和(Tname,Rbook),因此Teach4NF。例6-22 BCNF分解示例以例6-20關(guān)系模式Teach(Cname,Tname,Rbook)為例,其上存在非平凡多值依賴(lài)關(guān)系,通過(guò)消除非平凡多值依賴(lài),可將Teach分解為以下兩個(gè)4NF關(guān)系模式:CT(Cname,Tname)和CR(Cname,Rbook)。分解后的兩個(gè)關(guān)系模式CT和CR,都不再存在多值依賴(lài)關(guān)系了.6.3.6 連接依賴(lài)與第五范式(5NF)例6-23 設(shè)有供應(yīng)關(guān)系SPD(Sno,Pno,Dno),其中Sno、Pno和Dno表示供應(yīng)商編號(hào)、零件編號(hào)和工程編號(hào)。由于SPD的候選碼為(Sno,Pno,Dno),包含了該關(guān)系模式的所有屬性,顯然,它不存在有意義的函數(shù)依賴(lài)和多值依賴(lài),因此,SPD屬于4NF。令SP=(Sno,Pno)、PD=(Pno,Dno)和SD=(Sno,Dno),則有連接依賴(lài),因此,SPD存在連接依賴(lài)。6.3.6 連接依賴(lài)與第五范式(5NF)連接依賴(lài)和5NF有如下特征:(1)連接依賴(lài)不能由語(yǔ)義直接推導(dǎo),而只能通過(guò)關(guān)系的連接運(yùn)算反映出來(lái)。(2)關(guān)系分解成5NF后,除了按超鍵還可再分外,該分解的都分解了。有些文獻(xiàn)稱(chēng)5NF為PJNF(Projection-Join Normal Form),意指它概括了以投影和連接運(yùn)算為基礎(chǔ)的所有規(guī)范化。(3)除了前面介紹的范式外,還存在其他范式,如弱4NF、強(qiáng)PJNF、超強(qiáng)PJNF等。而且,如將規(guī)范化概念擴(kuò)大,不限于投影和連接這樣的規(guī)范化形式,而是將規(guī)范化理解為按數(shù)據(jù)語(yǔ)義改善關(guān)系結(jié)構(gòu)的總措施,則仍有工作可做,例如,有可能出現(xiàn)“選擇合并”為特征的規(guī)范化理論。(4)由于一般的連接依賴(lài)很難直觀地從數(shù)據(jù)語(yǔ)義中發(fā)現(xiàn),故在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),一般無(wú)須考慮這種數(shù)據(jù)依賴(lài)。6.3.6 連接依賴(lài)與第五范式(5NF)4NF關(guān)系向5NF的轉(zhuǎn)換方法是:消除不是由候選鍵所蘊(yùn)涵的連接依賴(lài),即將4NF關(guān)系分解成多個(gè)5NF關(guān)系模式。例6-24 4NF分解示例以例6-23 供應(yīng)關(guān)系SPD(Sno,Pno,Dno)模式為例:通過(guò)消除連接依賴(lài),可將SPD分解為如下3個(gè)5NF的關(guān)系模式:SP(Sno,Pno)、PD(Pno,Dno)和SD(Sno,Dno)。分解后的3個(gè)關(guān)系模式SP、PD和SD,均不存在任何連接依賴(lài),并且每一個(gè)模式都是5NF,可以消除冗余及其操作異常現(xiàn)象。6.3.7 規(guī)范化小結(jié)在關(guān)系數(shù)據(jù)庫(kù)中,人們發(fā)現(xiàn)有些關(guān)系模式存在插入、刪除異常,修改復(fù)雜,數(shù)據(jù)冗余等問(wèn)題。為了尋求解決的方法,研究出了規(guī)范化理論。規(guī)范化的基本思想是逐步消除不合適的數(shù)據(jù)依賴(lài),使模式中的各關(guān)系模式達(dá)到某種程度的“分離”,讓一個(gè)關(guān)系描述一個(gè)概念、一個(gè)實(shí)體或者實(shí)體間的一種聯(lián)系。若多于一個(gè)概念就把它“分離”出去。因此所謂規(guī)范化實(shí)質(zhì)上也是概念的單一化。以上我們介紹的幾種范式,存在著逐步深化的關(guān)系,可以概括為圖6-6。各步驟描述如下:(1)對(duì)1NF關(guān)系模式進(jìn)行投影(即分解),消除原關(guān)系模式中非主屬性對(duì)鍵的部分函數(shù)依賴(lài),將1NF關(guān)系模式轉(zhuǎn)換為多個(gè)2NF關(guān)系模式。(2)對(duì)2NF關(guān)系模式進(jìn)行投影分解,消除原關(guān)系模式中非主屬性對(duì)鍵的傳遞函數(shù)依賴(lài),將2NF關(guān)系模式轉(zhuǎn)換為多個(gè)3NF關(guān)系模式。(3)對(duì)3NF關(guān)系模式進(jìn)行投影分解,消除原關(guān)系模式中主屬性對(duì)鍵的部分和傳遞函數(shù)依賴(lài),即使決定屬性成為所分解關(guān)系的候選鍵,從而得到多個(gè)BCNF關(guān)系模式。6.3.7 規(guī)范化小結(jié)以上3步可合為一步,即對(duì)原關(guān)系模式進(jìn)行分解,消除決定屬性不是候選鍵的任何函數(shù)依賴(lài)。(4)對(duì)BCNF關(guān)系模式進(jìn)行投影分解,消除原關(guān)系模式中非平凡且非函數(shù)依賴(lài)的多值依賴(lài),將BCNF關(guān)系模式轉(zhuǎn)換為多個(gè)4NF關(guān)系模式。(5)對(duì)4NF關(guān)系模式進(jìn)行投影分解,消除原關(guān)系模式中不是由候選碼所蘊(yùn)涵的連接依賴(lài),將4NF關(guān)系模式轉(zhuǎn)換為多個(gè)5NF關(guān)系模式。圖6-6 關(guān)系模式規(guī)范化的基本步驟6.4 模式分解將將低低一一級(jí)級(jí)的的關(guān)關(guān)系系模模式式分分解解為為若若干干個(gè)個(gè)高高一一級(jí)級(jí)的的關(guān)關(guān)系系模模式式。這這種種分分解解并并不不是是唯唯一一的的,下下面面我我們們將將介介紹紹模模式式分分解解的的一一些些理論和算法。理論和算法。6.4.1 模式分解的相關(guān)定義人們從不同的角度去觀察問(wèn)題,對(duì)關(guān)系模式分解中的“等價(jià)”的概念形成了三種不同的遵循標(biāo)準(zhǔn):(1)分解具有“無(wú)損連接性”;(2)分解要“保持函數(shù)依賴(lài)”;(3)分解既具有“無(wú)損連接性”,又要“保持函數(shù)依賴(lài)”。這一節(jié)要討論的問(wèn)題是:(1)“無(wú)損連接性”和“保持函數(shù)依賴(lài)”的含義是什么?如何判斷?(2)對(duì)于不同的分解等價(jià)定義,究竟能達(dá)到何種程度的分離,即分離后的關(guān)系模式是第幾范式;(3)如何實(shí)現(xiàn)分離,即給出分解的算法。6.4.2 分解的無(wú)損連接性和保持函數(shù)依賴(lài)性6.4.2 分解的無(wú)損連接性和保持函數(shù)依賴(lài)性6.4.2 分解的無(wú)損連接性和保持函數(shù)依賴(lài)性6.4.2 分解的無(wú)損連接性和保持函數(shù)依賴(lài)性ABCDEa1a2a3b14b15b21b22a3a4b25b31b32b33a4a5ABCDEa1a2a3a4a5b21b22a3a4a5b31b32b33a4a5圖6-7 分解具有無(wú)損連接的一個(gè)實(shí)例6.4.3 模式分解算法關(guān)于模式分解的幾個(gè)重要事實(shí)是:(1)若要求分解保持函數(shù)依賴(lài),那么模式分解總可以達(dá)到3NF,但不一定能達(dá)到BCNF;(2)若要求分解既保持函數(shù)依賴(lài),又具有無(wú)損連結(jié)性,可以達(dá)到3NF,但不一定能達(dá)到BCNF;(3)若要求分解具有無(wú)損連結(jié)性,那一定可達(dá)到4NF。6.4.3 模式分解算法6.4.3 模式分解算法本章小結(jié)一個(gè)合適的數(shù)據(jù)庫(kù)模式不僅可以使數(shù)據(jù)的基本關(guān)系占用的存儲(chǔ)空間最小化,還可以消除大量數(shù)據(jù)冗余以及由此帶來(lái)的各種操作異常。數(shù)據(jù)冗余是指同一數(shù)據(jù)在一個(gè)或者多個(gè)數(shù)據(jù)文件中重復(fù)存儲(chǔ),它不僅會(huì)大量占用和消耗系統(tǒng)資源,造成不必要的開(kāi)銷(xiāo),更嚴(yán)重的是會(huì)帶來(lái)各種數(shù)據(jù)操作異常,導(dǎo)致數(shù)據(jù)庫(kù)的性能?chē)?yán)重降低。數(shù)據(jù)依賴(lài)?yán)碚摽梢詭臀覀兏脑礻P(guān)系模式,通過(guò)分解較大的關(guān)系模式來(lái)消除其中不合適的數(shù)據(jù)依賴(lài),以解決數(shù)據(jù)冗余及其帶來(lái)的各種問(wèn)題。本章詳細(xì)討論了函數(shù)依賴(lài)?yán)碚?、范式的概念和模式分解的方法。?shù)據(jù)依賴(lài)是一個(gè)關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系。數(shù)據(jù)依賴(lài)有很多種,其中最重要的有函數(shù)依賴(lài)、多值依賴(lài)和連接依賴(lài)。函數(shù)依賴(lài)是一種語(yǔ)義范疇的概念,所以要從語(yǔ)義的角度來(lái)確定各個(gè)關(guān)系的函數(shù)依賴(lài)。它有3種基本形式:平凡與非平凡函數(shù)依賴(lài)、完全與部分函數(shù)依賴(lài)、傳遞與直接函數(shù)依賴(lài)。在研究函數(shù)依賴(lài)時(shí),有時(shí)需要從已知的一些函數(shù)依賴(lài),推導(dǎo)出另外一些函數(shù)依賴(lài),這就屬于函數(shù)依賴(lài)的邏輯蘊(yùn)含討論的范疇。Armstrong公理系統(tǒng)用來(lái)對(duì)函數(shù)依賴(lài)之間的邏輯蘊(yùn)含關(guān)系進(jìn)行推理。在此基礎(chǔ)上,可以推理出函數(shù)依賴(lài)集的閉包,也可以計(jì)算出函數(shù)依賴(lài)集的最小依賴(lài)集。數(shù)據(jù)依賴(lài)滿(mǎn)足一定約束的關(guān)系模式的集合稱(chēng)為范式。根據(jù)依賴(lài)程度,范式可分為第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF、第四范式(4NF)和第五 范 式(5NF)等。各 范 式 之 間 的 關(guān) 系 可 以 表 示 為:1NF 2NF 3NF BCNF 4NF 5NF。其中,一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式集合,這個(gè)過(guò)程叫做規(guī)范化。模式分解的過(guò)程并不是唯一的。思考練習(xí) 思考練習(xí)思考練習(xí)
收藏
編號(hào):48760729
類(lèi)型:共享資源
大小:10.02MB
格式:ZIP
上傳時(shí)間:2022-01-14
30
積分
- 關(guān) 鍵 詞:
-
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用
數(shù)據(jù)庫(kù)技術(shù)
應(yīng)用
電子
課件
- 資源描述:
-
《數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用》電子課件,數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用,數(shù)據(jù)庫(kù)技術(shù),應(yīng)用,電子,課件
展開(kāi)閱讀全文
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶(hù)書(shū)面授權(quán),請(qǐng)勿作他用。