open 數(shù)據(jù)庫應(yīng)用 課件4_第1頁
open 數(shù)據(jù)庫應(yīng)用 課件4_第2頁
open 數(shù)據(jù)庫應(yīng)用 課件4_第3頁
open 數(shù)據(jù)庫應(yīng)用 課件4_第4頁
open 數(shù)據(jù)庫應(yīng)用 課件4_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件學(xué)院2025年版

第7章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論

(2025秋季學(xué)期)

數(shù)據(jù)庫概論第7章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論關(guān)系數(shù)據(jù)庫邏輯設(shè)計(jì)針對(duì)具體需求,如何構(gòu)造一個(gè)合適的數(shù)據(jù)模式(二維表)第7章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論7.1關(guān)系模式的設(shè)計(jì)問題7.2數(shù)據(jù)的函數(shù)依賴7.3關(guān)系數(shù)據(jù)庫模式的規(guī)范化理論7.4關(guān)系模式分解算法7.1關(guān)系模式的設(shè)計(jì)問題

關(guān)系模式由五部分組成,即它是一個(gè)五元組:R(U,D,DOM,F)R:關(guān)系名U:組成該關(guān)系的屬性名集合D:屬性組U中屬性所來自的域DOM:屬性向域的映象集合F:屬性間數(shù)據(jù)依賴關(guān)系集合7.1.1數(shù)據(jù)依賴關(guān)系模式R(U,D,DOM,F)簡化為一個(gè)三元組:

R(U,F)7.1.2數(shù)據(jù)依賴對(duì)關(guān)系模式的影響[例]建立一個(gè)描述學(xué)生信息的數(shù)據(jù)庫,該數(shù)據(jù)庫涉及的對(duì)象包括學(xué)生的學(xué)號(hào)(Sno)、所在系(Sdept)、系主任姓名(Mname)、課程名(Cname)和成績(Grade)。單一的關(guān)系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}

屬性組U上的一組函數(shù)依賴F:

F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}

SnoCnameSdeptMnameGrade7.1.2數(shù)據(jù)依賴對(duì)關(guān)系模式的影響U={Sno,Sdept,Mname,Cname,Grade}

存在的問題

數(shù)據(jù)冗余太大

插入問題

刪除問題

更新問題7.1.2數(shù)據(jù)依賴對(duì)關(guān)系模式的影響結(jié)論:Student關(guān)系模式不是一個(gè)好的模式。“好”的模式:不會(huì)發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡可能少。原因:由存在于模式中的某些數(shù)據(jù)依賴引起的。解決方法:通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴。7.1.2數(shù)據(jù)依賴對(duì)關(guān)系模式的影響第7章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論7.1關(guān)系模式的設(shè)計(jì)問題

7.2數(shù)據(jù)的函數(shù)依賴7.3關(guān)系數(shù)據(jù)庫模式的規(guī)范化理論7.4關(guān)系模式分解算法7.2.1函數(shù)依賴1.定義設(shè)R(U)是一個(gè)屬性集U上的關(guān)系模式,X和Y是U的子集。若對(duì)于r中任意兩個(gè)元組s和t,當(dāng)s[X]=t[X]時(shí),就有s[Y]=t[Y],則稱屬性子集X函數(shù)決定屬性子集Y或者稱Y函數(shù)依賴于X,記為X→Y。否則就稱X不函數(shù)決定Y或者稱Y不函數(shù)依賴于X,記為X?Y。如果X→Y,且Y→X,則記為X←→Y。如果X→Y,則稱X為決定因素(determinant)。注意:

所有關(guān)系實(shí)例均要滿足語義范疇的概念數(shù)據(jù)庫設(shè)計(jì)者可以對(duì)現(xiàn)實(shí)世界作強(qiáng)制的規(guī)定7.2.1函數(shù)依賴【例7-1】圖書管理系統(tǒng)中的圖書借閱關(guān)系模式為R(讀者編號(hào),姓名,圖書編號(hào),書名,借書日期),由現(xiàn)實(shí)世界的語義可知,讀者編號(hào)唯一,圖書編號(hào)唯一,姓名和書名可以重復(fù)出現(xiàn)。求其函數(shù)依賴。

