第5章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計_第1頁
第5章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計_第2頁
第5章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計_第3頁
第5章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計_第4頁
第5章 關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章關(guān)系模式的規(guī)范化設(shè)計主要內(nèi)容

問題提出函數(shù)依賴關(guān)系模式的分解關(guān)系模式的范式

2024/2/291本章重要概念

(1)關(guān)系模式的冗余和異常問題。

(2)FD的定義、邏輯蘊涵、閉包、推理規(guī)則、與關(guān)鍵碼的聯(lián)系;平凡的FD;屬性集的閉包;推理規(guī)則的正確性和完備性;FD集的等價;最小依賴集。

(3)無損分解的定義、性質(zhì)、測試;保持依賴集的分解。

(4)關(guān)系模式的范式:1NF,2NF,3NF,BCNF。分解成2NF、3NF模式集的算法。

2024/2/292前言

關(guān)系數(shù)據(jù)庫的規(guī)范化設(shè)計是指面對一個現(xiàn)實問題,如何選擇一個比較好的關(guān)系模式集合,即應(yīng)該構(gòu)造幾個關(guān)系模式,每個關(guān)系由哪些屬性組成。規(guī)范化設(shè)計理論主要包括三個方面的內(nèi)容:數(shù)據(jù)依賴、范式和模式設(shè)計方法。其中數(shù)據(jù)依賴起著核心的作用。數(shù)據(jù)依賴研究數(shù)據(jù)之間的聯(lián)系,范式是關(guān)系模式的標準,模式設(shè)計方法是自動化設(shè)計的基礎(chǔ)。規(guī)范化設(shè)計理論對關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的設(shè)計起著重要的作用。2024/2/293例4.1

設(shè)有一個關(guān)系模式R(TNAME,ADDRESS,CNO,CNAME),其屬性分別表示教師姓名、教師地址、任教課程的編號和課程名。TNAMEADDRESSCNOCNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n4關(guān)系模式R的實例

在數(shù)據(jù)庫設(shè)計中,如果一個關(guān)系模式設(shè)計得不好,就會出現(xiàn)像文件系統(tǒng)一樣的數(shù)據(jù)冗余、異常、不一致等問題。關(guān)系模式的冗余和異常問題(1)2024/2/294關(guān)系模式的冗余和異常問題(2)該模式出現(xiàn)的問題有:

(1)數(shù)據(jù)冗余:如果一個教師教幾門課程,那么這個教師的地址就要重復(fù)幾次存儲。

(2)操作異常:

由于數(shù)據(jù)的冗余,在對數(shù)據(jù)操作時會引起各種異常:

①修改異常。例如教師t1教三門課程,在關(guān)系中就會有三個元組。如果他的地址變了,這三個元組中的地址都要改變。若有一個元組中的地址未更改,就會造成這個教師的地址不惟一,產(chǎn)生不一致現(xiàn)象。

②插入異常。如果一個教師剛調(diào)來,尚未分派教學任務(wù),那么要將教師的姓名和地址存儲到關(guān)系中去時,在屬性CNO和CNAME上就沒有值(空值)。在數(shù)據(jù)庫技術(shù)中空值的語義是非常復(fù)雜的,對帶空值元組的檢索和操作也十分麻煩。

③刪除異常。如果在圖4.1中要取消教師t3的教學任務(wù),那么就要把這個教師的元組刪去,同時也把t3的地址信息從表中刪去了。這是一種不合適的現(xiàn)象。2024/2/295關(guān)系模式的冗余和異常問題(3)TNAMEADDRESSTNAMECNOCNAMEt1a1t1c1n1t2a2t1c2n2t3a3t1c3n3

t2c4n4

t2c5n2

t3c6n4圖4.2關(guān)系模式分解的實例

(a)關(guān)系模式R1的實例

(b)關(guān)系模式R2的實例

