關系數(shù)據(jù)庫設計理論-->3NF
函數(shù)依賴
1.函數(shù)依賴定義
A-> B,即?
“
A函數(shù)決定B
”
? ,A稱為決定因素。
2.關系的鍵碼、超鍵碼
屬性函數(shù)決定關系R的所有其它屬性,并且該屬性的任何真子集都不能函數(shù)決定R的所有其它屬性,則屬性是鍵碼。 鍵碼必須是最小的。
包含鍵碼的屬性集稱為
“
超鍵碼
”
。每個鍵碼都是超鍵碼。
例題:
已知關系R包含屬性{A,B,C,D},R的鍵碼為{A,B},則下面的選項哪1個是R
的超鍵碼(? )。
? A.{A}??? B.{C,D}?? C.{A,B,C,D}? D.{B,C,D}
答案:C
?
3.幾個概念
平凡依賴:如果B是A的子集,則稱該依賴為平凡的。
非平凡依賴:如果B中至少有一個屬性不在A中,則稱該依賴為非平凡的。
完全非平凡依賴:如果B中沒有一個屬性在A中,則稱該依賴為完全非平凡的。
平凡依賴規(guī)則:函數(shù)依賴A1A2
…
An
→
B1B2
…
Bm等價于A1A2
…
An
→
C1C2
…
Ck,其中?? C是B的子集,但不在A中出現(xiàn)。稱這個規(guī)則為
“
平凡依賴規(guī)則
”
。
?
4.傳遞規(guī)則
??? 如果A1A2
…
An
→
B1B2
…
Bm和B1B2
…
Bm
→
C1C2
…
Ck,在關系R中成立,則A1A2
…
An
→
C1C2
…
Ck在R中也成立。這個規(guī)則就稱為傳遞規(guī)則。
?
例題:
現(xiàn)給定一個關系R的實例如下表,則可能是函數(shù)依賴的是( B ).
??? Fl |
??? F2 |
??? R |
??? F。 |
??? F5 |
??? 李華 |
??? 20020330 |
??? H |
??? 1 |
??? lO |
??? 金謙 |
??? 20020330 |
??? 0 |
??? 1 |
??? 5 |
??? 李華 |
??? 20020218 |
??? O? · |
??? 3 |
??? 15 |
??? 呂宋 |
??? 200201]5 |
??? H |
?
?? 2 |
??? 5 |
??? 顧小華 |
??? 20020218 |
??? O |
??? 1 |
??? 20 |
A.F1
→F2??????????? B.F1F2→F5
C.F3 F4→F5??????? D.F2F3→F4
?
學習要點二
1. 函數(shù)依賴集:假設{A1,A2,
…
,An}是屬性集,記為A,S是函數(shù)依賴集。
屬性集A在依賴集S下的封閉集是這樣的屬性集X,它使得滿足依賴集S中的所有依賴的每個關系也都滿足A
→
X。
A1A2
…
An
→
X是蘊含于S中的函數(shù)依賴。
2.封閉集:
對于給定的函數(shù)依賴集S,屬性集A函數(shù)決定的屬性的集合就是屬性集A在依賴集S下的封閉集。
學會計算某屬性集的封閉集,可以根據(jù)給定的函數(shù)依賴集推導蘊含于該依賴集的其他函數(shù)依賴。
?
例題:
假設關系模式為R(A,B,C,D),函數(shù)依賴為A→B,B→C和B→D。
??? (1)求蘊含于給定函數(shù)依賴的所有非平凡函數(shù)依賴;
??? (2)求R的所有鍵碼;
??? (3)求R的所有超碼(不包括鍵碼)。
??? 參考答案:
??? (1)先求各種屬性組合的封閉集,再從中找出新的函數(shù)依賴。
??? A+=ABCD??????? ?B+=BCD? ?C+=C ??D+=D
??? A→C,A→D??? (2)
??? AB+==ABCD? AC+==ABCD ???AD+=ABCD ?BC+=BCD? ?BD+=BCD
CD+=CD
??? AB→C,AB→D AC→B,AC→D? AD→B,AD→C? BC→D? BD→C
??? ABC+=ABCD ?ABD+=ABCD ??BCD+=BCD
??? ABC→D? ABD→C???
??? ABCD+=ABCD
??? 蘊含于給定函數(shù)依賴的非平凡函數(shù)依賴共12個。
??? (2)A為鍵碼。
??? (3)AB,AC,AD,ABC,ABD,ABCD為超鍵碼。
???
學習要點三
?
1. 幾個概念
l????????
主屬性:鍵碼所在的屬性稱為主屬性。
l????????
主屬性:鍵碼所在的屬性稱為主屬性。
l????????
非主屬性:鍵碼屬性以外的屬性稱為非主屬性。
l????????
非主屬性:鍵碼屬性以外的屬性稱為非主屬性。
l????????
完全依賴:對于函數(shù)依賴W
→
A,如果存在V是W的真子集而函數(shù)依賴
?
??V
→
A成立,則稱A部分依賴于W;若不存在這種V,則稱A完全依賴于W。
l????????
傳遞依賴
??? 對于函數(shù)依賴X
→
Y,如果X不函數(shù)依賴于Y,而函數(shù)依賴Y
→
Z成立,則稱Z對X傳遞依賴。
?
學習要點四
1.第一范式(1NF)
如果一個關系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則這個關系屬于第一范式。
2.第二范式(2NF)
若關系模式R屬于第一范式,且每個非主屬性都完全函數(shù)依賴于鍵碼,則R屬于第二范式。
例題:學生關系模式Student(Sno,Sname,Sdept,Mname,Cname,Grade)。
?該關系模式存在如下部分依賴:
?? Sno,Cname
→
Sname,Sdept,Mname
??? 不滿足
“
每個非主屬性都完全函數(shù)依賴于鍵碼
”
的條件。學生關系模式不屬于第二范式。
3.第三范式(3NF)
若關系模式R屬于第一范式,且每個非主屬性都不傳遞依賴于鍵碼,則R屬于第三范式。
4.BC范式(BCNF)
若關系模式R屬于第一范式,且每個屬性都不傳遞依賴于鍵碼,則R屬于BC范式。
BC范式的條件表述:
l????????
每個非平凡依賴的左邊必須包含鍵碼;每個決定因素必須包含鍵碼。
l????????
BC范式既檢查非主屬性,又檢查主屬性。
例題:
寫出3個關系模式分別滿足:
? (1)是1NF,不是2NF;
? (2)是2NF,不是3NF;
? (3)是3NF,也是BCNF。
? 各用兩句話分別說明所寫的關系模式是前者,不是(或也是)后者。
? 答:(1)學生選課(學號,姓名,課程號,成績)
? 屬性不可分,是1NF;存在非主屬性對鍵碼的部分依賴(學號,課程號→姓名),不
? 是2NF。
??? (2)學生(學號,姓名,系別,系主任)
??? 鍵碼為單屬性,不存在部分依賴,是2NF;存在非主屬性對鍵碼的傳遞依賴(學號→
姓名,系別;系別≯學號;系別→系主任;學號傳遞→系主任),不是3NF。
??? (3)學生(學號,姓名,年齡)
??? 非主屬性(姓名,年齡)對鍵碼不存在部分依賴和傳遞依賴,是3NF;
??? 主屬性(學號)對鍵碼也不存在部分依賴和傳遞依賴,是BCNF。
?
學習要點五
1.模式分解的三種方法
1)部分依賴歸子集;完全依賴隨鍵碼。
??? 關系模式
“
升級
”
第二范式:消除非主屬性對鍵碼的部分依賴。
解決的辦法:對原有模式進行分解。
分解的關鍵:找出對鍵碼部分依賴的非主屬性所依賴的鍵碼的真子集,把這個真子集與所有相應的非主屬性組合成一個新的模式;對鍵碼完全依賴的所有非主屬性則與鍵碼組合成另一個新模式。
?2)基本依賴為基礎,中間屬性作橋梁
關系模式
“
升級
”
第三范式:消除非主屬性對鍵碼的傳遞依賴。
解決的辦法:以構成傳遞鏈的兩個基本依賴為基礎形成兩個新的模式,切斷傳遞鏈,保持兩個基本依賴,有中間屬性作為橋梁,跨接兩個新的模式,實現(xiàn)無損的自然連接。
3)找違例自成一體,舍其右全集歸一
??? 關系模式
“
升級
”
BC范式:消除非主屬性對鍵碼的部分依賴和傳遞依賴,消除? 主屬性對鍵碼的部分依賴和傳遞依賴。
解決的辦法:對關系R(A,B,C),若存在BCNF的違例A
→
B ,則R分解為
R1(A,B)? R2(A,C), R1,R2則為BCNF.
?
例題:
關系模式為R(A,B,C,D),函數(shù)依賴為AB→C,C→D和D→A。
??? (1)找出所有違背BCNF的函數(shù)依賴。提示:應該考慮不在給定的依賴集但蘊含于
其中的依賴;
??? (2)關系模式R分解成屬于BCNF的關系模式的集合。
??? 參考答案:
(1)參看主教材P.122例6.1,共有14個非平凡函數(shù)依賴(包括已知的和導出的)
C→A,C→D,D→A
AB→C,AB→D,AC→D,BC→A,BC→D,BD→A,BD→C,CD→A
ABC→D,ABD→C,BCD→A
??? 共有3個鍵碼:AB,BC,BD
??? 其決定因素不包含鍵碼的函數(shù)依賴即為BC范式的違例,如下所示:
??? C→A,C→D,D→A,AC→D,CD→A
??? (2)以違例C→D為基礎進行分解:
??? Rl(C,D),R2(A,B,C)
??? R1屬于BC范式。
??? R2有函數(shù)依賴C→A,AB→C,BC→A
??? AB+=ABC.BC+=ABC
??? AB,BC均為鍵碼。
??? 函數(shù)依賴C→A為BC范式違例。于是R2又可分解為:
??? R3(A,C),R4(B,C)
??? 至此,R分解為R1,R3,R4,均屬于BC范式。
posted on 2006-05-23 10:44 liaojiyong 閱讀(2956) 評論(0) 編輯 收藏 所屬分類: DBMixture