函數(shù)依賴:讀者編號(hào)→姓名,圖書編號(hào)→書名,(讀者編號(hào),圖書編號(hào))→借書日期7.2.1函數(shù)依賴【例7-2】指出學(xué)生關(guān)系S(學(xué)號(hào),姓名,圖書證號(hào),系別,系主任)中存在的函數(shù)依賴關(guān)系。關(guān)系S中存在下列函數(shù)依賴:學(xué)號(hào)→姓名(每個(gè)學(xué)號(hào)只能有一個(gè)學(xué)生姓名)

學(xué)號(hào)→系別(每個(gè)學(xué)號(hào)只能在一個(gè)系)

學(xué)號(hào)→圖書證號(hào)(每個(gè)學(xué)號(hào)只能有一個(gè)圖書證號(hào))

系別→系主任(每個(gè)系只能由一名系主任)7.2.1函數(shù)依賴2.函數(shù)依賴的3種基本情形(1)平凡與非平凡函數(shù)依賴在關(guān)系模式R(U)中,對(duì)于U的子集X和Y,如果X→Y,但Y

X,則稱X→Y是非平凡的函數(shù)依賴若X→Y,但Y

X,則稱X→Y是平凡的函數(shù)依賴【例7-3】在關(guān)系SC(Sno,Cno,Grade)中,非平凡函數(shù)依賴:(Sno,Cno)→

Grade

平凡函數(shù)依賴:(Sno,Cno)→

Sno(Sno,Cno)→Cno7.2.1函數(shù)依賴(2)部分與完全函數(shù)依賴定義在R(U)中,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X’,都有X’Y,則稱Y對(duì)X完全函數(shù)依賴,記作XFY。若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對(duì)X部分函數(shù)依賴,記作XPY。

7.2.1函數(shù)依賴2.函數(shù)依賴的3種基本情形(2)部分與完全函數(shù)依賴

【例7-4】關(guān)系SC(Sno,Cno,Sname,Grade)

中(Sno,Cno)→Grade是完全函數(shù)依賴,

(Sno,Cno)→Sname是部分函數(shù)依賴因?yàn)镾no→Sname成立,且Sno是(Sno,Cno)的真子集。

7.2.1函數(shù)依賴2.函數(shù)依賴的3種基本情形

(3)傳遞與直接函數(shù)依賴定義在R(U)中,如果X→Y,(Y

X),Y→XY→Z,

則稱Z對(duì)X傳遞函數(shù)依賴。記為:X→Z

注意:如果Y→X,即X←→Y,則Z直接依賴于X。【例7-5】

在關(guān)系S(學(xué)號(hào),姓名,圖書證號(hào),系別,系主任)中,有:學(xué)號(hào)→系別,系別→系主任,則系主任傳遞函數(shù)依賴于學(xué)號(hào)。傳遞7.2.1函數(shù)依賴2.函數(shù)依賴的3種基本情形

7.2.2依賴的邏輯蘊(yùn)含定義設(shè)F是在關(guān)系模式R上成立的函數(shù)依賴的集合,X→Y是一個(gè)函數(shù)依賴。如果對(duì)于R的每個(gè)滿足F的關(guān)系r也滿足X→Y,那么稱F邏輯蘊(yùn)含X→Y,記為F=>X→Y。(用已知函數(shù)依賴判斷其他的函數(shù)依賴)定義設(shè)F是函數(shù)依賴集,被F邏輯蘊(yùn)含的函數(shù)依賴全體構(gòu)成的集合,稱為函數(shù)依賴集F的閉包(closure),記為F+。即F+={X→Y|F=>X→Y}7.2.3Armstrong公理系統(tǒng)

關(guān)系模式R<U,F(xiàn)>來說有以下的推理規(guī)則:(1)自反律(Reflexivity):若Y

X

U,則

X→Y為F所蘊(yùn)含。(2)增廣律(Augmentation):若X→Y為F所蘊(yùn)含,且Z

