數(shù)據(jù)庫系統(tǒng)范式教程_第1頁
數(shù)據(jù)庫系統(tǒng)范式教程_第2頁
數(shù)據(jù)庫系統(tǒng)范式教程_第3頁
數(shù)據(jù)庫系統(tǒng)范式教程_第4頁
數(shù)據(jù)庫系統(tǒng)范式教程_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1.1數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n數(shù)據(jù)依賴對(duì)關(guān)系數(shù)據(jù)庫的影響數(shù)據(jù)依賴對(duì)關(guān)系數(shù)據(jù)庫的影響n函數(shù)依賴函數(shù)依賴n關(guān)系模式的范式關(guān)系模式的范式n關(guān)系模式的規(guī)范化關(guān)系模式的規(guī)范化n數(shù)據(jù)依賴的公理系統(tǒng)數(shù)據(jù)依賴的公理系統(tǒng)1.2數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n關(guān)系模式設(shè)計(jì)不規(guī)范會(huì)帶來一系列的問題關(guān)系模式設(shè)計(jì)不規(guī)范會(huì)帶來一系列的問題數(shù)據(jù)冗余、更新異常、插入異常、刪除異常數(shù)據(jù)冗余、更新異常、插入異常、刪除異常n示例示例1 1: : 關(guān)系模式關(guān)系模式 R(TnameR(Tname, , AddrAddr, C#, , C#, CnameCname) )一個(gè)教師只有一個(gè)地址(戶口所在地)一個(gè)教師只有一個(gè)地址(戶口所在

2、地)一個(gè)教師可教多門課程一個(gè)教師可教多門課程一門課程只有一個(gè)任課教師一門課程只有一個(gè)任課教師因此因此R R的主碼是(的主碼是(C C)1.3數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理TnameTnameAddrAddrC#C#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2N2T1T1A1A1C3C3N3N3T2T2A2A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.4數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n教師教師T1T1教了三門課程,他的地址被重復(fù)存教了三門課程,他的地址被重復(fù)存儲(chǔ)了儲(chǔ)了2 2次。次。TnameTnameAddrAddrC#C

3、#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2N2T1T1A1A1C3C3N3N3T2T2A2A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.5數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n如果如果T1T1的地址變了,則需要改變的地址變了,則需要改變3 3個(gè)元組的地址;個(gè)元組的地址;若有一個(gè)未更改,就會(huì)出現(xiàn)數(shù)據(jù)不一致。但若有一個(gè)未更改,就會(huì)出現(xiàn)數(shù)據(jù)不一致。但DBMSDBMS無無法獲知這種不一致。法獲知這種不一致。TnameTnameAddrAddrC#C#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2

4、N2T1T1A1A1C3C3N3N3T2T2A2A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.6數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n如果要增加一名教師,但他還未帶課,則如果要增加一名教師,但他還未帶課,則C#C#和和CnameCname為空,但由于為空,但由于C C是主碼,為空違反了實(shí)是主碼,為空違反了實(shí)體完整性,所以這名教師將無法插入到數(shù)據(jù)庫中體完整性,所以這名教師將無法插入到數(shù)據(jù)庫中。TnameTnameAddrAddrC#C#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2N2T1T1A1A1C3C3N3N3T2T2A2

5、A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.7數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n如果教師如果教師T3T3現(xiàn)在不帶課了,則需將現(xiàn)在不帶課了,則需將T3T3的元組刪去,的元組刪去,但同時(shí)也把他的姓名和地址信息刪掉了。但同時(shí)也把他的姓名和地址信息刪掉了。TnameTnameAddrAddrC#C#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2N2T1T1A1A1C3C3N3N3T2T2A2A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.8數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n方法:模式分解方法:

6、模式分解方法方法1 1:R R分解為分解為R1(R1(TnameTname, , AddrAddr) )R2(R2(C#C#,Cname),Cname)方法方法2 2R1( R1( TnameTname, , AddrAddr) )R2( R2( TnameTname, , C#,C#, CnameCname) )授課信息丟失了授課信息丟失了基本解決問題基本解決問題1.9數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理 規(guī)范化理論規(guī)范化理論正是用來改造關(guān)系模式,通正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新依賴,以解決插入異常

7、、刪除異常、更新異常和數(shù)據(jù)冗余問題。異常和數(shù)據(jù)冗余問題。1.10數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n到底什么樣的模式才最佳?到底什么樣的模式才最佳?n怎么分解才能達(dá)到要求?怎么分解才能達(dá)到要求?n標(biāo)準(zhǔn)是什么?標(biāo)準(zhǔn)是什么?n如何實(shí)現(xiàn)?如何實(shí)現(xiàn)?1.11數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n關(guān)系模式是對(duì)關(guān)系的描述,它由五部分組成:關(guān)系模式是對(duì)關(guān)系的描述,它由五部分組成:R R(U U,D D,DomDom,F(xiàn) F)R R為關(guān)系模式名為關(guān)系模式名; ;U U是一個(gè)屬性集是一個(gè)屬性集; ;D D是是U U中屬性的值所來自的域中屬性的值所來自的域; ;DomDom是屬性向域的映射集合是屬性向域的映射集合; ;F F是

8、屬性間的依賴關(guān)系。是屬性間的依賴關(guān)系。1.12數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義:定義:設(shè)關(guān)系模式設(shè)關(guān)系模式R(A1,A2,R(A1,A2,An),An)或簡(jiǎn)記為或簡(jiǎn)記為R(U)R(U),U U是是R R的屬性集合的屬性集合,X,X和和Y Y是是U U的子集。的子集。r r是是R R的任意一個(gè)實(shí)的任意一個(gè)實(shí)例(關(guān)系),若例(關(guān)系),若r r的任意兩個(gè)元組的任意兩個(gè)元組t1t1、t2t2,由,由t1X=t2Xt1X=t2X可導(dǎo)致可導(dǎo)致t1Y=t2Yt1Y=t2Y,即如果,即如果X X相等相等則則Y Y也相等,也相等,則稱則稱Y Y函數(shù)依賴于函數(shù)依賴于X X或稱為或稱為X X函數(shù)決定函數(shù)決定Y Y

9、,記作,記作 X XY Y。1.13數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理1.1.函數(shù)依賴函數(shù)依賴不是不是指關(guān)系模式指關(guān)系模式R R的的某個(gè)或某些某個(gè)或某些關(guān)系實(shí)關(guān)系實(shí)例滿足的約束條件,例滿足的約束條件,而是而是指指R R的的所有所有關(guān)系實(shí)例均關(guān)系實(shí)例均要滿足的約束條件。要滿足的約束條件。2.2.函數(shù)依賴是函數(shù)依賴是語義范疇語義范疇的概念。只能根據(jù)數(shù)據(jù)的的概念。只能根據(jù)數(shù)據(jù)的語義來確定函數(shù)依賴。語義來確定函數(shù)依賴。 例如例如“姓名姓名年齡年齡”這個(gè)函數(shù)依賴只有在不這個(gè)函數(shù)依賴只有在不允許有同名人的條件下成立。允許有同名人的條件下成立。1.14數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n3. 3. 若若X XY Y,則

10、則X X叫做叫做決定因素決定因素。n4. 4. 若若X XY Y,Y YX X,則記做則記做 X X Y Y。 n5. 5. 若若Y Y不函數(shù)依賴于不函數(shù)依賴于X X,則記做則記做X XY Y。1.15數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義定義11.2 11.2 在在R(U)R(U)中中, ,如果如果X XY Y,并且對(duì)于并且對(duì)于X X的的任何一個(gè)真子集任何一個(gè)真子集XX,都有都有XXY Y,則稱則稱Y Y完全完全函函數(shù)依賴于數(shù)依賴于X X,記做,記做X XY Y。否則稱否則稱 稱稱Y Y部分部分函數(shù)依函數(shù)依賴于賴于X X。記做。記做X XY Y。n在在 例例11中(中(Sno,Cname)Sno

11、,Cname)GradeGrade 是是完全完全函數(shù)依賴;函數(shù)依賴; (Sno,Cname)Sno,Cname)SdeptSdept 是是部分部分函數(shù)依賴;函數(shù)依賴; PFF1.16數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義定義11.311.3 在關(guān)系模式在關(guān)系模式R(U)R(U)中,如果中,如果X XY Y,Y YZ Z,且,且Y Y X,Y X,YX,X,則稱則稱Z Z傳遞函數(shù)依傳遞函數(shù)依賴賴于于X X,記作,記作X X Z Z 。在在 例例11中中SnoSno SdeptSdept, , SdeptSdept MnameMname成成立,立, 所以所以SnoSno MnameMname。傳遞傳遞

12、1.17數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n例如例如,在關(guān)系在關(guān)系Student(Sno,Sname,Ssex,Sage,SdeptStudent(Sno,Sname,Ssex,Sage,Sdept) )中中,有有SnoSnoSsexSsex, , SnoSnoSageSage, , SnoSnoSdeptSdept, , SnoSno SnameSname( (無重名),但無重名),但SsexSsexSageSage。1.18數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n在關(guān)系在關(guān)系SC(Sno,Cno,GradeSC(Sno,Cno,Grade) )中,有中,有 SnoSnoGradeGrade, , CnoC

13、noGradeGrade , , ( (Sno,Cno)Sno,Cno)GradeGrade,( (Sno,CnoSno,Cno) )是決定屬性集是決定屬性集。n在關(guān)系在關(guān)系Std(Sno,Sdept,MnameStd(Sno,Sdept,Mname) )中,有中,有 SnoSnoSdept,SdeptSdept,SdeptMname,SnoMname,Sno MnameMname。傳遞傳遞F1.19數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n函數(shù)依賴函數(shù)依賴實(shí)際上是指一個(gè)關(guān)系模式中一個(gè)屬性實(shí)際上是指一個(gè)關(guān)系模式中一個(gè)屬性集和另一個(gè)屬性集間的多對(duì)一關(guān)系集和另一個(gè)屬性集間的多對(duì)一關(guān)系 例如選課關(guān)系例如選課關(guān)系

14、SC(S#, C#, Score)SC(S#, C#, Score)存在由屬性集存在由屬性集S#,C#S#,C#到屬性集到屬性集ScoreScore的函數(shù)依賴的函數(shù)依賴對(duì)于任意給定的對(duì)于任意給定的S#S#值和值和C#C#值,只有一個(gè)值,只有一個(gè)ScoreScore值值與其對(duì)應(yīng)與其對(duì)應(yīng)反過來,可以存在多個(gè)反過來,可以存在多個(gè)S#S#值和值和C#C#值,它們對(duì)應(yīng)的值,它們對(duì)應(yīng)的ScoreScore值相等值相等1.20數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nFDFD是否成立,唯一辦法是仔細(xì)考察應(yīng)用中是否成立,唯一辦法是仔細(xì)考察應(yīng)用中屬性的含義。屬性的含義。nFDFD實(shí)際上是對(duì)現(xiàn)實(shí)世界的斷言。實(shí)際上是對(duì)現(xiàn)實(shí)世界

15、的斷言。n數(shù)據(jù)庫設(shè)計(jì)者在設(shè)計(jì)時(shí)把應(yīng)遵守的函數(shù)依數(shù)據(jù)庫設(shè)計(jì)者在設(shè)計(jì)時(shí)把應(yīng)遵守的函數(shù)依賴告知賴告知DBMSDBMS,則,則DBMSDBMS會(huì)自動(dòng)檢查關(guān)系的合會(huì)自動(dòng)檢查關(guān)系的合法性。法性。1.21數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理StudentStudent關(guān)系模式中,關(guān)系模式中,S# S# SnameSname (單個(gè)屬性可去掉括號(hào),簡(jiǎn)寫成(單個(gè)屬性可去掉括號(hào),簡(jiǎn)寫成 S# S# SnameSname) SCSC關(guān)系模式中,關(guān)系模式中, S#,C# ScoreS#,C# Score對(duì)于關(guān)系模式對(duì)于關(guān)系模式 R(TnameR(Tname, , AddrAddr, C#, , C#, CnameCname)

16、 )若一門課只能有一個(gè)教師,則有若一門課只能有一個(gè)教師,則有 C# C# TnameTname 若一門課可有多個(gè)教師任教,則有若一門課可有多個(gè)教師任教,則有 C# C# TnameTname 不成立不成立因此因此FDFD是與具體應(yīng)用相關(guān)的。是與具體應(yīng)用相關(guān)的。1.22數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義定義11.11.4 4:設(shè)設(shè)K K為關(guān)系模式為關(guān)系模式R(U,F)R(U,F)中的屬性或?qū)傩灾械膶傩曰驅(qū)傩约希艏?,若K KU U,則則K K為為R R的的候選碼候選碼(Candidate Key)(Candidate Key)。若候選碼多于一個(gè),則選定其中一個(gè)為若候選碼多于一個(gè),則選定其中一

17、個(gè)為主碼主碼(Primary (Primary Key)Key)。n主屬性、非主屬性、全碼主屬性、非主屬性、全碼。n定義定義11.511.5:關(guān)系模式關(guān)系模式R R中屬性或?qū)傩越M中屬性或?qū)傩越MX X并非并非R R的碼,的碼,但但X X是另一個(gè)關(guān)系模式的碼,則稱是另一個(gè)關(guān)系模式的碼,則稱X X是是R R的的外碼外碼。F1.23數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n碼碼是關(guān)系模式中的一個(gè)重要概念。是關(guān)系模式中的一個(gè)重要概念。n候選碼候選碼能夠唯一地標(biāo)識(shí)關(guān)系的元組;是關(guān)能夠唯一地標(biāo)識(shí)關(guān)系的元組;是關(guān)系模式中一組最重要的屬性。系模式中一組最重要的屬性。n主碼又和外碼主碼又和外碼一起提供了一個(gè)表示關(guān)系間一起提供

18、了一個(gè)表示關(guān)系間聯(lián)系的手段。聯(lián)系的手段。1.24數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n例:例: R(TnameR(Tname, , AddrAddr, C#, , C#, CnameCname) )F=F=TnameTnameAddrAddr, , C#CnameC#Cname, , C#TnameC#Tname C#C#Tname,Addr,C#,CnameTname,Addr,C#,Cname 所以所以C C是候選碼,若是候選碼,若C#TnameC#Tname不成立,則不成立,則候選碼為候選碼為 TnameTname, C#, C#1.25數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n范式:范式:滿足特定要求的模

19、式滿足特定要求的模式不同級(jí)別的范式要求各不相同不同級(jí)別的范式要求各不相同范式可以作為衡量一個(gè)關(guān)系模式好壞的標(biāo)準(zhǔn)范式可以作為衡量一個(gè)關(guān)系模式好壞的標(biāo)準(zhǔn)若關(guān)系模式若關(guān)系模式R R滿足范式滿足范式xNF,記,記R xNFn規(guī)范化:規(guī)范化:將低一級(jí)范式的關(guān)系模式通過模式分解將低一級(jí)范式的關(guān)系模式通過模式分解轉(zhuǎn)換為高一級(jí)范式的關(guān)系模式集合的過程轉(zhuǎn)換為高一級(jí)范式的關(guān)系模式集合的過程n5NF 5NF 4NF 4NF BCNF BCNF 3NF 3NF 2NF 2NF 1NF 1NF19711972,E.F. Codd1974,Boyce and Codd19761979,F(xiàn)agin1.26數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)

20、庫系統(tǒng)原理n定義定義11.6 11.6 如果一個(gè)關(guān)系模式如果一個(gè)關(guān)系模式R R的所有屬性都的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),(即對(duì)于關(guān)系模式是不可分的基本數(shù)據(jù)項(xiàng),(即對(duì)于關(guān)系模式R R的任一實(shí)例,其元組的每一個(gè)屬性值都只含有的任一實(shí)例,其元組的每一個(gè)屬性值都只含有一個(gè)值),則一個(gè)值),則 R R 1NF1NF。1NF1NF是關(guān)系的基本要求是關(guān)系的基本要求, ,否則不能稱其為關(guān)系否則不能稱其為關(guān)系數(shù)據(jù)庫。數(shù)據(jù)庫。1.27數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n滿足第一范式的關(guān)系模式并不一定是滿足第一范式的關(guān)系模式并不一定是一個(gè)好的關(guān)系模式。一個(gè)好的關(guān)系模式。 如:如:nSLC(Sno,Sdept,Sloc

21、,Cno,GradeSLC(Sno,Sdept,Sloc,Cno,Grade) )n碼為碼為( (Sno,CnoSno,Cno) )1.28數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n函數(shù)依賴包括:函數(shù)依賴包括: ( (Sno,CnoSno,Cno) ) Grade Grade SnoSno SdeptSdept ( (Sno,CnoSno,Cno) ) SdeptSdept SnoSno SlocSloc ( (Sno,CnoSno,Cno) ) SlocSloc SdeptSdept SlocSloc( (因?yàn)槊總€(gè)系只住在一個(gè)地方)因?yàn)槊總€(gè)系只住在一個(gè)地方)fpp1.29數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n