可以說,關(guān)系模式R不是一個好的模式。一個“好”的模式應(yīng)當不會發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡量少。規(guī)范化原則:“關(guān)系模式有操作異?;蛉哂鄦栴},就分解它?!笔欠袼阕罴逊纸??那末,什么樣的關(guān)系模式是最優(yōu)的?標準是什么?如何實現(xiàn)?2024/2/296本章的符號約定英文字母表首部的大寫字母“A,B,C,D,…”表示單個屬性。英文字母表尾部的大寫字母“…,U,V,W,X,Y,Z”表示屬性集。大寫字母R表示關(guān)系模式,小寫字母r表示其關(guān)系。屬性集{A1,A2,…,An}簡記為A1A2

…An。屬性集X和Y的并集X∪Y簡記為XY。X∪{A}簡寫為XA或AX。一般地,我們設(shè)計關(guān)系數(shù)據(jù)庫模式時,要注意三方面的問題:⑴必須從語義上摸清這些數(shù)據(jù)聯(lián)系(實體聯(lián)系和屬性聯(lián)系)。⑵盡可能的將互相依賴密切的屬性構(gòu)成單獨模式。⑶切忌把依賴關(guān)系不密切、特別是具有“排它”性的屬性硬湊到一起。2024/2/2975.2函數(shù)依賴主要內(nèi)容函數(shù)依賴的定義FD的邏輯蘊含F(xiàn)D的推理規(guī)則FD和關(guān)鍵碼的聯(lián)系

屬性集的閉包FD集的最小依賴集2024/2/298函數(shù)依賴的定義(1)函數(shù)依賴是屬性間基本的一種依賴,它是關(guān)鍵碼概念的推廣。

定義5.1

設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴(FunctionalDependency,簡記為FD)于X,記作X→Y。FD是對關(guān)系模式R的一切可能的關(guān)系r定義的。對于r的任意兩個元組,如果X值相同,則要求Y值也相同,即對一個X值有唯一個Y值與之對應(yīng)。該定義類似于數(shù)學中的單值函數(shù)定義。

ABCDABCDa1b1c1d1a1b1c1d1a1b1c2d2a1b2c2d2a2b2c3d3a2b2c3d3a3b1c4d4a3b2c4d4在圖中,左邊圖有:A→B

右邊圖沒有:A→B

函數(shù)依賴只能根據(jù)語義來確定。如姓名→年齡只有在該部門沒有同名人的條件下是函數(shù)依賴。2024/2/299函數(shù)依賴的定義(2)

例5.2

有一個關(guān)于學生選課、教師任課的關(guān)系模式:

R(SNO,SNAME,CNO,GRADE,CNAME,TNAME,TAGE) 屬性分別表示學生學號、姓名、選修課程的課程號、成績、課程名、任課教師姓名和年齡等意義。 如果規(guī)定,每個學號只能有一個學生姓名,每個課程號只能決定一門課程,那么可寫成下列FD形式:

SNO→SNAME CNO→CNAME

每個學生每學一門課程,有一個成績,那么可寫出下列FD:

(SNO,CNO)→GRADE

還可以寫出其他一些FD:

CNO→CNAME,TNAME,TAGE)TNAME→TAGE注意:函數(shù)依賴不是指關(guān)系R的某個或某些關(guān)系滿足的約束條件,而是指R的一切關(guān)系均要滿足的約束條件。2024/2/2910對于函數(shù)依賴的定義注意以下三點:⑴函數(shù)依賴是一個基于關(guān)系模式(不是一個關(guān)系模式的特定實例)的函數(shù)概念,即如果一個關(guān)系模式R中存在函數(shù)依賴X→Y,則要求該模式的所有具體關(guān)系都滿足X→Y。