U,則XZ→YZ為F所蘊(yùn)含。(3)傳遞律(Transitivity):若X→Y及Y→Z為F所蘊(yùn)含,則X→Z為F所蘊(yùn)含。Armstrong公理具有如下兩個(gè)性質(zhì):

有效性:由F出發(fā)根據(jù)Armstrong公理推導(dǎo)出的每一個(gè)函數(shù)依賴X→Y必定在F+中。

完備性:F+中的每一個(gè)函數(shù)依賴X→Y,必定可以由F出發(fā),根據(jù)Armstong公理推導(dǎo)出。7.2.3Armstrong公理系統(tǒng)7.2.3Armstrong公理系統(tǒng)(1)合并律(unionrule):如果X→Y和X→Z成立,那么X→YZ成立,即若F?X→Y,F(xiàn)?X→Z,則F?X→YZ。(2)偽傳遞律(pseudotransivityrule):如果X→Y和WY→Z成立,那么WX→Z成立,即若F?X→Y,F(xiàn)?WY→Z,則F?WX→Z。(3)分解律(decompositionrule):如果X→Y和Z?Y成立,那么X→Z成立,即若F?X→Y,Z?Y,則F?X→Z。7.2.3Armstrong公理系統(tǒng)【例7-6】令r(R)=r(A,B,C,G,H,I),函數(shù)依賴集F={A→B,A→C,CG→H,CG→I,B→H}??梢粤谐鯢+中的幾個(gè)依賴:

(1)由傳遞律可得A→H,因?yàn)锳→B且B→H;

(2)由合并律可得CG→HI,因?yàn)镃G→H,CG→I;

(3)由偽傳遞律可得AG→I,因?yàn)锳→C且CG→I。7.2.4函數(shù)依賴和碼(關(guān)鍵字)的聯(lián)系定義設(shè)K為R<U,F>中的屬性或?qū)傩越M合。若KU,則K稱為R的侯選碼(CandidateKey),簡稱碼。若候選碼多于一個(gè),則選定其中的一個(gè)做為主碼(PrimaryKey)。F主屬性與非主屬性包含在任何一個(gè)候選碼中的屬性,稱為主屬性(Primeattribute)不包含在任何碼中的屬性稱為非主屬性(Nonprimeattribute)或非碼屬性(Non-keyattribute)全碼整個(gè)屬性組是碼,稱為全碼(All-key)(特殊情況)7.2.4函數(shù)依賴和碼(關(guān)鍵字)的聯(lián)系關(guān)系模式的每個(gè)候選碼具有下列兩個(gè)特性:

(1)唯一性:在關(guān)系模式R(U)中,K為R的候選碼,對(duì)于關(guān)系模式R對(duì)應(yīng)的任何一個(gè)關(guān)系r,都不存在候選碼屬性值相同的兩個(gè)元組,即候選碼的取值是唯一的。

(2)最小特性:在關(guān)系模式R(U)中,K為R的候選碼,在不破壞候選碼的唯一性的情況下,沒有任何一個(gè)屬性能從候選碼里面刪除。7.2.4函數(shù)依賴和碼(關(guān)鍵字)的聯(lián)系定義關(guān)系模式R中屬性或?qū)傩越MX并非R的碼,

但X是另一個(gè)關(guān)系模式的碼,則稱X是R的外部碼(Foreignkey),也稱外碼?!纠縎C(Sno,Cno,Grade)中,Sno不是碼,但Sno是關(guān)系模式S(Sno,Sdept,Sage)的碼,則Sno是關(guān)系模式SC的外部碼。主碼與外碼一起提供了表示關(guān)系間聯(lián)系的手段。7.2.4函數(shù)依賴和碼(關(guān)鍵字)的聯(lián)系7.2.5屬性集的閉包1.定義設(shè)F為屬性集U上的一組函數(shù)依賴,X

U,XF+={A|X→A能由F根據(jù)Armstrong公理導(dǎo)出},XF+稱為屬性集X關(guān)于函數(shù)依賴集F的閉包在關(guān)系模式R<U,F(xiàn)>中為F所邏輯蘊(yùn)含的函數(shù)依賴的全體叫作F的閉包,記為F+。