22、SnoCnoGradeSdeptSlocSLC關(guān)系模式上的一組函數(shù)依賴關(guān)系模式上的一組函數(shù)依賴1.30數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n對(duì)前例分析:對(duì)前例分析:非主屬性非主屬性 SdeptSdept 和和 SlocSloc 部分部分函數(shù)依賴于碼函數(shù)依賴于碼(Sno,CnoSno,Cno) )。SLCSLC關(guān)系存在數(shù)據(jù)冗余、更新異常、插入異常、關(guān)系存在數(shù)據(jù)冗余、更新異常、插入異常、刪除異常刪除異常4 4個(gè)問題。個(gè)問題。因此因此SLCSLC不是一個(gè)好的關(guān)系模式。不是一個(gè)好的關(guān)系模式。應(yīng)消除部分函數(shù)依賴,可用投影分解法分解為應(yīng)消除部分函數(shù)依賴,可用投影分解法分解為兩個(gè)關(guān)系模式兩個(gè)關(guān)系模式: :1.31數(shù)

23、據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nSC(SC(Sno,CnoSno,Cno,Grade,Grade) )nSL(SL(SnoSno,Sdept,Sloc,Sdept,Sloc) )n依賴關(guān)系為依賴關(guān)系為: : ( (Sno,CnoSno,Cno) Grade) Grade SnoSno SdeptSdept SnoSno SlocSlocn顯然顯然, ,分解后非主屬性都分解后非主屬性都完全完全函數(shù)依賴于碼了,函數(shù)依賴于碼了,使以上使以上4 4個(gè)問題得到一定解決,個(gè)問題得到一定解決,SCSC,SLSL屬于屬于2NF2NF。1.32數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義定義11.711.7: 若關(guān)系模式若關(guān)

