關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論-->3NF
關(guān)系數(shù)據(jù)庫設(shè)計(jì)理論-->3NF
函數(shù)依賴
1.函數(shù)依賴定義
A-> B,即 “ A函數(shù)決定B ” ,A稱為決定因素。
2.關(guān)系的鍵碼、超鍵碼
屬性函數(shù)決定關(guān)系R的所有其它屬性,并且該屬性的任何真子集都不能函數(shù)決定R的所有其它屬性,則屬性是鍵碼。 鍵碼必須是最小的。
包含鍵碼的屬性集稱為 “ 超鍵碼 ” 。每個(gè)鍵碼都是超鍵碼。
例題: 已知關(guān)系R包含屬性{A,B,C,D},R的鍵碼為{A,B},則下面的選項(xiàng)哪1個(gè)是R
的超鍵碼( )。
A.{A} B.{C,D} C.{A,B,C,D} D.{B,C,D}
答案:C
3.幾個(gè)概念
平凡依賴:如果B是A的子集,則稱該依賴為平凡的。
非平凡依賴:如果B中至少有一個(gè)屬性不在A中,則稱該依賴為非平凡的。
完全非平凡依賴:如果B中沒有一個(gè)屬性在A中,則稱該依賴為完全非平凡的。
平凡依賴規(guī)則:函數(shù)依賴A1A2 … An → B1B2 … Bm等價(jià)于A1A2 … An → C1C2 … Ck,其中 C是B的子集,但不在A中出現(xiàn)。稱這個(gè)規(guī)則為 “ 平凡依賴規(guī)則 ” 。
4.傳遞規(guī)則
如果A1A2 … An → B1B2 … Bm和B1B2 … Bm → C1C2 … Ck,在關(guān)系R中成立,則A1A2 … An → C1C2 … Ck在R中也成立。這個(gè)規(guī)則就稱為傳遞規(guī)則。
例題: 現(xiàn)給定一個(gè)關(guān)系R的實(shí)例如下表,則可能是函數(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
學(xué)習(xí)要點(diǎn)二
1. 函數(shù)依賴集:假設(shè){A1,A2, … ,An}是屬性集,記為A,S是函數(shù)依賴集。
屬性集A在依賴集S下的封閉集是這樣的屬性集X,它使得滿足依賴集S中的所有依賴的每個(gè)關(guān)系也都滿足A → X。
A1A2 … An → X是蘊(yùn)含于S中的函數(shù)依賴。
2.封閉集:
對于給定的函數(shù)依賴集S,屬性集A函數(shù)決定的屬性的集合就是屬性集A在依賴集S下的封閉集。
學(xué)會計(jì)算某屬性集的封閉集,可以根據(jù)給定的函數(shù)依賴集推導(dǎo)蘊(yùn)含于該依賴集的其他函數(shù)依賴。
例題: 假設(shè)關(guān)系模式為R(A,B,C,D),函數(shù)依賴為A→B,B→C和B→D。
(1)求蘊(yùn)含于給定函數(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
蘊(yùn)含于給定函數(shù)依賴的非平凡函數(shù)依賴共12個(gè)。
(2)A為鍵碼。
(3)AB,AC,AD,ABC,ABD,ABCD為超鍵碼。
學(xué)習(xí)要點(diǎn)三
1. 幾個(gè)概念
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傳遞依賴。
學(xué)習(xí)要點(diǎn)四
1.第一范式(1NF)
如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則這個(gè)關(guān)系屬于第一范式。
2.第二范式(2NF)
若關(guān)系模式R屬于第一范式,且每個(gè)非主屬性都完全函數(shù)依賴于鍵碼,則R屬于第二范式。
例題:學(xué)生關(guān)系模式Student(Sno,Sname,Sdept,Mname,Cname,Grade)。
?該關(guān)系模式存在如下部分依賴:
Sno,Cname → Sname,Sdept,Mname
不滿足 “ 每個(gè)非主屬性都完全函數(shù)依賴于鍵碼 ” 的條件。學(xué)生關(guān)系模式不屬于第二范式。
3.第三范式(3NF)
若關(guān)系模式R屬于第一范式,且每個(gè)非主屬性都不傳遞依賴于鍵碼,則R屬于第三范式。
4.BC范式(BCNF)
若關(guān)系模式R屬于第一范式,且每個(gè)屬性都不傳遞依賴于鍵碼,則R屬于BC范式。
BC范式的條件表述:
l 每個(gè)非平凡依賴的左邊必須包含鍵碼;每個(gè)決定因素必須包含鍵碼。
l BC范式既檢查非主屬性,又檢查主屬性。
例題: 寫出3個(gè)關(guān)系模式分別滿足:
(1)是1NF,不是2NF;
(2)是2NF,不是3NF;
(3)是3NF,也是BCNF。
各用兩句話分別說明所寫的關(guān)系模式是前者,不是(或也是)后者。
答:(1)學(xué)生選課(學(xué)號,姓名,課程號,成績)
屬性不可分,是1NF;存在非主屬性對鍵碼的部分依賴(學(xué)號,課程號→姓名),不
是2NF。
(2)學(xué)生(學(xué)號,姓名,系別,系主任)
鍵碼為單屬性,不存在部分依賴,是2NF;存在非主屬性對鍵碼的傳遞依賴(學(xué)號→
姓名,系別;系別≯學(xué)號;系別→系主任;學(xué)號傳遞→系主任),不是3NF。
(3)學(xué)生(學(xué)號,姓名,年齡)
非主屬性(姓名,年齡)對鍵碼不存在部分依賴和傳遞依賴,是3NF;
主屬性(學(xué)號)對鍵碼也不存在部分依賴和傳遞依賴,是BCNF。
學(xué)習(xí)要點(diǎn)五
1.模式分解的三種方法
1)部分依賴歸子集;完全依賴隨鍵碼。
關(guān)系模式 “ 升級 ” 第二范式:消除非主屬性對鍵碼的部分依賴。
解決的辦法:對原有模式進(jìn)行分解。
分解的關(guān)鍵:找出對鍵碼部分依賴的非主屬性所依賴的鍵碼的真子集,把這個(gè)真子集與所有相應(yīng)的非主屬性組合成一個(gè)新的模式;對鍵碼完全依賴的所有非主屬性則與鍵碼組合成另一個(gè)新模式。
2)基本依賴為基礎(chǔ),中間屬性作橋梁
關(guān)系模式 “ 升級 ” 第三范式:消除非主屬性對鍵碼的傳遞依賴。
解決的辦法:以構(gòu)成傳遞鏈的兩個(gè)基本依賴為基礎(chǔ)形成兩個(gè)新的模式,切斷傳遞鏈,保持兩個(gè)基本依賴,有中間屬性作為橋梁,跨接兩個(gè)新的模式,實(shí)現(xiàn)無損的自然連接。
3)找違例自成一體,舍其右全集歸一
關(guān)系模式 “ 升級 ” BC范式:消除非主屬性對鍵碼的部分依賴和傳遞依賴,消除 主屬性對鍵碼的部分依賴和傳遞依賴。
解決的辦法:對關(guān)系R(A,B,C),若存在BCNF的違例A → B ,則R分解為
R1(A,B) R2(A,C), R1,R2則為BCNF.
例題: 關(guān)系模式為R(A,B,C,D),函數(shù)依賴為AB→C,C→D和D→A。
(1)找出所有違背BCNF的函數(shù)依賴。提示:應(yīng)該考慮不在給定的依賴集但蘊(yùn)含于
其中的依賴;
(2)關(guān)系模式R分解成屬于BCNF的關(guān)系模式的集合。
參考答案:
(1)參看主教材P.122例6.1,共有14個(gè)非平凡函數(shù)依賴(包括已知的和導(dǎo)出的)
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個(gè)鍵碼:AB,BC,BD
其決定因素不包含鍵碼的函數(shù)依賴即為BC范式的違例,如下所示:
C→A,C→D,D→A,AC→D,CD→A
(2)以違例C→D為基礎(chǔ)進(jìn)行分解:
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范式
作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機(jī)號)
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國思RDIF開發(fā)框架
,
給用戶和開發(fā)者最佳的.Net框架平臺方案,為企業(yè)快速構(gòu)建跨平臺、企業(yè)級的應(yīng)用提供強(qiáng)大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項(xiàng)目管理師、DBA。專注于微軟平臺項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開發(fā)與管理經(jīng)驗(yàn),曾多次組織并開發(fā)多個(gè)大型項(xiàng)目,在面向?qū)ο蟆⒚嫦蚍?wù)以及數(shù)據(jù)庫領(lǐng)域有一定的造詣。現(xiàn)主要從事基于
RDIF
框架的技術(shù)開發(fā)、咨詢工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問題或建議,請多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過微信、郵箱、QQ等聯(lián)系我,非常感謝。

浙公網(wǎng)安備 33010602011771號