假設(shè){A1,A2,…,An}是屬性集,F(xiàn)是函數(shù)依賴集。

使用{A1,A2,…,An}+表示屬性集A1,A2,…,An的閉包。為了簡化閉包的計(jì)算,允許閉包出現(xiàn)平凡依賴,即A1,A2,…,An總在{A1,A2,…,An}+中。7.2.5屬性集的閉包2.求閉包的說明第一步

設(shè)最終將成為閉包的屬性集是X,把X初始化為{A1,A2,…,An}。第二步

重復(fù)搜索和判斷函數(shù)依賴B1B2…Bm→C。如果左邊所有的屬性B1B2…Bm都在屬性集X中,但是屬性C不在X中,則將C添加到屬性集X中。第三步

重復(fù)第二步,直到?jīng)]有屬性可以添加到屬性集X中為止。第四步

最后得到的不能再添加的屬性集X就是{A1,A2,…,An}+的值。7.2.5屬性集的閉包3.計(jì)算屬性集{A1,A2,…,An}閉包的步驟【例1】設(shè)關(guān)系R(A,B,C,D,E,F(xiàn))有這些函數(shù)依賴:AB→C,BC→AD,D→E和CF→B。求AB的閉包。從AB出發(fā),令X={A,B}。由于函數(shù)依賴AB→C左邊的所有屬性都在X中,所以可以把該依賴右邊的屬性C添加到X中。這時(shí),X={A,B,C}??紤]函數(shù)依賴BC→AD,由于該函數(shù)依賴的左邊都在X中,因此可以把屬性A和D添加到X中。因?yàn)锳已經(jīng)在X中了,所以只需把D添加在X中。這時(shí),X={A,B,C,D}。再考慮函數(shù)依賴D→E。由于該函數(shù)依賴的左邊在X中,因此可以把屬性E添加到X中。這時(shí),X={A,B,C,D,E}??紤]函數(shù)依賴CF→B。由于該依賴的左邊不是全部在X中,所以該依賴就不能包括在閉包中。得到的AB閉包為{A,B}+={A,B,C,D,E}。7.2.5屬性集的閉包【例2】設(shè)有關(guān)系模式R(U,F(xiàn)),U={A,B,C,D,E},F(xiàn)={A→E,AC→B,B→A,D→A,D→C},分別求屬性集AE、BC和D的閉包。

【答案】求(AE)F+

第一步:將AE置入(AE)F+中,即(AE)F+

=AE。

第二步:由于A→E的決定因素A屬于(AE)F+

,則將依賴因素E置入(AE)F+中,即(AE)F+

=AE∪E=AE,不能使(AE)F+再擴(kuò)大。而在F中再也找不到某個(gè)函數(shù)依賴的決定因素屬于(AE)F+

,因此(AE)F+

=AE。7.2.5屬性集的閉包【例2】設(shè)有關(guān)系模式R(U,F(xiàn)),U={A,B,C,D,E},F(xiàn)={A→E,AC→B,B→A,D→A,D→C},分別求屬性集AE、BC和D的閉包。

【答案】求(BC)F+

第一步:將BC置入(BC)F+中,即(BC)F+

=BC。

第二步:由于B→A的決定因素B屬于(BC)F+

,則將依賴因素A置入(BC)F+中,即(BC)F+

=BC∪A=ABC。

第三步:由于A→E的決定因素A屬于(BC)F+

,則將依賴因素E置入(BC)F+中,即(BC)F+

=ABC∪E=ABCE。

第四步:由于AC→B的決定因素AC屬于(BC)F+

,則將依賴因素B置入(BC)F+中,即(BC)F+

=ABCE∪B=ABCE,不能使(BC)F+再擴(kuò)大。而在F中再找不到某個(gè)函數(shù)依賴的決定因素屬于(BC)F+

,因此(BC)F+

=ABCE。7.2.5屬性集的閉包【例2】設(shè)有關(guān)系模式R(U,F(xiàn)),U={A,B,C,D,E},F(xiàn)={A→E,AC→B,B→A,D→A,D→C},分別求屬性集AE、BC和D的閉包?!敬鸢浮壳?D)F+第一步:將D置入(D)F+中,即(D)F+=D。第二步:由于D→A的決定因素D屬于(D)F+