⑵函數(shù)依賴不取決于屬性構(gòu)成關(guān)系的方式(即關(guān)系結(jié)構(gòu)),而是關(guān)系所表達的信息本身的語義特性,我們只能根據(jù)這種語義信息確定函數(shù)依賴,沒有其他途徑。⑶函數(shù)依賴是數(shù)據(jù)庫設(shè)計者對于關(guān)系模式的一種斷言或決策,即在設(shè)計關(guān)系型數(shù)據(jù)庫時不僅要設(shè)計關(guān)系結(jié)構(gòu),而且要定義數(shù)據(jù)依賴的條件,限制進入關(guān)系的所有元組都必須符合所定義的條件,否則拒絕接受輸入。函數(shù)依賴的定義(3)2024/2/2911FD的邏輯蘊涵

定義5.2

設(shè)F是在關(guān)系模式R上成立的函數(shù)依賴的集合,X→Y是一個函數(shù)依賴。如果對于R的每個滿足F的關(guān)系r也滿足X→Y,那么稱F邏輯蘊涵X→Y,記為F?X→Y。

定義5.3

設(shè)F是函數(shù)依賴集,被F邏輯蘊涵的函數(shù)依賴全體構(gòu)成的集合,稱為函數(shù)依賴集F的閉包(closure),記為F+。即F+={X→Y|記為F?X→Y。}

說明:即使一個小的函數(shù)依賴集F,其閉包F+也是很大的,一般情況下總有。

研究邏輯蘊涵的目的是利用推理的方法,從一組已知的函數(shù)依賴推導出另一組函數(shù)依賴,從而找出所有函數(shù)依賴F+。2024/2/2912FD的推理規(guī)則(1)

從已知的一些FD,可以推導出另外一些FD,這就需要一系列的推理規(guī)則。設(shè)U是關(guān)系模式R的屬性集,F(xiàn)是R上成立的只涉及到U中屬性的函數(shù)依賴集。FD的推理規(guī)則有以下三條:

A1(自反性,Reflexivity):若Y

X

U,則X→Y在R上成立。

A2(增廣性,Augmentation):若X→Y在R上成立,且Z

U,則XZ→YZ在R上成立。

A3(傳遞性,Transitivity):若X→Y和Y→Z在R上成立,則X→Z在R上成立。目的:是由F再通過這些FD推理規(guī)則找到F+2024/2/2913FD的推理規(guī)則(2)結(jié)論FD推理規(guī)則A1、A2和A3是正確的。也就是,如果X→Y是從F用推理規(guī)則導出,那么X→Y在F+中。FD的其他五條推理規(guī)則:(1)A4(合并性,Union):{

X→Y,X→Z}?X→YZ。(2)A5(分解性,Decomposition):{X→Y,Z

Y}?

X→Z。(3)A6(偽傳遞性):{

X→Y,WY→Z}?WX→Z。(4)A7(復(fù)合性,Composition):{X→Y,W→Z}?XW→YZ。(5)A8(通用一致性):{

X→Y,W→Z}?X∪(W-Y)→YZ。例5.3

設(shè)有關(guān)系模式R,A、B、C、D、E、F是它的屬性集的子集,R滿足下列函數(shù)依賴:F={A→BC,CD→EF},證明:函數(shù)依賴AD→F成立。證明:A→BC(已知)A→C(分解性)AD→CD(增廣性)CD→EF(已知)AD→EF(傳遞性)AD→F(分解性)2024/2/2914FD和關(guān)鍵碼的聯(lián)系定義5.4

設(shè)關(guān)系模式R的屬性集是U,X是U的一個子集。如果X→U在R上成立,那么稱X是R的一個超鍵。如果X→U在R上成立,但對于X的任一真子集W,都有W→U不成立,那么稱X是R上的一個候選鍵。例5.4

在學生選課、教師任課的關(guān)系模式中:R(SNO,SNAME,CNO,CNAME,GRADE,TNAME,TAGE)如果規(guī)定:每個學生每學一門課只有一個成績;每個學生只有一個姓名;每個課程號只有一個課程名;每門課程只有一個任課教師。根據(jù)這些規(guī)則,可以知道(SNO,CNO)能函數(shù)決定R的全部屬性,并且是一個候選鍵。雖然(SNO,SNAME,CNO,TNAME)也能函數(shù)決定R的全部屬性,但相比之下,只能說是一個超鍵,而不能說是候選鍵,因為其中含有多余屬性。2024/2/2915屬性集的閉包定義5.5

