版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章關(guān)系數(shù)據(jù)庫(kù)的模式設(shè)計(jì)Chapter4PatternDesignofRelationDatabase本章導(dǎo)言關(guān)系數(shù)據(jù)庫(kù)的模式設(shè)計(jì)主要是設(shè)計(jì)關(guān)系模式,而深入理解函數(shù)依賴和鍵碼的概念則是設(shè)計(jì)和分解關(guān)系模式的基礎(chǔ)。
本章要點(diǎn)關(guān)系模式的存儲(chǔ)異常和數(shù)據(jù)依賴函數(shù)依賴的概念函數(shù)依賴的規(guī)則關(guān)系的規(guī)范化模式分解的優(yōu)劣典型案例分析4.1關(guān)系模式的存儲(chǔ)異常和數(shù)據(jù)依賴
關(guān)系數(shù)據(jù)庫(kù)模式是若干關(guān)系模式的集合。
所謂關(guān)系數(shù)據(jù)庫(kù)的模式設(shè)計(jì)實(shí)際上就是從多種可能的組合中選取一個(gè)合適的或者說性能好的關(guān)系模式集合作為關(guān)系數(shù)據(jù)庫(kù)模式的問題。例1已知描述學(xué)生和系的一些情況,面臨的對(duì)象有:學(xué)號(hào)(SNO)、姓名(SNAME)、系名(DEPT)、系負(fù)責(zé)人(MN)、課程號(hào)(CNO)、課程名(CNAME)和成績(jī)(GRADE)。
現(xiàn)實(shí)世界的事實(shí)是:一個(gè)系有若干學(xué)生,但一個(gè)學(xué)生只屬于一個(gè)系;一個(gè)系只有一名負(fù)責(zé)人;一個(gè)學(xué)生可以選修多門課程,每門課程有若干學(xué)生選修;每個(gè)學(xué)生學(xué)習(xí)每一門課程有一個(gè)成績(jī)。
方案一:采用一個(gè)總的關(guān)系模式:
SA(SNO,SNAME,DEPT,MN,CNO,
CNAME,GRADE)方案二:采用四個(gè)關(guān)系模式:
S(SNO,SNAME,DEPT)、D(DEPT,MN)、
SC(SNO,CNO,GRADE)、C(CNO,CNAME)
比較起來,第一個(gè)方案可能帶來下列問題:
1.?dāng)?shù)據(jù)冗余;
2.修改異常或潛在的不一致性;3.插入異常;4.刪除異常。問題:產(chǎn)生這種存儲(chǔ)異常的根源何在?
第二方案在性能上優(yōu)于第一方案。
4.2函數(shù)依賴的概念4.2.1函數(shù)依賴的定義定義4.1
設(shè)R(U)是屬性集U上的關(guān)系模式,X,Y是U的子集。若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱“X函數(shù)確定Y”或“Y函數(shù)依賴于X”,記作X→Y。7.設(shè)有關(guān)系模式R(A,B,C),其關(guān)系r如右表所示:
例如:R(A,B,C),其關(guān)系r如下表所示。判斷下面陳述正確與否?函數(shù)依賴A→B在r中成立
函數(shù)依賴BC→A在r中成立函數(shù)依賴B→A在r中成立函數(shù)依賴A→BC在r中成立根據(jù)例1的語(yǔ)義可得出SA的函數(shù)依賴:F={SNO→SNAME,SNO→DEPT,
DEPT→MN,CNO→CNAME,(SNO,
CNO)→GRADE}下面介紹一些記號(hào)和術(shù)語(yǔ):
1.X→Y,但Y
X,則稱X→Y是非平凡的函數(shù)依賴。若不特別聲明,我們總是討論非平凡的函數(shù)依賴。
2、若X→Y,Y→X,則記作:X
Y3.若Y不函數(shù)依賴于X,則記作:XY4.2.2完全函數(shù)依賴和部分函數(shù)依賴定義4.2
在R(U)中,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X’,都有X’Y,則稱Y對(duì)X完全函數(shù)依賴,記作:
上述完全函數(shù)依賴定義可用下圖表示:
在R(U)中,如果X→Y,并且存在X的一個(gè)真子集X0,使得X0→Y,則稱Y對(duì)X部分函數(shù)依賴,記作:
上述部分函數(shù)依賴定義可用下圖表示:
4.2.3傳遞函數(shù)依賴定義4.3
在R(U)中,如果X→Y,(Y
X),YX,Y→Z,則稱Z對(duì)X傳遞函數(shù)依賴。記作上述傳遞函數(shù)依賴定義可以用下圖表示:
思考題:
在SA(SNO,SNAME,DEPT,MN,CNO,CNAME,GRADE)中,有函數(shù)依賴集:F={SNO→SNAME,SNO→DEPT,DEPT→MN,CNO→CNAME,(SNO,CNO)→GRADE}問題:下面的函數(shù)依賴表示正確嗎?4.2.4關(guān)系模式的鍵碼定義4.4
已知R<U,F(xiàn)>是屬性集U上的關(guān)系模式,F(xiàn)是屬性集U上的一組數(shù)據(jù)依賴。設(shè)K為R<U,F(xiàn)>中的屬性或?qū)傩越M合,若K
U-K且K的任何真子集都不能決定U,則K為R的鍵碼。
問題:判斷關(guān)系的鍵碼歸納起來有哪二點(diǎn)?
包含鍵碼的屬性集稱為超鍵碼,它是“鍵碼的超集”的簡(jiǎn)稱。若鍵碼多于—個(gè),則選定其中之一作為主鍵碼。包含在任何一個(gè)鍵碼中的屬性,叫做主屬性,不包含在任何鍵碼中的屬性稱為非主屬性。最簡(jiǎn)單的情況,單個(gè)屬性是鍵碼;最極端的情況,整個(gè)屬性組是鍵碼,稱為全碼。
例2考慮關(guān)系模式:人(身份證號(hào),姓名,性別,住址,出生年月),在此模式中存在以下函數(shù)依賴關(guān)系:身份證號(hào)→姓名,性別,住址,出生年月
(姓名,住址)→身份證號(hào),性別,出生年月例3關(guān)系模式R(演奏者,作品,聽眾)。假設(shè)一個(gè)演奏者可以演奏多個(gè)作品,某一作品可被多個(gè)演奏者演奏,聽眾也可以欣賞不同演奏者的不同作品,這個(gè)關(guān)系模式的鍵碼為:(演奏者,作品,聽眾),即全碼。
思考題:1、已知R(A,B,C,D),F={A
B,B
C,A
D},求:(1)R的鍵碼;(2)A
B,(A,B)
C,AC分別是何種函數(shù)依賴?2、已知S(A,B,C),F={(A,B)C),(A,C)B)},求:(1)S的鍵碼;(2)S的主屬性和非主屬性。定義4.5
關(guān)系模式R中屬性或?qū)傩越MX并非R的鍵碼,但X是另一個(gè)關(guān)系模式的鍵碼,則稱X是R的外鍵碼。例如在SC(SNO,CNO,GRADE)中,SNO不是鍵碼,但SNO是關(guān)系模式S(SNO,SNAME,DEPT)的鍵碼,則SNO對(duì)關(guān)系模式SC來說是外鍵碼。思考題:主鍵碼與外鍵碼提供了一個(gè)什么樣的手段?發(fā)揮了什么樣的作用?4.3函數(shù)依賴的規(guī)則4.3.1三個(gè)推理規(guī)則1.分解/合并規(guī)則(1)把一個(gè)函數(shù)依賴A1A2…An
BlB2…Bm用一組函數(shù)依賴A1A2…An
Bi(i=l,2,…,m)來代替,這種轉(zhuǎn)換稱為“分解規(guī)則”(splittingrule)。(2)把一組函數(shù)依賴A1A2…An
Bi(i=l,2,…,m)用一個(gè)依賴A1A2…An
BlB2…Bm來代替,這種轉(zhuǎn)換稱為“合并規(guī)則“(combiningrule)。2.平凡依賴規(guī)則在介紹平凡依賴規(guī)則之前,先介紹平凡函數(shù)依賴和非平凡函數(shù)依賴這兩個(gè)概念。
設(shè)A={A1A2…An},B={BlB2…Bm},對(duì)于函數(shù)依賴A1A2…An
BlB2…Bm,(1)如果B是A的子集,則稱該依賴為平凡的函數(shù)依賴。(2)如果B中至少有一個(gè)屬性不在A中,則稱該依賴為非平凡的函數(shù)依賴。(3)如果B中沒有一個(gè)屬性在A中,則稱該依賴為完全非平凡的函數(shù)依賴。舉例:對(duì)于關(guān)系Student(SNO,SNAME,SDEPT,MNAME,CNAME,GRADE),其屬性含義依次為學(xué)號(hào)、姓名、所在系、系主任姓名、課程名、成績(jī)。我們舉例如下:
Sno,Cname,Grade→Cname,Grade,此函數(shù)依賴屬于平凡的函數(shù)依賴。
Sno,Cname→Cname,Grade,此函數(shù)依賴屬于非平凡的函數(shù)依賴。
Sno,Cname→Sname,Grade,此函數(shù)依賴屬于完全非平凡的函數(shù)依賴。
如果函數(shù)依賴右邊的屬性中有一些也出現(xiàn)在左邊,那么我們就可以將右邊的這些屬件刪除。即:函數(shù)依賴A1A2…An
BlB2…Bm等價(jià)于A1A2…An
ClC2…CK,其中C={ClC2…CK}是B的子集,但不在A中出現(xiàn)(這里A={A1A2…An},B={BlB2…Bm})。我們稱這個(gè)規(guī)則為“平凡依賴規(guī)則"(trivialdependencyrule)。3.傳遞規(guī)則傳遞規(guī)則能將兩個(gè)函數(shù)依賴級(jí)聯(lián)成一個(gè)新的函數(shù)依賴。如果A1A2…An
BlB2…Bm和BlB2…Bm
ClC2…CK在關(guān)系R中成立,則A1A2…An
ClC2…CK在R中也成立。這個(gè)規(guī)則就稱為“傳遞規(guī)則”(transitiverule)。例如,在關(guān)系Student中,有如下兩個(gè)依賴成立:
SNO
SDEPT,SDEPT
MNAME
根據(jù)傳遞規(guī)則,可以把上面兩個(gè)函數(shù)依賴組合起來,得到一個(gè)新的函數(shù)依賴:
SNO
MNAME
4.3.2閉包的計(jì)算
假設(shè)A={A1,A2,
,An}是屬性集,F(xiàn)是函數(shù)依賴集。屬性集A在依賴集F下的閉包A+是這樣的屬性集X,它表示A1A2…An
X是蘊(yùn)含于F中的函數(shù)依賴。
即:若{A1,A2,
,An}+=X,則有
A1A2…An
X且此函數(shù)依賴是蘊(yùn)含于F中的函數(shù)依賴。求解屬性集{A1,A2,
,An}在某函數(shù)依賴集下的閉包的計(jì)算過程如下:
1.屬性集X最終將成為閉包。首先,將X初始化為{A1,A2,
,An},即:X={A1,A2,
,An}。
2.然后,反復(fù)地檢查某個(gè)函數(shù)依賴
BlB2…Bm
C使得所有的BlB2…Bm都在屬性集X中,但C不在其中,于是將C加到屬性集X中。
3.根據(jù)需要多次重復(fù)步驟2,直到?jīng)]有屬性能加到X中。由于X是只增的,而任何關(guān)系的屬性數(shù)目必然是有限的,因此最終再也沒有屬性可以加到X中。
4.最后得到的不能再增加的屬性集X就是{A1,A2,
,An}+的正確值。
例4考慮一個(gè)關(guān)系R(A,B,C,D,E,F),其函數(shù)依賴集為F={AB
C,BC
AD,D
E,CF
B},試計(jì)算{A,B}的閉包{A,B}+。
從X={A,B}出發(fā)。首先,函數(shù)依賴AB
C左邊的所屬性都在X中,而右邊屬性不在X中,故可以將C加到X中。這樣,X={A,B,C}。
同理,BC
AD的左邊包含在X中,而右邊屬性不在X中,故X={A,B,C,D}。又因D
E,故X={A,B,C,D,E}。函數(shù)依賴CF
B不滿足條件,所以{A,B}+={A,B,C,D,E}。
例5已知關(guān)系模式R(A,B,C,D),其函數(shù)依賴集F={AB
C,C
D,D
A},求蘊(yùn)含于給定函數(shù)依賴的所有非平凡函數(shù)依賴。單屬性:A+=A,B+=B,C+=ACD,D+=AD新依賴:C
A(1)雙屬性:AD+=AD,AB+=ABCD,
AC+=ACD,BC+=ABCD,
BD+=ABCD,CD+=ACD新依賴:AB
D,AC
D,BC
A,BC
D,
BD
A,BD
C,CD
A(2)三屬性:ABC+=ABCD,ABD+=ABCD,
ACD+=ACD,BCD+=ABCD新依賴:ABC
D,ABD
C,BCD
A(3)四屬性:ABCD+=ABCD新依賴:無
從上面的分析可以得出,蘊(yùn)含于給定函數(shù)依賴的非平凡函數(shù)依賴總共有11個(gè)。
因?yàn)殒I碼函數(shù)決定所有其他屬性,所以鍵碼屬性的閉包必然是屬性全集。反之,若某屬性集的閉包為屬性全集,則該屬性集即為鍵碼。當(dāng)然,判斷時(shí)應(yīng)從最小屬性集開始,以區(qū)別鍵碼和超鍵碼。
在本例中,有3個(gè)鍵碼AB,BC和BD,分別用黃色表示;有4個(gè)超鍵碼ABC,ABD,BCD和ABCD,分別用蘭色表示。
例6若R(A,B,C,D,E),F={AB→C,B→D,D→E,C→B}試求關(guān)系模式R的鍵碼。解:(1)先考察單屬性A+=A,B+=BDE,C+=CBDE,D+=DE,E+=E
(2)再考察雙屬性AB+=ABCDE,AC+=ACBDE,AD+=ADE,AE+=AE,BC+=BCDE,BD+=BDE,BE+=BED,CD+=CDEB,CE+=CEB,DE+=DE
由于AB和AC能確定ABCDE,所以AB和AC肯定是關(guān)系模式R的鍵碼。若還有三屬性的閉包滿足XYZ+=ABCDE的話,且XYZ不是超鍵碼的話,則XYZ也為鍵碼。
4.4關(guān)系的規(guī)范化
4.4.1第一范式定義4.6設(shè)R是一個(gè)關(guān)系模式,如果R中每一個(gè)屬性值域中的每一個(gè)值都是不可分解的,則稱R是屬于第一范式的,記作R∈1NF。例6
4.4.2第二范式定義4.7若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于鍵碼,則R∈2NF。例7(1)考察方案一:SA(SNO,SNAME,DEPT,MN,CNO,
CNAME,GRADE)SA的鍵碼:(SNO,CNO)SA的函數(shù)依賴集:F={SNO→SNAME,SNO→DEPT,DEPT→MN,CNO→CNAME,(SNO,CNO)→GRADE}
SA的鍵碼為:(SNO,CNO);
SA的非主屬性有:SNAME、DEPT、MN、CNO和GRADE;
因?yàn)镾NAME部分函數(shù)依賴于(SNO,CNO),所以由定義4.7可知,SA
2NF。(2)存在的問題一個(gè)關(guān)系模式R不屬于2NF,就會(huì)產(chǎn)生以下問題:
(1)插入異常
(2)刪除異常
(3)修改復(fù)雜
(3)解決的辦法:用投影分解
通過投影分解,消除非主屬性對(duì)鍵碼的部分函數(shù)依賴。下面我們按“一事一地”原則將SA分解為三個(gè)關(guān)系模式:
SD(SNO,SNAME,DEPT,MN)2NFC(CNO,CNAME)2NFSC(SNO,CNO,GRADE)2NF
4.4.3第三范式定義4.8若R∈2NF,且每一個(gè)非主屬性均不傳遞函數(shù)依賴于鍵碼,則R∈3NF。
例8
(1)考察SD(SNO,SNAME,DEPT,MN)2NFC(CNO,CNAME)2NFSC(SNO,CNO,GRADE)2NF經(jīng)過分析知:SD3NF,
C3NF,SC3NF
經(jīng)過分析知道:
R1
3NF,R2
3NF,R3
3NF
(2)存在的問題。一個(gè)關(guān)系模式SD若不是3NF,就會(huì)產(chǎn)生與4.4.2中相類似的問題:(1)插入異常;(2)刪除異常;(3)修改復(fù)雜(3)解決的辦法:用投影分解。
我們按“一事一地”的原則將SD分解為兩個(gè)關(guān)系模式:
S(SNO,SNAME,DEPT)和D(DEPT,MN)
在分解后的關(guān)系模式S與D中,已不存在部分函數(shù)依賴和傳遞函數(shù)依賴,故按定義知:
S
3NF,D
3NF。
4.4.4BCNF范式定義4.9關(guān)系模式R
U,F(xiàn)
∈1NF,若對(duì)于任一X→Y(Y
X),X必含有鍵碼,則R
U,F
BCNF。
也就是說,在關(guān)系模式R<U,F(xiàn)>中,若每一個(gè)決定因素都包含鍵碼,則R<U,F>
BCNF。
由于3NF不能很好地處理含有多個(gè)鍵碼和鍵碼是組合項(xiàng)的情況,因此人們定義了一個(gè)更強(qiáng)的范式BCNF。
可以證明(略):若R
BCNF,則R
3NF;但是若R
3NF,則未必屬于BCNF。
例9考察SJP(學(xué)生,課程,名次)該模式中的元組含義是:每一個(gè)學(xué)生、每門課程有一定的名次;每門課程中每一名次只有一個(gè)學(xué)生。由語(yǔ)義得:
F={(學(xué)生,課程)→名次,(名次,課程)→學(xué)生}(學(xué)生,課程)與(名次,課程)均為鍵碼,此關(guān)系模式中顯然沒有非主屬性對(duì)鍵碼的傳遞函數(shù)依賴或部分函數(shù)依賴,所以SJP
3NF。另外,除鍵碼以外沒有其它決定因素,所以SJP
BCNF。例10(1)考察SJT(學(xué)生,課程,教師)
該模式中的元組含義是:某個(gè)學(xué)生學(xué)習(xí)某個(gè)教師開設(shè)的某門課程?,F(xiàn)假定存在以下附加條件:
1)對(duì)于每門課、每個(gè)學(xué)生的講課老師只有一位;2)每位教師只講授一門課;3)每門課可由不同教師講授。由語(yǔ)義可得到如下的函數(shù)依賴:
F={(學(xué)生,課程)→教師,教師→課程}
用函數(shù)依賴圖表示如下圖所示:
該模式有二個(gè)鍵碼(學(xué)生,課程)、(學(xué)生,教師),由于沒有任何非主屬性對(duì)鍵碼的部分函數(shù)依賴和傳遞函數(shù)依賴,所以SJT
3NF;但SJT
BCNF,因?yàn)榻處煛n程,而教師不是鍵碼。
(2)存在的問題。不滿足BCNF范式的關(guān)系模式同樣存在著更新異常。例如在SJT(學(xué)生,課程,教師)中,如果存在元組(S4,J3,Tl),當(dāng)我們刪除信息“學(xué)生S4學(xué)習(xí)J3課”時(shí),將同時(shí)失去“T1教師主講J3課”這一信息。產(chǎn)生更新異常的原因是,屬性教師是決定因子,但卻不是鍵碼。(3)解決的辦法:用投影分解。若按“一事一地”的原則將SJT分解為兩個(gè)關(guān)系模式:ST(學(xué)生,教師)和TJ(教師,課程)則ST
BCNF,TJ
BCNF,并且如此分解確實(shí)解決了上述更新異常的問題。問題:上述分解是否唯一?4.4.5多值依賴和第四范式
從1NF—3NF、BCNF是在函數(shù)依賴的范疇內(nèi)討論問題,下面從多值依賴來考慮。例11
學(xué)校中某一門課程由多個(gè)教員講授,他們使用相同的一套參考書,可以用一個(gè)非規(guī)范化的關(guān)系來表示教員、課程和參考書之間的關(guān)系。
將上表變成一張規(guī)范化的二維表,就成為:
上述二維表對(duì)應(yīng)的關(guān)系模式CTB(課程、教員、參考書)的鍵碼是全碼,因而CTB
BCNF,但還存在很多問題。
1.多值依賴定義4.10設(shè)R(U)是屬性集U上的一個(gè)關(guān)系模式,X、Y、Z是U的子集,并且Z=U-X-Y,多值依賴X→→Y成立當(dāng)且僅當(dāng)對(duì)R(U)的任一關(guān)系r,給定的一對(duì)(x,z)值有一組Y值,這組值僅僅決定于x值而與z值無關(guān)。
例12
關(guān)系模式WSC(W,S,C)中,W表示倉(cāng)庫(kù),S表示保管員,C表示商品。假設(shè)每個(gè)倉(cāng)庫(kù)有若干個(gè)保管員,有若干種商品,每個(gè)保管員保管所在的倉(cāng)庫(kù)的所有商品,每種商品被所有保管員保管。經(jīng)分析,W→→S成立,由于C與S的完全對(duì)稱性,因此可以得到W→→C成立。
由于C與S的完全對(duì)稱性,必然有W→→C成立。
多值依賴具有以下性質(zhì):(1)若X→→Y,則X→→Z,其中Z=U-X-Y,即多值依賴具有對(duì)稱性。(2)若X→Y,則X→→Y,即函數(shù)依賴可以看作多值依賴的特殊情況。這是由于當(dāng)X→Y時(shí),對(duì)X的每一個(gè)值x,Y有一個(gè)確定的值y與之對(duì)應(yīng),所以X→→Y。(3)若X→→Y,而Z=Ф,則稱X→→Y為平凡的多值依賴。
注意:函數(shù)依賴X→Y的有效性僅決定于X、Y這兩個(gè)屬性集的值,而多值依賴的有效性卻與屬性集的范圍有關(guān)。
2.第四范式定義4.11關(guān)系模式R<U,F>
1NF,若X→→Y(Y
X)是非平凡的多值依賴,且X含有鍵碼,則稱R<U,F(xiàn)>
4NF。例13非4NF的關(guān)系模式的例子(1)以CTB(課程,教師,參考書)為例。在CTB中,課程→→教師,課程→→參考書,它們都是非平凡的多值依賴,而CTB的鍵碼是全碼,即鍵碼為(課程,教師,參考書),因課程不是鍵碼,故按照4NF的定義有CTB
4NF。
(2)存在的問題
因CTB鍵碼是全碼,故CTB
BCNF,但CTB
4NF。對(duì)于CTB的某個(gè)關(guān)系,若某一課程有n個(gè)教員可以講授,有m本參考書可供參考,則關(guān)系中有關(guān)該課程的元組數(shù)目一定有
m×n個(gè)。每個(gè)教員重復(fù)存儲(chǔ)m次,每本參考書重復(fù)存儲(chǔ)n次,數(shù)據(jù)的冗余度太大,從而造成了更新異常,因此還應(yīng)該繼續(xù)規(guī)范化,使關(guān)系模式CTB達(dá)到4NF。
(3)解決的辦法:采用投影分解
將關(guān)系模式CTB分解為:
CT(課程,教師),CB(課程,參考書)
在CT中雖然有課程→→教師,但這是平凡的多值依賴,CT中已不存在非平凡的多值依賴,所以CT
4NF。同理CB
4NF。
4.5模式分解的優(yōu)劣4.5.1模式分解的等價(jià)性
當(dāng)某些關(guān)系模式存在存儲(chǔ)異?,F(xiàn)象時(shí),通過模式分解可使范式的級(jí)別提高,從而得到一個(gè)性能較好的關(guān)系數(shù)據(jù)庫(kù)模式設(shè)計(jì)。
分解的等價(jià)性概念有三種不同的含義:分解具有“無損聯(lián)接”分解要“保持函數(shù)依賴”
分解既要“保持函數(shù)依賴”,又要具有“無損聯(lián)接性”
這三個(gè)含義是實(shí)行分解的三條不同的準(zhǔn)則。定義4.12設(shè)R(W)是一個(gè)關(guān)系模式,ρ={R1(W1),R2(W2),…,Rk(Wk)}是一個(gè)關(guān)系模式的集合,如果
W1∪W2∪…∪Wk=W,則稱ρ是R(W)的一個(gè)分解。
只要求R(W)分解后的各關(guān)系模式所含屬性的“并”等于W,這個(gè)限定是很不夠的,能否消除存儲(chǔ)異常,不僅依賴于分解后各模式的范式程度,而且依賴于分解的方式。下面我們通過一個(gè)例子來說明。
例14已知一個(gè)學(xué)生(SNO)只在一個(gè)系(DEPT)學(xué)習(xí),一個(gè)系只有一名系主任(MN),關(guān)系模式R(SNO,DEPT,MN)上的函數(shù)依賴集為:
F={SNO→DEPT,DEPT→MN}
由于R中存在MN對(duì)SNO的傳遞函數(shù)依賴,故它會(huì)發(fā)生更新、刪除和插入異常。
下面進(jìn)行以下四種形式的分解:
1.將R(SNO,DEPT,MN)分解為:
R1(SNO),R2(DEPT)和R3(MN)
這三張表的模式顯然全是BCNF范式。但這三張表互相之間沒有任何聯(lián)系,故此分解毫無意義。2.將R(SNO,DEPT,MN)分解為:
R1(SNO,MN)和R2(DEPT,MN)
此分解保持了無損聯(lián)接性,但沒有保持函數(shù)依賴。雖然分解后R1和R2均是BCNF范式,但仍有插入和刪除異常問題。
3.將R(SNO,DEPT,MN)分解為:
R1(SNO,DEPT)和R2(SNO,MN)此分解保持了無損聯(lián)接性,但沒有保持函數(shù)依賴。雖然分解后R1和R2均是BCNF范式,但仍有插入和刪除異常問題。
4.將R(SNO,DEPT,MN)分解為:
R1(SNO,DEPT)和R2(DEPT,MN)
可以證明該分解既具有無損聯(lián)接性,又保持了函數(shù)依賴。此分解既解決了更新異常,又沒有丟失原數(shù)據(jù)庫(kù)的信息,這是人們所希望的分解。
4.5.2模式分解的規(guī)則和方法1、模式分解的兩個(gè)規(guī)則(1)共享公共屬性(2)合并相關(guān)屬性例15SA(SNO,SNAME,DEPT,MN,CNO,CNAME,GRADE)為例進(jìn)行說明。
分解后的兩個(gè)模式R1和R2能實(shí)現(xiàn)無損連接的充分必要條件是:
(R1∩R2)
(R1-R2)或(R1∩R2)
(R2-R1)
2、模式分解的三種方法:(1)部分依賴歸子集,完全依賴隨鍵碼。(2)基本依賴為基礎(chǔ),中間屬性作橋梁。(3)找違例自成一體,舍其右全集歸一;若發(fā)現(xiàn)仍有違例,再回首如法炮制。設(shè)關(guān)系模式為R(A,B,C),其中A,B,C均為屬性集,若存在違背BC范式的函數(shù)依賴A
B,則可以以BC范式的違例為基礎(chǔ)把關(guān)系模式分解為:
{A,B}
{A,C}或{R-B}
例16設(shè)STC(Sname,Tname,Cname,Grade),且
F={(Sname,Cname)
(Tname,Grade),(Sname,Tname)
(Cname,Grade),Tname
Cname}鍵碼為:(Sname,Cname)和(Sname,Tname)。
由于決定因素Tname沒有包含鍵碼,故STC
BCNF。在分析函數(shù)依賴集后,可以確定如下函數(shù)依賴就是BC范式的違例:Tname
Cname
根據(jù)模式分解的方法,分解后二個(gè)關(guān)系模式如下:R1(Tname,Cname)
BCNFR2(Sname,Tname,Grade)
BCNF例17(略)4.6典型案例分析典型案例1---產(chǎn)品訂貨系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)模式的設(shè)計(jì)1、案例描述
在一個(gè)產(chǎn)品訂貨系統(tǒng)數(shù)據(jù)庫(kù)中,有一個(gè)關(guān)系模式如下:訂貨(訂單號(hào),訂購(gòu)單位名,地址,產(chǎn)品型號(hào),
產(chǎn)品名,單價(jià),數(shù)量)要求:
(1)給出你認(rèn)為合理的函數(shù)依賴;
(2)給出一組滿足第三范式的關(guān)系模型。2、案例分析1)產(chǎn)品訂貨系統(tǒng)數(shù)據(jù)庫(kù)的函數(shù)依賴如下:F={訂單號(hào)
訂購(gòu)單位名,訂單號(hào)
地址,
產(chǎn)品型號(hào)
產(chǎn)品名,產(chǎn)品型號(hào)
單價(jià),(訂單號(hào),產(chǎn)品型號(hào))
數(shù)量}2)根據(jù)函數(shù)依賴,可以畫出函數(shù)依賴圖如下:3、案例實(shí)現(xiàn)
根據(jù)函數(shù)依賴圖,可以投影分解如下:R1(訂單號(hào),訂購(gòu)單位名,地址),F(xiàn)1={訂單號(hào)
訂購(gòu)單位名,訂單號(hào)
地址}R2(產(chǎn)品型號(hào),產(chǎn)品名,單價(jià)),F(xiàn)2={產(chǎn)品型號(hào)
產(chǎn)品名,產(chǎn)品型號(hào)
單價(jià)}R3(訂單號(hào),產(chǎn)品型號(hào),數(shù)量),F3={(訂單號(hào),產(chǎn)品型號(hào))
數(shù)量}根據(jù)函數(shù)依賴和3NF的判定條件,可以確定R1、R2和R3均屬于3NF。問題:R1、R2和R3也屬于BCNF嗎?典型案例2---在線考試系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)模式的設(shè)計(jì)1、案例描述
根據(jù)第3章3.5節(jié)典型案例2,考生信息屬性包括:考生學(xué)號(hào)、考生姓名、考生密碼、考生性別、考生班級(jí)和注冊(cè)日期;試卷信息屬性包括:試卷編號(hào)、判斷題數(shù)量、判斷題每題分?jǐn)?shù)、選擇題數(shù)量、選擇題每題分?jǐn)?shù)、填空題數(shù)量、填空題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教版選修6地理上冊(cè)月考試卷含答案
- 2025年蘇教版選擇性必修1歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年教科新版九年級(jí)生物上冊(cè)月考試卷含答案
- 2025年滬科版選擇性必修3化學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年度中央廚房設(shè)備定期檢查與維護(hù)合同4篇
- 2025年度高端面包屋品牌加盟及產(chǎn)品訂購(gòu)合同4篇
- 技術(shù)許可合同(2篇)
- 房屋獨(dú)家銷售合同(2篇)
- 武漢2025年度倉(cāng)儲(chǔ)物流租賃合同標(biāo)準(zhǔn)文本3篇
- 2025年度模具設(shè)計(jì)研發(fā)委托合同書-創(chuàng)新解決方案4篇
- 圖像識(shí)別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 個(gè)體戶店鋪?zhàn)赓U合同
- 禮盒業(yè)務(wù)銷售方案
- 二十屆三中全會(huì)精神學(xué)習(xí)試題及答案(100題)
- 小學(xué)五年級(jí)英語(yǔ)閱讀理解(帶答案)
- 仁愛版初中英語(yǔ)單詞(按字母順序排版)
- (正式版)YS∕T 5040-2024 有色金屬礦山工程項(xiàng)目可行性研究報(bào)告編制標(biāo)準(zhǔn)
- 小學(xué)一年級(jí)拼音天天練
- 新概念英語(yǔ)第二冊(cè)考評(píng)試卷含答案(第49-56課)
- 【奧運(yùn)會(huì)獎(jiǎng)牌榜預(yù)測(cè)建模實(shí)證探析12000字(論文)】
- 救生艇筏、救助艇基本知識(shí)課件
評(píng)論
0/150
提交評(píng)論