,則將依賴因素A置入(D)F+中,即(D)F+=D∪A=AD。第三步:由于A→E的決定因素A屬于(D)F+,則將依賴因素E置入(D)F+中,即(D)F+=AD∪E=ADE。第四步:由于D→C的決定因素D屬于(D)F+

,則將依賴因素C置入(D)F+中,即(D)F+=ADE∪C=ACDE。第五步:由于AC→B的決定因素AC屬于(D)F+

,則將依賴因素B置入(D)F+中,即(D)F+=ACDE∪B=ABCDE。因此(D)F+=ABCDE。7.2.5屬性集的閉包7.2.6最小函數(shù)依賴集定義如果函數(shù)依賴集F滿足下列條件,則稱F為一個(gè)極小函數(shù)依賴集。亦稱為最小依賴集或最小覆蓋。記作Fm 。

(1)F中任一函數(shù)依賴的右部僅含有一個(gè)屬性。

(2)F中不存在這樣的函數(shù)依賴X→A,使得F與F-{X→A}等價(jià)。

(3)F中不存在這樣的函數(shù)依賴X→A,X有真子集Z使得F-{X→A}∪{Z→A}與F等價(jià)?!纠吭O(shè)有關(guān)系模式R(U,F(xiàn)),其中U={A,B,C,D,E,G),F(xiàn)={AD→E,AC→E,BCD→AG,AB→G,A→C},求F的最小函數(shù)依賴集。(分三步求解)

第一步:將F中的所有的依賴因素化為單個(gè)屬性。

AD→E,AC→E,BCD→A,BCD→G,AB→G,A→C

第二步:去掉F中的冗余函數(shù)依賴。

(1)由于F中去掉AD→E,得F1={AC→E,BCD→A,BCD→G,AB→G,A→C},(AD)F1+

=ACDE,包含E,因此該函數(shù)依賴是冗余的,可以從F中去掉。

(2)由于F1中去掉AC→E,得F2={BCD→A,BCD→G,AB→G,A→C},(AC)F2+

=AC,不包含E,因此該函數(shù)依賴不是冗余的,不能從F1中去掉。

(3)由于F1中去掉BCD→A,得F3={AC→E,BCD→G,AB→G,A→C},(BCD)F3+

=BCDG,不包含A,該函數(shù)依賴不是冗余的,不能從F1中去掉。

7.2.6最小函數(shù)依賴集【例】設(shè)有關(guān)系模式R(U,F(xiàn)),其中U={A,B,C,D,E,G),F(xiàn)={AD→E,AC→E,BCD→AG,AB→G,A→C},求F的最小函數(shù)依賴集。(分三步求解)

(4)由于F1中去掉BCD→G,得F4={AC→E,BCD→A,AB→G,A→C},(BCD)F4+

=ABCDEG,包含G,因此該函數(shù)依賴是冗余的,可以從F1中去掉。

(5)由于F4中去掉AB→G,得F5={AC→E,BCD→A,A→C},(AB)F5+

=ABCE,不包含G,因此該函數(shù)依賴不是冗余的,不能從F4中去掉。

(6)由于F4中去掉A→C,得F6={AC→E,BCD→A,AB→G},(A)F6+

=A,不包含C,因此該函數(shù)依賴不是冗余的,不能從F4中去掉。因此,F(xiàn)4={AC→E,BCD→A,AB→G,A→C}。

7.2.6最小函數(shù)依賴集

【例】設(shè)有關(guān)系模式R(U,F(xiàn)),其中U={A,B,C,D,E,G),F(xiàn)={AD→E,AC→E,BCD→AG,AB→G,A→C},求F的最小函數(shù)依賴集。(分三步求解)第三步:去掉F4中的所有決定因素的冗余屬性。方法是在某個(gè)決定因素中去掉其中的一個(gè)屬性,看看是否依然能決定依賴因素。

