數(shù)據(jù)庫(kù)設(shè)計(jì)理論_第1頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)理論_第2頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)理論_第3頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)理論_第4頁(yè)
數(shù)據(jù)庫(kù)設(shè)計(jì)理論_第5頁(yè)
已閱讀5頁(yè),還剩8頁(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)介

-.z.數(shù)據(jù)庫(kù)的設(shè)計(jì)理論第一節(jié),關(guān)系模式的設(shè)計(jì)問(wèn)題一概念:1.關(guān)系模型:用二維表來(lái)表示實(shí)體集,用外鍵來(lái)表示實(shí)體間的聯(lián)系,這樣的數(shù)據(jù)模型,叫做關(guān)系數(shù)據(jù)模型。關(guān)系模型包含內(nèi)涵和外延兩個(gè)方面:外延:就是關(guān)系或?qū)嵗⒒虍?dāng)前值。它與時(shí)間有關(guān),隨時(shí)間的變化而變化。(主要是由于元組的插入、刪除、修改等操作引起的)內(nèi)涵:內(nèi)涵是與時(shí)間獨(dú)立的,它包括關(guān)系屬性、以及域的一些定義和說(shuō)明。還有數(shù)據(jù)的各種完整性約束。數(shù)據(jù)的完整性約束分為靜態(tài)約束和動(dòng)態(tài)約束。靜態(tài)約束包括數(shù)據(jù)之間的聯(lián)系(稱為數(shù)據(jù)依賴),主鍵的設(shè)計(jì)和各種限制。動(dòng)態(tài)約束主要定義如插入、刪除和修改等操作的影響。通常我們稱內(nèi)涵為關(guān)系模式。2.關(guān)系模式:是對(duì)一個(gè)關(guān)系的描述,二維表的表頭那一行稱為關(guān)系模式,又稱為表的框架或記錄類型。關(guān)系模式的定義包括:模式名、屬性名、值域名和模式的主鍵。關(guān)系模式僅僅是對(duì)數(shù)據(jù)特征的描述。關(guān)系模式的一般形式為R(U,D,DOM,F)R是關(guān)系名。U是全部屬性的集合。D是屬性域的集合。DOM是U和D之間的映射關(guān)系,關(guān)系運(yùn)算的安全限制。F是屬性間的各種約束關(guān)系,也稱為數(shù)據(jù)依賴。關(guān)系模式可以表示為:關(guān)系模式(屬性名1,屬性名2,……,屬性名n)示例:學(xué)生(**,,年齡,性別,籍貫)。當(dāng)且僅當(dāng)U上的一個(gè)關(guān)系r滿足F時(shí),r就稱為關(guān)系模式R(U,F(xiàn))上的一個(gè)關(guān)系,R是關(guān)系的型,r是關(guān)系的值,每個(gè)值稱為R的一個(gè)關(guān)系。關(guān)系數(shù)據(jù)庫(kù)模式:一個(gè)數(shù)據(jù)庫(kù)是由多個(gè)關(guān)系構(gòu)成的。一個(gè)關(guān)系數(shù)據(jù)庫(kù)對(duì)應(yīng)多個(gè)不同的關(guān)系模式,關(guān)系數(shù)據(jù)庫(kù)模式是一個(gè)數(shù)據(jù)庫(kù)中所有的關(guān)系模式的集合。它規(guī)定了數(shù)據(jù)庫(kù)的全局邏輯結(jié)構(gòu)。關(guān)系數(shù)據(jù)庫(kù)模式可以表示為:S={Ri<Ui,Di,DOM,Fi>|i=1,2,…,n}3.關(guān)系子模式關(guān)系子模式是用戶所用到的那部分?jǐn)?shù)據(jù)的描述。外模式是關(guān)系子模式的集合。4.存儲(chǔ)模式存儲(chǔ)模式及內(nèi)模式。關(guān)系數(shù)據(jù)庫(kù)理論的主要內(nèi)容:(1)數(shù)據(jù)依賴。數(shù)據(jù)依賴起著核心的作用。(2)*式。(3)模式的設(shè)計(jì)方法。如何設(shè)計(jì)一個(gè)合理的數(shù)據(jù)庫(kù)模式:(1)與實(shí)際問(wèn)題相結(jié)合。泛關(guān)系模式:把現(xiàn)實(shí)問(wèn)題的所有屬性組成一個(gè)關(guān)系模式泛關(guān)系:泛關(guān)系模式的實(shí)例稱為泛關(guān)系。泛關(guān)系模式中存在的問(wèn)題:a數(shù)據(jù)冗余b更新異常,c插入異常d刪除異常。(2)數(shù)據(jù)庫(kù)設(shè)計(jì)理論:借助近代代數(shù)工具,把抽象的數(shù)據(jù)理論同實(shí)際問(wèn)題結(jié)合起來(lái)。理論基礎(chǔ):數(shù)據(jù)依賴(數(shù)據(jù)的相關(guān)性)。二,關(guān)系模式及其評(píng)價(jià)。1.關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的核心:關(guān)系模式的設(shè)計(jì)。2.關(guān)系模式的設(shè)計(jì):按照一定的原則,從數(shù)量眾多的而又互相關(guān)聯(lián)的數(shù)據(jù)中構(gòu)造出一組即能較好的反映現(xiàn)實(shí)世界,而又有良好的操作性能的關(guān)系模式。3.關(guān)系模式的優(yōu)劣、評(píng)價(jià)、改進(jìn):冗余度高修改困難插入問(wèn)題刪除問(wèn)題這些問(wèn)題的產(chǎn)生原因是:屬性間的約束關(guān)系太強(qiáng),即數(shù)據(jù)間的依賴關(guān)系太強(qiáng)。解決的方法:將關(guān)系模式分解為一組較理想的關(guān)系模式。第二節(jié)函數(shù)依賴一,函數(shù)依賴FunctionalDependency函數(shù)依賴是數(shù)據(jù)依賴的一種,反映屬性或?qū)傩灾g的依存、互相制約的關(guān)系,既反映現(xiàn)實(shí)世界的約束關(guān)系。二,函數(shù)依賴的定義設(shè)R(U)是屬性U上的一個(gè)關(guān)系模式,*和Y均為U={A1,A2,…An}的子集,r為R的任一關(guān)系,如果對(duì)于r中的任意兩個(gè)元組u和v,只要有U[*]=V[*],就有U[Y]=V[Y],則稱*函數(shù)決定Y,或稱Y函數(shù)依賴于*,記作:*→Y。三,函數(shù)依賴的語(yǔ)義*疇:1.語(yǔ)義:數(shù)據(jù)所反映的現(xiàn)實(shí)世界事務(wù)本質(zhì)的聯(lián)系。2.根據(jù)語(yǔ)義來(lái)確定函數(shù)依賴型的存在與否。3.函數(shù)依賴反映屬性之間的一般規(guī)律,必須在關(guān)系模式F的任何一個(gè)關(guān)系r都滿足約束條件?;仡櫢拍铈I:由一個(gè)或多個(gè)屬性組成。設(shè)R(U)為一個(gè)關(guān)系模式,F(xiàn)為R的函數(shù)依賴集,*為屬性集U的子集。(1)超鍵:能唯一標(biāo)識(shí)元組的屬性集。如果*→U∈F,則*是R的超鍵。(2)候選鍵:不含有多余屬性的超鍵a*是R的超鍵。b且不存在*的真子集Y,使得Y→U∈F+則稱*是R的候選鍵(3)主鍵:用戶選作元組標(biāo)識(shí)的一個(gè)候選鍵。(4)主屬性:包含任何一個(gè)候選鍵的屬性。(5)非主屬性:不包含任何一個(gè)候選鍵的屬性。(6)外鍵:如果關(guān)系R的*一個(gè)屬性組不是該關(guān)系本身的候選鍵,而是另一個(gè)關(guān)系的候選鍵,則稱該屬性組是R的外來(lái)關(guān)鍵碼,或稱為外鍵(外碼)。如何確定候選碼?(1)如果有屬性不在函數(shù)依賴集中出現(xiàn),則它必定包含在候選碼中。(2)如果有屬性不在函數(shù)依賴集中任何函數(shù)依賴的右邊出現(xiàn),則它必定包含在候選碼中。(3)如果該屬性或?qū)傩越M能唯一標(biāo)識(shí)元組,則它就是候選碼。根據(jù)對(duì)數(shù)據(jù)庫(kù)的語(yǔ)義描述,確定其中候選碼,同時(shí)還可以寫出該關(guān)系模式的函數(shù)依賴集。四,函數(shù)依賴的關(guān)系屬性間的關(guān)系決定函數(shù)依賴關(guān)系。設(shè)*和Y都是U的子集:1*和Y的聯(lián)系是1:1則*→Y,Y→*.2*和Y的聯(lián)系是M:1(M>1)則*→Y.*和Y的聯(lián)系是M:N(M,N>1)則,*、Y之間不存在函數(shù)依賴。五函數(shù)依賴圖:FD圖。六完全函數(shù)依賴和部分函數(shù)依賴在R(U)中,如果*→Y,并且對(duì)于*的任何真子集*`,都不存在*`→Y,則稱Y完全依賴于*,記作*→Y(箭頭上加個(gè)F表示FULL完全函數(shù)依賴)否則,如果*→Y,且*中存在一個(gè)真子集*`,使得*`→Y,則Y部分函數(shù)依賴*。*→Y(箭頭上面加一個(gè)P,表示PART,部分函數(shù)依賴)七平凡函數(shù)依賴和非平凡函數(shù)依賴設(shè)*,Y均為*關(guān)系的屬性集,并且*→Y,若Y包含于*,則稱*→Y為平凡函數(shù)依賴(Y是*的子集)。若Y不包含于*,則稱*→Y為非平凡函數(shù)依賴(Y不是*的子集)第三節(jié)函數(shù)依賴的蘊(yùn)涵與公理體系一,函數(shù)依賴的邏輯蘊(yùn)含定義:設(shè)有關(guān)系模式R(U),及其函數(shù)依賴集F,如果對(duì)于R的任何一個(gè)滿足F的關(guān)系r,函數(shù)依賴*→Y都成立,則稱F邏輯蘊(yùn)含*→Y或稱*→Y可以由F推出,記作:例題:關(guān)系模式R=(A,B,C),函數(shù)依賴集F={A→B,B→C}則F邏輯蘊(yùn)含A→C記作:二,F(xiàn)閉包定義:若F為關(guān)系模式R(U)的函數(shù)依賴集,我們把F以及所有被F邏輯蘊(yùn)含的函數(shù)依賴的集合稱為F的閉包,記作F+。F+={*→Y|F╠*→Y}三,Armstrong公理F1自反律:若Y包含于*,則*→Y(Y是*的子集)F2增廣律:若*→Y為F所蘊(yùn)含,則*Z→YZ在R上成立。F3傳遞律:若*→Y,Y→Z在R上成立,則*→Z在R上成立。F4偽增律:Z是W的子集,*→Y為F所蘊(yùn)含,則*W→YZ在R上成立。F5偽傳律:若*→Y,YW→Z為F所蘊(yùn)含,則*W→Z在R上成立。F6合并律:若*→Y,*→Z為F所蘊(yùn)含,則*→YZ在R上成立。F7分解律:若Z是Y的子集,*→Y為F所蘊(yùn)含,則*→Z在R上成立。四,屬性集的閉包定義:若F為關(guān)系模式R(U)的函數(shù)依賴集,*是U的子集,則由Armstrong公理推導(dǎo)出來(lái)的所有*→Ai所形成的屬性集{Ai|i=1,2,…,n}稱為*關(guān)于F的閉包記為*+。屬性集閉包的舉例:設(shè):R=ABC,F={A→B,B→C}當(dāng)*分別是A,B,C,時(shí),求*+解:當(dāng)*=A時(shí),*+=ABC當(dāng)*=B時(shí),*+=BC當(dāng)*=C時(shí),*+=C定理:*→Y能根據(jù)Armstrong推理規(guī)則導(dǎo)出的充要條件是:只要Y是*+的子集,則*→Y。只要*→Y,則Y一定是*+的子集。定理:Armstrong公理的完備性定理函數(shù)依賴推理規(guī)則系統(tǒng)(自反律、增廣律、傳遞律)是完備的。函數(shù)依賴公理體系A(chǔ)rmstrong公理體系由于Armstrong公理的完備性,Armstrong公理及其推論構(gòu)成了一個(gè)完備的邏輯推理體系,稱為Armstrong公理體系:A,一套形式推理規(guī)則。B,利用這些推理規(guī)則可以求出給定關(guān)系模式的關(guān)鍵字。C,而且可以從關(guān)系模式的一組已知函數(shù)依賴出發(fā),求得它蘊(yùn)含的所有函數(shù)依賴。D,或者對(duì)于給定的F和*→Y,判斷*→Y是否在F+中。E,是關(guān)系規(guī)*化理論的依據(jù)。計(jì)算*+的算法依據(jù):若F為關(guān)系模式R(U)的函數(shù)依賴集,*,Z,W是U的子集,對(duì)于任意的Z→W∈F,若Z是*的子集,則*→*W算法的實(shí)現(xiàn)輸入:關(guān)系模式R上的子集*,R上的函數(shù)依賴F輸出:*關(guān)于F的閉包*+3)算法:a.令*(0)=φ,*+=*;b.如果*(0)≠*+,置*(0)=*+,否則,轉(zhuǎn)到d;c.對(duì)于f中的每個(gè)未被訪問(wèn)過(guò)的函數(shù)依賴Y→Z,若Y包含于*+,則令*+=*+∪Z,為被訪問(wèn)過(guò)的函數(shù)依賴設(shè)置訪問(wèn)標(biāo)志,轉(zhuǎn)b;d.輸出*+結(jié)論判定函數(shù)依賴*→Y是否能由F導(dǎo)出的問(wèn)題,可以轉(zhuǎn)化為求*+的閉包,并判定Y是否是*+子集的問(wèn)題。即求閉包的問(wèn)題可以轉(zhuǎn)化為求屬性集的問(wèn)題。判定給定函數(shù)依賴*→Y是否蘊(yùn)含與函數(shù)依賴集F算法實(shí)現(xiàn):輸入:函數(shù)依賴集F,函數(shù)依賴*→Y輸出:若*→Y∈F+,輸出真,否則輸出假。四,函數(shù)依賴的等價(jià)和覆蓋定義:設(shè)F和G是關(guān)系模式R(U)上的兩個(gè)函數(shù)依賴集,如果F+=G+,則稱F等價(jià)于G,亦稱F覆蓋G或者G覆蓋F,記作:F≡G定理1,設(shè)F和G是關(guān)系模式R(U)的兩個(gè)函數(shù)依賴集,則F+=G+的充分必要條件是:定理2,設(shè)F和G是關(guān)系模式R(U)的兩個(gè)函數(shù)依賴集,則F+=G+的充分必要條件是定理3,每個(gè)函數(shù)依賴集F都可以被一個(gè)右部只有單屬性的函數(shù)依賴集G所覆蓋。五,最小函數(shù)依賴集設(shè)F是函數(shù)依賴集,如果F滿足F中每個(gè)函數(shù)依賴*→Y的右邊均為單個(gè)屬性。F中的任何一個(gè)函數(shù)依賴*→A,其F-(*→A)都與F不等價(jià)。F中的任何一個(gè)函數(shù)依賴*→A,Z為*的真子集,(F-{*→A})∪{Z→A}都與F不等價(jià)。則稱,F(xiàn)為最小函數(shù)依賴集。(2)是消除右側(cè)冗余。(3)是消除左側(cè)冗余。因?yàn)椋?),(3)沒有先后順序,所以,最小函數(shù)依賴不是唯一的。第四節(jié)關(guān)系模式的分解一,關(guān)系模式分解的衡量標(biāo)準(zhǔn)(1)僅具有無(wú)損連接性。(不增減信息)(2)僅保持函數(shù)的依賴集。(不破壞屬性間存在的依賴關(guān)系)(3)即具有無(wú)損連接性,又保持函數(shù)依賴集。二,分解的無(wú)損連接性:1.定義:設(shè)F是關(guān)系模式R的函數(shù)依賴集σ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)}是R的一個(gè)分解,或者如果R滿足F的任何一個(gè)關(guān)系均有則分解具有無(wú)損連接性。定理:設(shè)σ=(R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk>)為關(guān)系模式的一個(gè)分解,r為R的任何一個(gè)關(guān)系ri=πui(r)則:(1)(2)如果S=mσ(r)則πui(S)=rimσ(mσ(r))=mσ(r)結(jié)論:分解后的關(guān)系作自然聯(lián)結(jié)必包含分解前的關(guān)系。即分解不會(huì)丟失信息,但可能增加信息。只有r=mσ(r)時(shí),分解才具有無(wú)損連接性。為什么要進(jìn)行關(guān)系分解?一個(gè)關(guān)系分解后,可以存放原來(lái)不能存放的信息(通常稱為"懸掛”的元組),這是實(shí)際所需要的,正是分解的優(yōu)點(diǎn)。在做自然聯(lián)結(jié)時(shí),這類"懸掛”元組自然丟失了,但不是信息的丟失,而是合理的。檢驗(yàn)分解無(wú)損聯(lián)結(jié)的算法設(shè)關(guān)系模式R(A1,A2,…,An)F是他的函數(shù)依賴集,σ={R1,R2,R3,…,Rk}為R的一個(gè)分解。算法(1)構(gòu)造初始表構(gòu)造一個(gè)k行n列的初始表,其中每列對(duì)應(yīng)于R的一個(gè)屬性,每行用于表示分解后的一個(gè)模式組成。如果屬性Aj屬于關(guān)系模式Ri,則在表的第i行第j列置符號(hào)aj,否則,置符號(hào)bij.(2)根據(jù)F中的函數(shù)依賴修改表的內(nèi)容考察F中的每一個(gè)函數(shù)依賴*→Y,在屬性組*所在的那些列上尋找具有相同符號(hào)的行,如果找到這樣的兩行或更多行,則修改這些行,使這些行上的屬性組Y所在的列上的元素相同。修改規(guī)則:如果Y所在的要修改的行中有一個(gè)為aj,則這些元素均變?yōu)閍j,否則,改動(dòng)為bmj,其中m為這些行的最小行號(hào)。注意:若*個(gè)bij被改動(dòng),則該列中凡是與bij相同的符號(hào)均作相同的改動(dòng)。循環(huán)的對(duì)F中的函數(shù)依賴進(jìn)行逐個(gè)處理,直到發(fā)現(xiàn)表中有一行變?yōu)椋篴1,a2,a3,…,an或者不能再被修改為止。斷分解是否無(wú)損聯(lián)結(jié)如果通過(guò)修改,發(fā)現(xiàn)表中有一行變?yōu)閍1,a2,…,an,則分解是無(wú)損聯(lián)結(jié)的,否則,分解不具有無(wú)損聯(lián)結(jié)性。定理:檢驗(yàn)分解無(wú)損聯(lián)結(jié)的算法,能夠正確判定一個(gè)分解是否具有無(wú)損聯(lián)結(jié)性。定理:設(shè)σ=(R1,R2)是模式R的一個(gè)分解,F(xiàn)是R的函數(shù)依賴集,則,σ是R(關(guān)于F的)的無(wú)損分解的充要條件是:(R1∩R2)→R1-R2∈F或者(R1∩R2)→R2-R1∈F保持函數(shù)依賴的分解定義:設(shè)F是關(guān)系模式R在所有屬性集U上的函數(shù)依賴集,Z是U的子集,F(xiàn)在Z上的一個(gè)投影用πz(F)表示,定義為:πz(F)={*→Y|*→Y∈F+且*Y是Z的子集}設(shè)關(guān)系模式R的一個(gè)分解σ={R1,R2,…,Rk}如果Fi=πRi的并集(F1∪F2∪…Fk)+=F+則,分解保持函數(shù)依賴集F關(guān)系模式滿足的確定條件稱為*式。根據(jù)滿足的約束條件不同,*式可以分為1NF、2NF、3NF、BF、4NF、5NF等。不同的*式,性質(zhì)不同。關(guān)系模式規(guī)*化:把一個(gè)低一級(jí)的關(guān)系模式分解為高一級(jí)的關(guān)系模式的過(guò)程?;仡櫢拍畛I:能唯一標(biāo)識(shí)元組的屬性集。候選鍵:不含有多余屬性的超鍵a.*是R的超鍵。b.且不存在*的真子集Y,使得Y→U∈F+則稱*是R的候選鍵主鍵:用戶選作元組標(biāo)識(shí)的一個(gè)候選鍵。主屬性:包含在任何一個(gè)候選鍵中的屬性。非主屬性:不包含在任何一個(gè)候選鍵中的屬性。外鍵:如果關(guān)系R的*一個(gè)屬性組,不是該關(guān)系本身的候選關(guān)鍵字,而是另一關(guān)系的候選關(guān)鍵字,則稱該屬性組是R的外來(lái)關(guān)鍵字或外部關(guān)鍵字。完全函數(shù)依賴和部分函數(shù)依賴在R(U)中,如果*→Y,而且對(duì)于*的任意真子集*’,都不存在*’→Y,則稱Y完全依賴于*,否則,如果*→Y,且存在*的真子集*’,使得*’→Y成立,則Y部分函數(shù)依賴于Y。如何確定關(guān)系模式中的候選碼?(1)如果有屬性不在函數(shù)依賴集中出現(xiàn),則它必須包含在候選碼中。(2)如果有屬性不在函數(shù)依賴集中任何函數(shù)依賴的右邊出現(xiàn),則它必定包含在候選碼中。(3)如果該屬性或?qū)傩越M能唯一的標(biāo)識(shí)元組,則它就是候選碼。未給出關(guān)系模式的函數(shù)依賴集,如何確定其中的候選碼?根據(jù)對(duì)數(shù)據(jù)庫(kù)的語(yǔ)義描述,確定其中的候選碼,同時(shí)還可以寫出該關(guān)系模式上的函數(shù)依賴集。第一*式:1NF關(guān)系模式的所有域?yàn)楹?jiǎn)單域,其元素不可再分,是數(shù)據(jù)項(xiàng)而不是數(shù)據(jù)組,這樣的關(guān)系模式稱為第一*式:1NF存在的問(wèn)題:數(shù)據(jù)冗余,插入異常,刪除異常,修改異常。第二*式:2NF給定關(guān)系模式R及其上的函數(shù)依賴集F,如果R上的任何一個(gè)非主屬性都完全依賴于他的每一個(gè)候選關(guān)鍵字,則稱R是第二*式:2NF若關(guān)系模型H包含的每個(gè)關(guān)系模式都是2NF的,則稱該關(guān)系模型是2NF的。存在的問(wèn)題:可能存在數(shù)據(jù)冗余,插入異常,刪除異常,修改異常。結(jié)論:若R∈1NF,且R中所有的候選碼為單一屬性,則R∈2NF。傳遞函數(shù)依賴在R(U)中,如果*→Y,Y→Z,并且Z不是Y的子集,則稱*→Z傳遞函數(shù)依賴,即Z傳遞函數(shù)依賴于*>第三*式給定關(guān)系模式R及其上的函數(shù)依賴F,如果R的任何一個(gè)非主屬性都不傳遞函數(shù)依賴于他的任何一個(gè)候選碼,則稱R是第三*式3NF。若關(guān)系模型H包含的每一個(gè)關(guān)系模式都是3NF的,則稱該關(guān)系模式是3NF的。定理:一個(gè)3NF的關(guān)系模式必定是3NF的。BF(改進(jìn)了的3NF)給定關(guān)系模式R及其上的函數(shù)依賴集F,如果F中每一個(gè)非平凡函數(shù)依賴*→Y的左部(決定因素)*中必含有候選碼,則稱R是Boyde/Codd*式,簡(jiǎn)稱BF。R∈1NF若*→Y且Y不是*的子集,*中必含有候選碼。則R∈BFBF的內(nèi)涵(1)非主屬性對(duì)候選碼完全函數(shù)依賴。(2)主屬性對(duì)不含他的候選碼完全函數(shù)依賴。(3)沒有屬性完全函數(shù)依賴于一組非主屬性。(4)主屬性不傳遞函數(shù)依賴于任何一個(gè)候選碼。(5)主屬性不傳遞函數(shù)依賴于任何一個(gè)候選碼。定理:BF滿足3NF。重疊的候選碼一個(gè)模式有兩個(gè)非單屬性的候選碼,且二者的交集非空,則稱這兩個(gè)候選碼是重疊的。若模式中沒有重疊的候選碼時(shí),則2NF一定是BF。只有當(dāng)模式中有重疊的候選碼時(shí),3NF不一定是BF??偨Y(jié):1NF↓消除了非主屬性對(duì)候選碼的部分函數(shù)依賴。2NF↓消除了非主屬性對(duì)候選碼的傳遞函數(shù)依賴。3NF↓消除了主屬性對(duì)候選碼的部分和傳遞函數(shù)依賴。BF規(guī)*化的基本思想逐步消除不合適的函數(shù)依賴,使數(shù)據(jù)庫(kù)的各個(gè)關(guān)系模式達(dá)到*種程度上的分離。模式分解的算法模式分解的基本要求:分解后的關(guān)系模式與分解前的關(guān)系模式等,即分解必須具有無(wú)損聯(lián)結(jié)性,保持函數(shù)依賴。逐步分解的定理:設(shè)F是關(guān)系模式R的函數(shù)依賴集ρ={R1,R2,…,Rk}是R關(guān)于F的一個(gè)無(wú)損連接分解。1.若ρ1={S1,S2,…,Sm}是Ri關(guān)于Fi的一個(gè)無(wú)損連接分解,其中Fi=πRi(F),則ρ2={R1,…Ri-1,S1,…,Sm,Ri+1,…,Rk}是R關(guān)于F的無(wú)損分解。2.設(shè)ρ3={R1,…,Rk,Rk+1,…,Rn}是R的一個(gè)分解,其中ρ是ρ3的子集,,則ρ3也是關(guān)于F的無(wú)損聯(lián)結(jié)分解。面向BF且具有無(wú)損聯(lián)結(jié)的分解算法1:輸入:關(guān)系模式R,函數(shù)依賴集F,輸出:R的一個(gè)無(wú)損聯(lián)結(jié)的分解,其中每一個(gè)子模式都滿足F在其上投影的BF.算法實(shí)現(xiàn):反復(fù)運(yùn)用逐步分解定理,逐步分解關(guān)系模式R使得每次分解都具有無(wú)損聯(lián)結(jié)性。而且每次分解出來(lái)的子關(guān)系模式都至少有一個(gè)具有BF*式。(1)置初值ρ={R},(2)檢查ρ中的關(guān)系模式,如果均屬BF則轉(zhuǎn)到第4步。(3)在ρ中找出不屬于BF的關(guān)系模式S,則S中必能找出一個(gè)函數(shù)依賴*→A∈F(A不包含于*)且*不是S的候選碼。因此,*A必然不包含S的全部屬性。把S分解為{S1,S2},設(shè)S1=*A,S2=S-A,并以{S1,S2}代替R中的S,返回(2)。(4)終止分解,輸出ρ.算法出現(xiàn)的問(wèn)題:分解結(jié)果不是唯一的。分解不保證保持函數(shù)依賴。面向3NF且保持函數(shù)依賴的分解算法2輸入:關(guān)系模式R及其上的最小函數(shù)依賴集F.輸出:R的保持函數(shù)依賴的分解,其中每個(gè)關(guān)系模式是關(guān)于F在其上投影的3NF。算法實(shí)現(xiàn):(1)如果R中存在一些不在F中出現(xiàn)的屬性,則將他們單獨(dú)構(gòu)成一個(gè)關(guān)系模式,并從關(guān)系模式R中消去。(2)如果F中有一個(gè)函數(shù)依賴*→A,且*A=R,則R不用分解,算法終止。(3)對(duì)F中的每個(gè)函數(shù)依賴*→A,構(gòu)造一個(gè)關(guān)系模式*A。如果*→A1,*→A2,…,*→An均屬于F,則構(gòu)造一個(gè)關(guān)系模式*A1A2…An。本算法注意,必須是最小函數(shù)依賴集F,否則出錯(cuò)。面向3NF既有無(wú)損聯(lián)結(jié)性,又保持函數(shù)依賴分解算法:輸入:關(guān)系模式R及其上的最小函數(shù)依賴集F。輸出:R的具有無(wú)損聯(lián)結(jié)性及保持函數(shù)依賴的分解。算法實(shí)現(xiàn):(1)按算法2對(duì)關(guān)系模式R進(jìn)行分解,設(shè)結(jié)果為ρρ={R1,R2,Rk}(2)*是R的候選碼t=ρu{*}是R的一個(gè)分解。(3)求t的最小集合。(當(dāng)Ri是Rj的子集∈t時(shí),消去Ri)定理算法的正確性。設(shè)*是R的候選碼,則t=ρu{*}是R的一個(gè)分解,且所有的關(guān)系都滿足3NF,同時(shí)具有無(wú)損聯(lián)結(jié)性,和保持函數(shù)依賴性。由于ρ中全部模式均為3NF,*中屬性之間不存在傳遞和部分函數(shù)依賴,即*也是3NF的,分解t也具有無(wú)損聯(lián)結(jié)性。由于*是R的候選碼,驗(yàn)證表中模式*所對(duì)應(yīng)的行,經(jīng)修改后全部由a組成。模式設(shè)計(jì)的原則關(guān)系模式R相對(duì)于函數(shù)依賴F分解成數(shù)據(jù)庫(kù)模式ρ={R1,R2,…,Rk}一般具有下面4個(gè)特性。(1)ρ中的每個(gè)關(guān)系模式Ri上應(yīng)具有*種*式的性質(zhì)。(如3NF,BF)(2)無(wú)損聯(lián)結(jié)性。(3)保持函數(shù)依賴集。(4)最小性,即ρ中模式個(gè)數(shù)應(yīng)最少,且模式中屬性總數(shù)應(yīng)最少。一個(gè)好的模式設(shè)計(jì)方法應(yīng)符合下了三條原則。(1)表達(dá)性。(2)分理性。(3)最小冗余性。多值依賴函數(shù)依賴有效的表達(dá)了屬性之間的多對(duì)一聯(lián)系,但不能表達(dá)屬性之間

溫馨提示

  • 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)論