設(shè)有關(guān)系模式R(U),U={A1,A2,…,An},X是U的子集,F(xiàn)是U上的一個函數(shù)依賴集,則稱所有用Armstrong公理從F推出的函數(shù)依賴X→Ai(i=1,2,…,n)中Ai的集合為X的屬性集閉包,記為,即={Ai|Ai∈U,且X→Ai可用Armstrong公理從F推出}

例5.5

設(shè)關(guān)系模式R(ABC)的函數(shù)依賴集為F={A→B,B→C},分別求A、B、C的閉包。解:若X=AA→B,B→C(已知)A→C(傳遞性)A→A(自反性)={A,B,C}(據(jù)定義)若X=BB→B(自反性)B→C(已知)={B,C}(據(jù)定義)

若X=C,C→C(自反性)={C}(據(jù)定義)2024/2/2916FD集的最小依賴集(1)如果關(guān)系模式R(U)上的兩個函數(shù)依賴集F和G,有F+=G+,則稱F和G是等價的函數(shù)依賴集。函數(shù)依賴集F中的FD很多,應(yīng)該從F中去掉平凡的FD、無關(guān)的FD,以求得F的最小依賴集Fmin。形式定義如下:定義5.6

設(shè)F是屬性集U上的FD集,如果滿足:⑴F中每一個函數(shù)依賴的右部都是單個屬性;⑵對F中任一個函數(shù)依賴X→A,F(xiàn)-{X→A}都不與F等價;⑶對于F中的任一個函數(shù)依賴X→A和X的任一子集Z,{F-{X→A}}∪{Z→A}都不與F等價。則稱F是一個最小函數(shù)依賴集,記為Fmin。

上述三個條件的作用分別是:條件⑴保證了每個函數(shù)依賴的右部都不會有多個屬性;條件⑵保證了F中沒有多余的函數(shù)依賴;條件⑶保證了函數(shù)依賴的左部沒有重復(fù)屬性。2024/2/2917例:設(shè)R(A,B,C,D),F(xiàn)={A→B,B→C,C→D,C→B},G={A→C,B→D,B→C,C→B}。用函數(shù)依賴圖表示F、G及F+、G+,這兩個函數(shù)依賴圖完全相同,所以,F(xiàn)與G等價。FD集的最小依賴集(2)F和F+G和G+ABDCABDC2024/2/2918算法4.2計算函數(shù)依賴集F的最小依賴集G的步驟:第一步:根據(jù)分解性推理規(guī)則,得到一個與F等價的FD集G,G中每個FD的右邊均為單屬性。第二步:在G的每個FD中消去左邊冗余的屬性。第三步:在G中消除冗余的FD。FD集的最小依賴集(3)2024/2/2919例5.6

設(shè)F是關(guān)系模式R(ABC)的FD集,F(xiàn)={A→BC,B→C,A→B,AB→C},試求Fmin。解:①先把F中的FD寫成右邊是單屬性形式:

F={A→B,A→C,B→C,A→B,AB→C}顯然多多了一個A→B,可刪去。得F={A→B,A→C,B→C,AB→C}②在F中,由A→B和B→C可以推出A→C,所以A→C是冗余的,可刪去。得F={A→B,B→C,AB→C}③F中AB→C可從B→C推出,因此AB→C也可刪去。最后得F={A→B,B→C},即為所求的Fmin。FD集的最小依賴集(4)2024/2/29205.3關(guān)系模式的分解