(1)對(duì)于AC→E,若去掉A,C的閉包不含E,故A不是冗余屬性,不能去掉;若去掉C,A的閉包含E,故C是冗余屬性,可以去掉。

(2)對(duì)于BCD→A,若去掉B,CD的閉包不含A,故B不是冗余屬性,不能去掉;同理C和D也不是冗余屬性。

(3)對(duì)于AB→G,若去掉A,B的閉包不含G,故A不是冗余屬性,不能去掉,同理B也不是冗余屬性。因此,F(xiàn)m={A→E,BCD→A,AB→G,A→C}。7.2.6最小函數(shù)依賴集7.2.7求解候選碼的方法1.首先對(duì)于給定的R(U)和函數(shù)依賴集F,可以將它的屬性劃分為4類:L類,僅出現(xiàn)在F的函數(shù)依賴左部的屬性。R類,僅出現(xiàn)在F的函數(shù)依賴右部的屬性。N類,在F的函數(shù)依賴左部和右部均未出現(xiàn)的屬性。LR類,在F的函數(shù)依賴左部和右部均出現(xiàn)的屬性。2.根據(jù)以下定理和推論來求解候選碼。定理1:對(duì)于給定的關(guān)系模式R及其函數(shù)依賴集F,若X(X∈R)是L類屬性,則X必為R的任一候選碼的成員。推論1:對(duì)于給定的關(guān)系模式R及其函數(shù)依賴集F,若X(X∈R)是L類屬性,且X+包含了R的全部屬性,則X必為R的唯一候選碼。定理2:對(duì)于給定的關(guān)系模式R及其函數(shù)依賴集F,若X(X∈R)是R類屬性,則X不在任何候選碼中。7.2.7求解關(guān)系模式的候選碼的方法2.根據(jù)以下定理和推論來求解候選碼。定理3:設(shè)有關(guān)系模式R及其函數(shù)依賴集F,如果X是R的N類屬性,則X必包含在R的任一候選碼中。推論2:對(duì)于給定的關(guān)系模式R及其函數(shù)依賴集F,如果X是R的N類和L類組成的屬性集,且X+包含了R的所有屬性,則X是R的唯一候選碼。7.2.7求解候選碼的方法3.按以下步驟求候選碼(算法)

(1)R類不屬于候選碼;

(2)L類和N類一定包含在候選碼中;

(3)求(LN)的閉包;如果(LN)的閉包是U,則(LN)為唯一的候選碼,求解結(jié)束。如果(LN)的閉包不是U,則把LR類屬性逐個(gè)加入求閉包,直至它的閉包等于U,若等于U,則它為候選碼。7.2.7求解候選碼的方法【例】設(shè)有關(guān)系模式R(U),其函數(shù)依賴集為F,其中:U={A,B,C,D,E},F={A→C,C→A,B→AC,D→AC}求R的候選碼。分析:L類:B、DR類:N類:ELR類:A、C因此屬性B、D、E必為候選碼的成員。(BDE)+=ABCDE根據(jù)推論2可得BDE是R的唯一候選碼。所以R的候選碼為BDE。7.2.7求解候選碼的方法第7章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論7.1關(guān)系模式的設(shè)計(jì)問題7.2數(shù)據(jù)的函數(shù)依賴7.3關(guān)系數(shù)據(jù)庫模式的規(guī)范化理論7.4關(guān)系模式分解算法7.3關(guān)系數(shù)據(jù)庫模式的規(guī)范化理論規(guī)范化的基本思想是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依賴中的不合適的部分,解決數(shù)據(jù)插入、刪除與修改時(shí)發(fā)生的異?,F(xiàn)象。7.3.1關(guān)系模式規(guī)范化設(shè)計(jì)范式是符合某一種級(jí)別的關(guān)系模式的集合關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求。滿足不同程度要求的為不同范式。范式的種類: 第一范式(1NF)

第二范式(2NF)

第三范式(3NF) BC范式(BCNF)

第四范式(4NF)