24、系模式R R 1NF1NF,且每一非主且每一非主屬性完全函數(shù)依賴于屬性完全函數(shù)依賴于R R的碼,則的碼,則R R 2NF2NF。n2NF2NF含義:含義:R(A,B,C,D,E), A,BR(A,B,C,D,E), A,B為主碼,則有為主碼,則有A,BA,BCC, A,BA,BDD, A,BA,BEE但但C C、D D、E E都不局部函數(shù)依賴于都不局部函數(shù)依賴于A,BA,B即即A ACC、 B BCC、 A ADD、 B BDD、 A AEE、 B BEE中任何一個(gè)均不成立中任何一個(gè)均不成立 1.33數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n供應(yīng)關(guān)系供應(yīng)關(guān)系 R(SR(S, P, P, city, sta

25、tus, Price, QTY), city, status, Price, QTY)F=S#F=S#city, city, S#S#status ,status , P#Price, P#Price, city status,S#,P# QTY city status,S#,P# QTY 所以主碼為所以主碼為SS,P,P 但但citycity和和PricePrice都局部函數(shù)依賴于主碼都局部函數(shù)依賴于主碼所以所以R R 2NF 2NF1.34數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nR( R( S S, P, P, city, status, Price, , city, status, Price,

26、QTY)QTY)n插入異常:插入異常:沒有供應(yīng)零件的供應(yīng)商無法插入沒有供應(yīng)零件的供應(yīng)商無法插入n刪除異常:刪除異常:刪除供應(yīng)商的供貨信息同時(shí)刪除刪除供應(yīng)商的供貨信息同時(shí)刪除了供應(yīng)商的其它信息了供應(yīng)商的其它信息n更新異常:更新異常:供應(yīng)商的供應(yīng)商的citycity修改時(shí)必須修改多修改時(shí)必須修改多個(gè)元組個(gè)元組n數(shù)據(jù)冗余:數(shù)據(jù)冗余:同一供應(yīng)商的同一供應(yīng)商的citycity被重復(fù)存儲(chǔ)被重復(fù)存儲(chǔ)1.35數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nR( R( S S, P, P, City, Status, Price, QTY), City, Status, Price, QTY)SPPriceCityQTYStat