主要內(nèi)容模式分解問題無損分解保持函數(shù)依賴分解2024/2/2921模式分解問題對于存在數(shù)據(jù)冗余、插入異常、刪除異常問題的關(guān)系模式,應(yīng)采取將一個關(guān)系模式分解為多個關(guān)系模式的方法進行處理,但是這種分解過程必須是“可逆”的,即模式分解的結(jié)果應(yīng)該能重新映像到分解前的關(guān)系模式。定義5.7F是關(guān)系模式R(U)的一個函數(shù)依賴集,記為R(F,U)。如果若干個關(guān)系模式的集合ρ={R1(U1,F1),R2(U2,F2),…,Rk(Uk,Fk)}其中:⑴

/*關(guān)系模式R的屬性全集U是分解后所有小關(guān)系模式的屬性集Ui的并集*/⑵對于每個i,j(1≤i,j≤k),有Ui

Uj

/*分解的小屬性集間不會相互為子集*/⑶Fi={X→Y|X→Y∈F+∧XY∈Ui}/*Fi(i=1,2,…,k)是F在Ui上的投影*/則稱ρ是關(guān)系模式R(F,U)的一個分解。

定義5.7實際上僅給出了模式分解必須滿足的基本條件,有時也會出現(xiàn)將原模式存儲信息丟失的現(xiàn)象。

2024/2/2922無損分解(1)例5.7設(shè)關(guān)系模式R(ABC),分解成ρ={AB,AC}。rCrABCr1ABr2A111111112112未丟失信息的分解

(b)(c)(a)4C343

rABCr1ABr2AC

r1r2AB1141114111231213111212(a)(b)(c)(d)丟失信息的分解

圖分解后的關(guān)系可以通過自然連接還原。而下圖分解后的關(guān)系通過自然連接后不能還原。稱比r多出來的元組為”噪音”2024/2/2923無損分解(2)

定義4.10

設(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是“無損聯(lián)接分解”(losslessjoindecomposition),簡稱為“無損分解”,否則稱為“損失分解”(lossydecomposition)。例5.7給出了“無損分解”和“損失分解”的例子。2024/2/2924無損分解(3)例

設(shè)關(guān)系模式R(ABC)分解成ρ={AB,BC}。(a)和(b)分別是模式AB和BC上的值r1和r2,(c)是r1?r2的值。顯然πBC(r1?r2)≠r2。這里r2中元組(b2c2)就是一個懸掛元組,由于它的存在,使得r1和r2不存在泛關(guān)系r。r1ABr2BCABCa1b1a1b1c1bc1b12c2(a)關(guān)系r1(b)關(guān)系r2rr12(c)rr12

模式分解的目的就是為了消除冗余和操作異?,F(xiàn)象,但有時會產(chǎn)生存儲泛關(guān)系中無法存儲的信息(懸掛元組)。2024/2/2925無損分解(4)

算法5.1

無損分解的測試①構(gòu)造一張k行n列的表格,每列對應(yīng)一個屬性Aj(1≤j≤n),每行對應(yīng)一個模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列處填上符號aj,否則填上bij。②把表格看成模式R的一個關(guān)系,反復(fù)檢查F中每個FD在表格中是否成立,若不成立,則修改表格中的值。修改方法如下:對于F中一個FDX→Y,如果表格中有兩行在X值上相等,在Y值上不相等,那么把這兩行在Y值上也改成相等的值。如果Y值中有一個是aj,那么另一個也改成aj;如果沒有aj,那么用其中一個bij替換另一個值(盡量把下標ij改成較小的數(shù))。一直到表格不能修改為止。(這個過程稱為chase過程)③若修改的最后一張表格中有一行是全a,即a1a2…an,那么稱ρ相對于F是無損分解,否則稱損失分解。2024/2/2926無損分解(5)a4a3b32b31CDb24a3a2b21BCb14b13a2a1ABDCBAa4a3b32b31CDa4a3a2a1BCb14b13a2a1ABDCBA(a)初始表格

(a)修改后的表格

a4a3b32b31CDb24a3a2b21BCb14b13a2a1ABDCBAa4a3b32b31CDa4a3a2b1BCb14b13a2a1ABDCBA(b)初始表格

(b)修改后的表格

例5.8

設(shè)關(guān)系R(ABCD),R分解成ρ={AB,BC,CD},如果R上成立的函數(shù)依賴集F1={B→A,C→D},則ρ對F1是否為無損分解?如果F1換為F2={A→B,C→D}呢?本行全是a,是無損連接無a行,是有損連接2024/2/2927無損分解(6)對于分解為兩個模式的情況,可根據(jù)下列定理分解:

定理5.1

設(shè)ρ={R1,R2

}是關(guān)系模式R的一個分解,F(xiàn)是R上成立的FD集,那么分解ρ相對于F是無損分解的充分必要條件是:(R1∩R2)→(R1-R2)或(R1∩R2)→(R2-R1)。說明:該定理中的兩個函數(shù)依賴不一定屬于F,只要屬于F+即可。例:設(shè)有關(guān)系模式R({SNO,Sname,CNO,Grade},{SNO→Sname,SNOCNO→Grade})的一個分解為:ρ={R1({SNO,Sname},{SNO→Sname}),R2{SNO,CNO,Grade},{SNOCNO→Grade})}