第五范式(5NF)7.3.1關(guān)系模式規(guī)范化設(shè)計(jì)各種范式之間存在聯(lián)系:某一關(guān)系模式R為第n范式,可簡記為R∈nNF。一個(gè)低一級(jí)范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式的集合,這種過程就叫規(guī)范化。7.3.2第一范式(1NF)1.1NF的定義 如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則R∈1NF第一范式是對(duì)關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。但是滿足第一范式的關(guān)系模式并不一定是一個(gè)好的關(guān)系模式。職工號(hào)姓名職稱工資扣除實(shí)發(fā)基本津貼職務(wù)房租水電86051陳平講師130512005016011222832.1NF的問題

滿足第一范式的關(guān)系模式并不一定是一個(gè)合理的關(guān)系模式。

例如,關(guān)系模式:SOC(Sno,Sdept,Soff,Cno,Grade)是關(guān)于學(xué)生和其所在系別及選修課程的關(guān)系。函數(shù)依賴包括:

(Sno,Cno)FGradeSno→Sdept(Sno,Cno)PSdeptSno→Soff(Sno,Cno)PSoffSdept→Soff7.3.2第一范式(1NF)2.1NF的問題非主屬性Sdept和Soff部分函數(shù)依賴于碼(Sno,Cno)SnoCno

GradeSdeptSoff圖7-4SOC關(guān)系各屬性依賴關(guān)系7.3.2第一范式(1NF)2.1NF的問題SOC關(guān)系存在以下4個(gè)問題:(1)插入異常(2)刪除異常(3)數(shù)據(jù)冗余度大(4)修改復(fù)雜7.3.2第一范式(1NF)7.3.3第二范式(2NF)2NF的定義若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則R∈2NF。

SOC(Sno,Sdept,Soff,Cno,Grade)∈1NFSC(Sno,Cno,Grade)∈2NFSO(Sno,Sdept,Soff)∈2NF采用投影分解法將一個(gè)1NF的關(guān)系分解為多個(gè)2NF的關(guān)系,可以在一定程度上減輕原1NF關(guān)系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度大、修改復(fù)雜等問題。將一個(gè)1NF關(guān)系分解為多個(gè)2NF的關(guān)系,并不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。7.3.3第二范式(2NF)關(guān)系SO中還存在以下問題:①數(shù)據(jù)冗余②修改復(fù)雜③插入異常④刪除異常7.3.3第二范式(2NF)

7.3.4第三范式(3NF)3NF的定義 關(guān)系模式R<U,F(xiàn)>

中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z

Y),使得X→Y,Y→Z成立,

Y→X,則稱R<U,F(xiàn)>∈3NF。若R∈3NF,則每一個(gè)非主屬性既不部分依賴于碼也不傳遞依賴于碼。例如,2NF關(guān)系模式SO(Sno,Sdept,Soff)中有下列函數(shù)依賴:

Sno→SdeptSdept→SoffSno→SoffSoff傳遞函數(shù)依賴于Sno,即SO中存在非主屬性對(duì)碼的傳遞函數(shù)依賴。

7.3.4第三范式(3NF)解決方法采用投影分解法,把SO分解為兩個(gè)關(guān)系模式,以消除傳遞函數(shù)依賴:

SD(Sno,Sdept)DO(Sdept,Soff)

分解后的關(guān)系模式中既沒有非主屬性對(duì)碼的部分函數(shù)依賴也沒有非主屬性對(duì)碼的傳遞函數(shù)依賴。

7.3.4第三范式(3NF)SD的碼為Sno,SO的碼為SdeptSnoSdeptSDSdeptSoffDO

SO(Sno,Sdept,Soff)∈2NFSO(Sno,Sdept,Soff)∈3NFSD(Sno,Sdept)∈3NFDO(Sdept,Soff)∈3NF

7.3.4第三范式(3NF)2.判別3NF方法①找候選碼,確定非主屬性。②考察非主屬性對(duì)候選碼的函數(shù)依賴是否存在部分函數(shù)依賴。如果存在,則相應(yīng)的關(guān)系模式不是2NF,否則是2NF。③考察非主屬性之間是否存在傳遞函數(shù)依賴。如果存在,相應(yīng)模式不是3NF,否則是3NF。

7.3.4第三范式(3NF)定義