27、usR1( S#,City,Status)R2( P#,Price)R3( S#,P#,QTY)分解是否分解是否正確?正確?無損聯(lián)接無損聯(lián)接和保持函和保持函數(shù)依賴數(shù)依賴1.36數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n前面前面2NF2NF關(guān)系模式關(guān)系模式SL(Sno,Sdept,SlocSL(Sno,Sdept,Sloc) )中有下列中有下列函數(shù)依賴:函數(shù)依賴: SnoSno SdeptSdept SdeptSdept SlocSloc SnoSno SlocSlocnSlocSloc傳遞傳遞函數(shù)依賴于函數(shù)依賴于SnoSno, ,即即SLSL中存在非主屬性中存在非主屬性對(duì)碼的傳遞函數(shù)依賴。對(duì)碼的傳遞函數(shù)依

28、賴。SLSL關(guān)系仍然不同測(cè)定存在關(guān)系仍然不同測(cè)定存在上面上面4 4個(gè)問題,所以個(gè)問題,所以SLSL還不是一個(gè)好關(guān)系模式還不是一個(gè)好關(guān)系模式。1.37數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nSCSC、SLSL上的函數(shù)依賴上的函數(shù)依賴SnoCnoGradeSLSnoSdeptSlocSC1.38數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義定義11.8 11.8 :關(guān)系模式關(guān)系模式R(U,F)R(U,F)中,當(dāng)且僅中,當(dāng)且僅當(dāng)當(dāng)R R屬于屬于1NF1NF,且,且R R的每一個(gè)非主屬性都不的每一個(gè)非主屬性都不傳遞依賴于主碼時(shí),傳遞依賴于主碼時(shí),R R 3NF3NF。傳遞依賴:傳遞依賴:若若X XY Y,YAYA,并且,并

29、且YXYX,A A不是不是Y Y的子集,則稱的子集,則稱A A傳遞依賴于傳遞依賴于X X。1.39數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n為了消除為了消除SlocSloc傳遞傳遞函數(shù)依賴于函數(shù)依賴于SnoSno問題問題, ,可將可將SLSL進(jìn)一步分解為:進(jìn)一步分解為: SD(SD(SnoSno,Sdept,Sdept) ) DL(DL(SdeptSdept,Sloc,Sloc) )n函數(shù)依賴為:函數(shù)依賴為: SnoSno SdeptSdept SdeptSdept SlocSlocn顯然顯然, ,分解后沒有非主屬性對(duì)碼的分解后沒有非主屬性對(duì)碼的部分和傳遞部分和傳遞依依賴了,使以上賴了,使以上4 4個(gè)問題

30、得到基本解決,個(gè)問題得到基本解決,SCSC,SLSL屬屬于于3NF3NF。1.40數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n將一個(gè)將一個(gè)2NF2NF關(guān)系分解為多個(gè)關(guān)系分解為多個(gè)3NF3NF的關(guān)系后的關(guān)系后, ,并并不能完全消除關(guān)系模式中的各種異常情況和不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。數(shù)據(jù)冗余。n即即滿足滿足3NF3NF的關(guān)系模式不一定是一個(gè)好的關(guān)的關(guān)系模式不一定是一個(gè)好的關(guān)系模式。系模式。 n如,如,P134 P134 STJSTJ關(guān)系屬關(guān)系屬3NF3NF,但不是理想的關(guān),但不是理想的關(guān)系模式。系模式。1.41數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nR1(R1(S#S#,City,Status),C

31、ity,Status)n插入異常:插入異常:不能插入一個(gè)具有不能插入一個(gè)具有statusstatus但沒有供但沒有供應(yīng)商的應(yīng)商的citycity,例如,例如RomeRome的的statusstatus為為5050,但除非,但除非有一個(gè)供應(yīng)商住在有一個(gè)供應(yīng)商住在Rome,Rome,否則無法插入否則無法插入n刪除異常刪除異常:刪除供應(yīng)商時(shí)會(huì)同時(shí)刪除與該城市相:刪除供應(yīng)商時(shí)會(huì)同時(shí)刪除與該城市相關(guān)的關(guān)的statusstatus信息信息n更新異常:更新異常:一個(gè)城市中會(huì)有多個(gè)供應(yīng)商,因此一個(gè)城市中會(huì)有多個(gè)供應(yīng)商,因此statusstatus更新時(shí)要更新多個(gè)元組更新時(shí)要更新多個(gè)元組n數(shù)據(jù)冗余數(shù)據(jù)冗余:同一

32、城市的:同一城市的statusstatus冗余存儲(chǔ)冗余存儲(chǔ)1.42數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nR1(R1(S#S#,City,Status),City,Status)n去掉傳遞依賴去掉傳遞依賴SCityStatusR4( City,Status)R5( S#,City)1.43數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n1 1NFNF:任一關(guān)系的每個(gè)屬性值不可分任一關(guān)系的每個(gè)屬性值不可分n2 2NFNF:屬于屬于1 1NFNF,且非主屬性完全函數(shù)依賴于碼且非主屬性完全函數(shù)依賴于碼n3 3NFNF:屬于屬于1 1NFNF,且不存在非主屬性到碼的傳遞且不存在非主屬性到碼的傳遞 依賴依賴1.44數(shù)據(jù)庫系統(tǒng)原理數(shù)

33、據(jù)庫系統(tǒng)原理nBCNF(Boyce BCNF(Boyce CoddCodd Normal Form) Normal Form)是由是由BoyceBoyce和和CoddCodd提出的,比提出的,比3NF3NF更進(jìn)了一步。更進(jìn)了一步。通常認(rèn)為通常認(rèn)為BCNFBCNF是修正的第三范式。是修正的第三范式。n2 2NFNF和和3 3NFNF的定義都假設(shè)了的定義都假設(shè)了R R只有一個(gè)候選碼,但一只有一個(gè)候選碼,但一般情況下般情況下R R可能有多個(gè)候選碼,并且不同的候選碼可能有多個(gè)候選碼,并且不同的候選碼之間還可能相互重疊。之間還可能相互重疊。n3 3NFNF不能處理不能處理R R的一般情況(多個(gè)候選碼)。

34、的一般情況(多個(gè)候選碼)。nBCNFBCNF擴(kuò)充了擴(kuò)充了3 3NFNF,可以處理可以處理R R有多個(gè)候選碼的情形有多個(gè)候選碼的情形。nR R只有一個(gè)候選碼時(shí)只有一個(gè)候選碼時(shí)BCNFBCNF等價(jià)等價(jià)3 3NFNF。1.45數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n假設(shè)供應(yīng)商的名字是唯一的假設(shè)供應(yīng)商的名字是唯一的n供應(yīng)關(guān)系供應(yīng)關(guān)系R(S#,SNAME,P#,QTY)R(S#,SNAME,P#,QTY)存在兩個(gè)候選碼存在兩個(gè)候選碼 S#,P#S#,P#和和 SNAME, P#SNAME, P#R R屬于屬于3 3NFNF,WHYWHY?S#S#SNAMESNAMEP#P#QTYQTYs1s1IntelIntel

35、p1p1300300s1s1IntelIntelp2p2200200s1s1IntelIntelP3P3400400s2s2AcerAcerp1p1200200SNAME, P# QTY, S#, P# QTY,S# SNAME, SNAME S#1.46數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n數(shù)據(jù)冗余:數(shù)據(jù)冗余:s1s1的名字的名字IntelIntel重復(fù)存儲(chǔ)重復(fù)存儲(chǔ)n更新異常:更新異常:修改修改s1s1的名字時(shí)必須修改多個(gè)元組的名字時(shí)必須修改多個(gè)元組n刪除異常:刪除異常:若若s2s2現(xiàn)在不提供任何零件,則須刪除現(xiàn)在不提供任何零件,則須刪除s2s2的元組,但同時(shí)刪除了的元組,但同時(shí)刪除了s2s2的名字

36、的名字n插入異常:插入異常:沒有提供零件的供應(yīng)商無法插入沒有提供零件的供應(yīng)商無法插入S#S#SNAMESNAMEP#P#QTYQTYs1s1IntelIntelp1p1300300s1s1IntelIntelp2p2200200s1s1IntelIntelP3P3400400s2s2AcerAcerp1p12002001.47數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理SNamePS#QTYSPSnameQTYR1(S#,SNAME)R2(S#,P#,QTY)R1(SName,S#)R2(SName,P#,QTY)1.48數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n定義定義11.911.9:設(shè)關(guān)系模式設(shè)關(guān)系模式R R 1N

37、F1NF,若若R R中的中的任一函數(shù)依賴任一函數(shù)依賴X XY Y,若,若Y Y X X時(shí),時(shí),X X必含有必含有候選碼,則候選碼,則R R BCNFBCNF。n換句話說,換句話說,在關(guān)系模式在關(guān)系模式R R中,如果每一個(gè)中,如果每一個(gè)決定屬性集都包含候選碼,則決定屬性集都包含候選碼,則R R BCNFBCNF。1.49數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n(即:如果關(guān)系模式(即:如果關(guān)系模式R R的所有不平凡的、完的所有不平凡的、完全的函數(shù)依賴的決定因素(左邊的屬性集)全的函數(shù)依賴的決定因素(左邊的屬性集)都是候選碼,則都是候選碼,則R R BCNFBCNF)R R的非主屬性完全函數(shù)依賴于候選碼的非主

38、屬性完全函數(shù)依賴于候選碼所有的主屬性對(duì)每一個(gè)不包含它的碼,也所有的主屬性對(duì)每一個(gè)不包含它的碼,也是完全函數(shù)依賴是完全函數(shù)依賴沒有任何屬性完全函數(shù)依賴于沒有任何屬性完全函數(shù)依賴于非非主屬性集主屬性集1.50數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nR(S#,SNAME,STATUS,CITY)R(S#,SNAME,STATUS,CITY)n設(shè)設(shè)SnameSname唯一唯一nBCNFBCNF模式的函數(shù)依賴圖中,箭頭都是從候選碼中模式的函數(shù)依賴圖中,箭頭都是從候選碼中引出,所有不平凡引出,所有不平凡FDFD的左邊都是候選碼的左邊都是候選碼SSnameStatuscityS# Sname, S#Status,S#

39、 city,Sname S#,Sname city,SnameStatus, 1.51數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nR(S,J,T)-R(S,J,T)-學(xué)號(hào),課程號(hào),教師名學(xué)號(hào),課程號(hào),教師名n每一教師只教一門課。每門課由若干教師教,某一學(xué)生每一教師只教一門課。每門課由若干教師教,某一學(xué)生選定某門課,就確定了一個(gè)固定的教師。某個(gè)學(xué)生選修選定某門課,就確定了一個(gè)固定的教師。某個(gè)學(xué)生選修某個(gè)教師的課就確定了所選課的名稱某個(gè)教師的課就確定了所選課的名稱 : ( (S S,J)TJ)T,(S(S,T)JT)J,TJTJnR R屬于屬于3 3NFNFnR R不屬于不屬于BCNFBCNF1.52數(shù)據(jù)庫系統(tǒng)

40、原理數(shù)據(jù)庫系統(tǒng)原理n數(shù)據(jù)依賴數(shù)據(jù)依賴SJTSTJSTJ1.53數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理解決方法:將解決方法:將STJSTJ分解為二個(gè)關(guān)系模式:分解為二個(gè)關(guān)系模式: SJ(SJ(S S,J J) BCNF) BCNF, TJ( TJ(T T,J) BCNFJ) BCNF 沒有沒有任何屬性任何屬性對(duì)碼的部分函數(shù)依賴和傳遞函數(shù)依賴對(duì)碼的部分函數(shù)依賴和傳遞函數(shù)依賴SJSTTJTJ1.54數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理例例: : 學(xué)校中某一門課程由多個(gè)教師講授,他們使學(xué)校中某一門課程由多個(gè)教師講授,他們使用相同的一套參考書。用相同的一套參考書。關(guān)系模式關(guān)系模式Teaching(C, T, B)Teac

41、hing(C, T, B) 課程課程C C、教師教師T T 和和 參考書參考書B B1.55數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理課課 程程 C教教 員員 T參參 考考 書書 B 物理物理 數(shù)學(xué)數(shù)學(xué) 計(jì)算數(shù)學(xué)計(jì)算數(shù)學(xué)李李 勇勇王王 軍軍 李李 勇勇張張 平平 張張 平平周周 峰峰 普通物理學(xué)普通物理學(xué)光學(xué)原理光學(xué)原理 物理習(xí)題集物理習(xí)題集 數(shù)學(xué)分析數(shù)學(xué)分析微分方程微分方程高等代數(shù)高等代數(shù) 數(shù)學(xué)分析數(shù)學(xué)分析 表表5.11.56數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理普通物理學(xué)普通物理學(xué)光學(xué)原理光學(xué)原理物理習(xí)題集物理習(xí)題集普通物理學(xué)普通物理學(xué)光學(xué)原理光學(xué)原理物理習(xí)題集物理習(xí)題集數(shù)學(xué)分析數(shù)學(xué)分析微分方程微分方程高等代數(shù)高

42、等代數(shù)數(shù)學(xué)分析數(shù)學(xué)分析微分方程微分方程高等代數(shù)高等代數(shù)李李 勇勇李李 勇勇李李 勇勇王王 軍軍王王 軍軍王王 軍軍李李 勇勇李李 勇勇李李 勇勇張張 平平張張 平平張張 平平 物物 理理物物 理理物物 理理物物 理理物物 理理物物 理理數(shù)數(shù) 學(xué)學(xué)數(shù)數(shù) 學(xué)學(xué)數(shù)數(shù) 學(xué)學(xué)數(shù)數(shù) 學(xué)學(xué)數(shù)數(shù) 學(xué)學(xué)數(shù)數(shù) 學(xué)學(xué) 參考書參考書B B教員教員T T課程課程C C1.57數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理nTeachingBCNF:TeachingBCNF:nTeachTeach具有唯一候選碼具有唯一候選碼( (C C,T T,B)B),即全碼即全碼nTeachingTeaching模式中存在的問題:模式中存在的問題:

43、(1)(1)數(shù)據(jù)冗余度大:數(shù)據(jù)冗余度大: 有多少名任課教師,參考書就要存儲(chǔ)多少次有多少名任課教師,參考書就要存儲(chǔ)多少次 1.58數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理 (2)(2)插入操作復(fù)雜:插入操作復(fù)雜: 當(dāng)某一課程增加一名任課教師時(shí),該課程當(dāng)某一課程增加一名任課教師時(shí),該課程有多少本參照書,就必須插入多少個(gè)元組。有多少本參照書,就必須插入多少個(gè)元組。例如:例如:物理課增加一名教師劉關(guān),需要插入兩物理課增加一名教師劉關(guān),需要插入兩個(gè)元組:個(gè)元組: (物理,劉關(guān),普通物理學(xué))(物理,劉關(guān),普通物理學(xué)) (物理,劉關(guān),光學(xué)原理)(物理,劉關(guān),光學(xué)原理)1.59數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理(3) (3) 刪除操作復(fù)雜:刪除操作復(fù)雜: 某一門課要去掉一本參考書,該課程有多少名教師,某一門課要去掉一本參考書,該課程有多少名教師,就必須刪除多少個(gè)元組就必須刪除多少個(gè)元組(4) (4) 修改操作復(fù)雜:修改操作復(fù)雜: 某一門課要修改一本參考書,該課程有多少名教師,某一門課要修改一本參考書,該課程有多少名教師,就必須修改多少個(gè)元組就必須修改多少個(gè)元組 n產(chǎn)生原因產(chǎn)生原因存在多值依賴存在多值依賴1.60數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n

溫馨提示

  • 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)論