因為R1∩R2=SNO,R1-R2=Sname,所以R1∩R2→R1-R2,即SNO→Sname,它屬于F,由定理4.7可知,分解具有無損性連接。如果兩個關(guān)系模式間的公共屬性集至少包含其中一個關(guān)系模式的主健,則此分解是無損分解。2024/2/2928保持函數(shù)依賴分解(1)

定義5.9

設(shè)F是屬性集U上的FD集,Z是U的子集,F(xiàn)在Z上的投影用πZ(F)表示,定義為πZ(F)={X→Y|X→Y∈F+,且XY

Z}

定義5.10

設(shè)ρ={R1,…,RK}是R的一個分解,F(xiàn)是R上的FD集,如果有∪πRi(F)?F,那么稱分解ρ保持函數(shù)依賴集F。

定理5.2

ρ保持函數(shù)依賴分解的充要條件是保持函數(shù)依賴分解的意義:在作任何數(shù)據(jù)輸入和修改時,只要每個關(guān)系模式本身的函數(shù)依賴約束可滿足,就可以確保整個數(shù)據(jù)庫中數(shù)據(jù)的語義完整性不受破壞。2024/2/2929保持函數(shù)依賴分解(2)WNOWSWNOWGWNOWSWGW18級W12000W18級2000W26級W21600W26級1600W36級W31400W36級1400

設(shè)關(guān)系模式R(WNO,WS,WG)的屬性分別表示職工的工號、工資級別和工資數(shù)目。如果規(guī)定每個職工只有一個工資級別,并且一個工資級別只有一個工資數(shù)目,那么R上的FD有WNO→WS和WS→WG。(c)rr12(a)關(guān)系r1(b)關(guān)系r2

R1上FD是F1={WNO→WS},R2上的FD是F2={WNO→WG}。但從這兩個FD推導不出在R上成立的FDWS→WG,因此分解ρ把WS→WG丟失了,即ρ不保持F。

如果R分解成ρ={R1,R2},其中R1={WNO,WS},R2={WNO,WG},可以驗證這個分解是無損分解。2024/2/2930一個無損連接不一定具有函數(shù)依賴保持性,反之一個具有函數(shù)依賴保持性的分解也不一定是無損連接。例5.9

設(shè)R(ABCD),F(xiàn)={A→B,C→D},ρ={R1({A,B},{A→B}),R2({C,D},{C→D})}。因為F={A→B,C→D}F1∪F2={A→B,C→D}

所以F+=(F1∪F2)+

即分解ρ具有依賴保持性,易驗證ρ不具有無損性。例5.10