關(guān)系模式R<U,F(xiàn)>∈1NF,若X→Y且Y

X時(shí)X必含有碼,則R<U,F(xiàn)>∈BCNF。

7.3.5BC范式(BCNF)【例】在關(guān)系模式STJ(S,T,J)中,S表示學(xué)生,T表示教師,J表示課程。每一教師只教一門課。每門課由若干教師教,某一學(xué)生選定某門課,就確定了一個(gè)固定的教師。某個(gè)學(xué)生選修某個(gè)教師的課就確定了所選課的名稱函數(shù)依賴:(S,J)→T,(S,T)→J,T→J(S,J)和(S,T)都是候選碼

7.3.5BC范式(BCNF)

JSJTSTSTJ中的函數(shù)依賴

7.3.5BC范式(BCNF)STJ∈3NF

(S,J)和(S,T)都可以作為候選碼S、T、J都是主屬性沒有任何非主屬性對(duì)碼傳遞依賴或部分依賴

STJ∈BCNFT是決定因素,T→J

7.3.5BC范式(BCNF)解決方法:將STJ分解為二個(gè)關(guān)系模式:

ST(S,T)∈BCNF,TJ(T,J)∈BCNF

沒有任何屬性對(duì)碼的部分函數(shù)依賴和傳遞函數(shù)依賴STSTTJTJ

7.3.5BC范式(BCNF)【例】關(guān)系模式SJP(S,J,P),其中S學(xué)生,J課程,P名次。函數(shù)依賴:(S,J)→P;(J,P)→S(S,J)與(J,P)都可以作為候選碼SJP∈3NF,SJP∈BCNF

7.3.5BC范式(BCNF)R∈BCNFR∈3NF如果R∈3NF,且R只有一個(gè)候選碼

R∈BCNFR∈3NF充分不必要充分必要

7.3.5BC范式(BCNF)第7章關(guān)系數(shù)據(jù)庫的設(shè)計(jì)理論7.1關(guān)系模式的設(shè)計(jì)問題7.2數(shù)據(jù)的函數(shù)依賴7.3關(guān)系數(shù)據(jù)庫模式的規(guī)范化理論7.4關(guān)系模式分解算法

1.分解成2NF模式集的算法 設(shè)關(guān)系模式R(U),主鍵是W,R上還存在X→Z,并且Z是非主屬性和X

W,那么W→Z就是一個(gè)部分函數(shù)依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式:

R1(XZ),主鍵是X;

R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCESR1)。利用外鍵和主鍵的聯(lián)接可以從R1和R2重新得到R。如果R1和R2還不是2NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個(gè)關(guān)系模式都是2NF為止。

7.4關(guān)系模式分解算法【例】關(guān)系模式:SOC(Sno,Sdept,Soff,Cno,Grade)是關(guān)于學(xué)生和其所在系別及選修課程的關(guān)系。函數(shù)依賴包括:

(Sno,Cno)FGradeSno→SdeptSno→Soff1NF分解成2NF:

SOC(Sno,Sdept,Soff,Cno,Grade)∈1NFSO(Sno,Sdept,Soff)∈2NFSC(Sno,Cno,Grade)∈2NF

Z={Sdept,Soff}

7.4關(guān)系模式分解算法

2.分解成3NF模式集的算法 設(shè)關(guān)系模式R(U),主鍵是W,R上還存在

X→Z,并且Z是非主屬性,Z

X,X不是候選鍵,這樣W→Z就是一個(gè)傳遞依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式:

R1(XZ),主鍵是X;

R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCESR1)。

利用外鍵和主鍵相匹配機(jī)制,R1和R2通過聯(lián)接可以重新得到R。

如果R1和R2還不是3NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個(gè)關(guān)系模式都是3NF為止。

7.4關(guān)系模式分解算法【例】關(guān)系模式:SC(Sno,Cno,Grade)∈2NFSO(Sno,Sdept,Soff)∈2NFSno→SdeptSdept→Soff注意:Soff傳遞函數(shù)依賴于Sno,即SO中存在非主屬

性對(duì)碼的傳遞函數(shù)依賴。SO2NF分解成3N

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論