設(shè)R(ABC),F(xiàn)={A→B,C→B},ρ={R1({A,B},F(xiàn)1),R2({A,C},F(xiàn)2)},其中F1={A→B},F(xiàn)2={A→C}。因為R1∩R2=A,R1-R2=B,R2-R1=C所以R1∩R2→R1-R2為A→B∈F,但F+≠(F1∪F2)+可見ρ具有無損分解,但不具有保持函數(shù)依賴分解。保持函數(shù)依賴分解(3)2024/2/29315.4關(guān)系模式的范式

主要內(nèi)容第一范式第二范式第三范式BCNF范式數(shù)據(jù)庫設(shè)計的原則2024/2/2932關(guān)系模式的范式關(guān)系模式的好與壞,用什么標準衡量?這個標準就是模式的范式(NormalForms,簡記為NF)。范式的種類與數(shù)據(jù)依賴有著直接的聯(lián)系,基于FD的范式有1NF、2NF、3NF、BCNF等多種。在不提及FD時,關(guān)系中是不可能有冗余的問題,但是當存在FD時,關(guān)系中就有可能存在數(shù)據(jù)冗余問題。1NF是關(guān)系模式的基礎(chǔ);2NF已成為歷史,一般不再提及;在數(shù)據(jù)庫設(shè)計中最常用的是3NF和BCNF。對于各種范式之間的聯(lián)系有:5NF4NF2NFBCNF3NF1NF2024/2/2933第一范式

定義5.11

如果關(guān)系模式R的每個關(guān)系r的屬性值都是不可分的原子值,那么稱R是第一范式(firstnormalform,簡記為1NF)的模式。滿足1NF的關(guān)系稱為規(guī)范化的關(guān)系,否則稱為非規(guī)范化的關(guān)系。關(guān)系數(shù)據(jù)庫研究的關(guān)系都是規(guī)范化的關(guān)系。例如關(guān)系模式R(NAME,ADDRESS,PHONE),如果一個人有兩個電話號碼(PHONE),那么在關(guān)系中至少要出現(xiàn)兩個元組,以便存儲這兩個號碼。1NF是關(guān)系模式應(yīng)具備的最起碼的條件。非規(guī)范模式變?yōu)?NF:

(1)把不含單純值的屬性分解為多個原子值。

(2)把關(guān)系模式分解。2024/2/2934第二范式(1)定義5.12

對于FDW→A,如果存在X?W有X→A成立,那么稱W→A是局部依賴(A局部依賴于W);否則稱W→A是完全依賴。完全依賴也稱為“左部不可約依賴”。

定義5.13

如果A是關(guān)系模式R的候選鍵中屬性,那么稱A是R的主屬性;否則稱A是R的非主屬性。

定義5.14

如果關(guān)系模式R是1NF,且每個非主屬性完全函數(shù)依賴于候選鍵,那么稱R是第二范式(2NF)的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是2NF,則稱數(shù)據(jù)庫模式為2NF的數(shù)據(jù)庫模式。2024/2/2935第二范式(2)例5.11

設(shè)關(guān)系模式R(SNO,CNO,GRADE,TNAME,TADDR)的屬性分別表示學生學號、選修課程的編號、成績、任課教師姓名和教師地址等意義。(SNO,CNO)是R的候選鍵。R上有兩個FD:(SNO,CNO)→(TNAME,TADDR)和CNO→(TNAME,TADDR),因此前一個FD是局部依賴,R不是2NF模式。此時R的關(guān)系就會出現(xiàn)冗余和異?,F(xiàn)象。譬如某一門課程有100個學生選修,那么在關(guān)系中就會存在100個元組,因而教師的姓名和地址就會重復(fù)100次。如果把R分解成R1(CNO,TNAME,TADDR)和R2(SNO,CNO,GRADE)后,局部依賴(SNO,CNO)→(TNAME,TADDR)就消失了。R1和R2都是2NF模式。

2024/2/2936第二范式(3)

算法5.2

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

W,那么W→Z就是一個局部依賴。此時應(yīng)把R分解成兩個模式R1(XZ),主鍵是X; R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCESR1)。利用外鍵和主鍵的聯(lián)接可以從R1和R2重新得到R。如果R1和R2還不是2NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個關(guān)系模式都是2NF為止。

如:在關(guān)系模式R(SNO,CNO,GRADE,TNAME,TADDR)中,W={SNO,CNO}Z={TNAME,TADDR},X={CNO},Y={SNO,CNO,GRADE}2024/2/2937第三范式(1)

定義5.15

如果X→Y,Y→A,且Y→X和A∈Y,那么稱X→A是傳遞依賴(A傳遞依賴于X)。

定義5.16

如果關(guān)系模式R是1NF,且每個非主屬性都不傳遞依賴于R的候選鍵,那么稱R是第三范式(3NF)的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是3NF,則稱其為3NF的數(shù)據(jù)庫模式。

在例5.9中,R2是2NF模式,而且也已是3NF模式。但R1(CNO,TNAME,TADDR)是2NF模式,卻不一定是3NF模式。如果R1中存在函數(shù)依賴CNO→TNAME和TNAME→TADDR,那么CNO→TADDR就是一個傳遞依賴,即R1不是3NF模式。此時R1的關(guān)系中也會出現(xiàn)冗余和異常操作。譬如一個教師開設(shè)五門課程,那么關(guān)系中就會出現(xiàn)五個元組,教師的地址就會重復(fù)五次。如果把R2分解成R21(TNAME,TADDR)和R22(CNO,TNAME)后,CNO→TADDR就不會出現(xiàn)在R21和R22中。這樣R21和R22都是3NF模式。

2024/2/2938

第三范式(2)

算法5.3

分解成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(REFERENCESR1)。 利用外鍵和主鍵相匹配機制,R1和R2通過聯(lián)接可以重新得到R。 如果R1和R2還不是3NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個關(guān)系模式都是3NF為止。如果R是3NF模式,那么R也是2NF模式。

定理

設(shè)關(guān)系模式R,當R上每一個FDX→A滿足下列三個條件之一時:

①A∈X(即X→A是一個平凡的FD);

②X是R的超鍵;

③A是主屬性。則關(guān)系模式R就是3NF模式。

2024/2/2939第三范式(3)違反3NF的傳遞依賴的三種情況

部分依賴鍵是超鍵傳遞依賴2024/2/2940局部依賴和傳遞依賴是模式產(chǎn)生數(shù)據(jù)冗余和操作異常的兩個重要原因。由于3NF模式中不存在非主屬性對候選鍵的局部依賴和傳遞依賴,因此消除了很大一部分存儲異常,具有較好的性能。定義5.16‘

設(shè)F是關(guān)系模式R的FD集,如果對F中每個非平凡的函數(shù)依賴X→Y,都有X是R的超鍵,或者Y的每個屬性都是主屬性,那么稱R是3NF的模式。這個定義表明:如果非平凡的函數(shù)依賴X→Y,X不包含超鍵(并且Y不是主屬性),那么Y必傳遞依賴于候選鍵,因此R不是3NF模式。第三范式(4)2024/2/2941BCNF范式(1)定義5.17

如果關(guān)系模式R是1NF,且每個屬性都不傳遞依賴于R的候選鍵,那么稱R是BCNF的模式。如果數(shù)據(jù)庫模式中每個關(guān)系模式都是BCNF,則稱為BCNF的數(shù)據(jù)庫模式。如果R是BCNF模式,那么R也是3NF模式。設(shè)F是關(guān)系模式R的FD集,如果對F中每個非平凡的FDX→Y,都有X是R的超鍵,那么稱R是BCNF的模式。一個滿足BCNF的關(guān)系模式有:所有非主屬性對每一個碼都是完全函數(shù)依賴;所有的主屬性對每一個不包含它的碼,也是完全函數(shù)依賴;沒有任何屬性完全函數(shù)依賴于非

溫馨提示

  • 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

提交評論