數(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ù)免費閱讀

下載本文檔

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

文檔簡介

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

2、地)一個教師可教多門課程一個教師可教多門課程一門課程只有一個任課教師一門課程只有一個任課教師因此因此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ù)存儲了儲了2 2次。次。TnameTnameAddrAddrC#C

3、#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2N2T1T1A1A1C3C3N3N3T2T2A2A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.5數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n如果如果T1T1的地址變了,則需要改變的地址變了,則需要改變3 3個元組的地址;個元組的地址;若有一個未更改,就會出現(xiàn)數(shù)據(jù)不一致。但若有一個未更改,就會出現(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ù)據(jù)庫中體完整性,所以這名教師將無法插入到數(shù)據(jù)庫中。TnameTnameAddrAddrC#C#CnameCnameT1T1A1A1C1C1N1N1T1T1A1A1C2C2N2N2T1T1A1A1C3C3N3N3T2T2A2

5、A2C4C4N4N4T2T2A2A2C5C5N5N5T3T3A3A3C6C6N6N61.7數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n如果教師如果教師T3T3現(xiàn)在不帶課了,則需將現(xiàn)在不帶課了,則需將T3T3的元組刪去,的元組刪去,但同時也把他的姓名和地址信息刪掉了。但同時也把他的姓名和地址信息刪掉了。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怎么分解才能達到要求?怎么分解才能達到要求?n標準是什么?標準是什么?n如何實現(xiàn)?如何實現(xiàn)?1.11數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n關(guān)系模式是對關(guān)系的描述,它由五部分組成:關(guān)系模式是對關(guān)系的描述,它由五部分組成:R R(U U,D D,DomDom,F(xiàn) F)R R為關(guān)系模式名為關(guān)系模式名; ;U U是一個屬性集是一個屬性集; ;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)或簡記為或簡記為R(U)R(U),U U是是R R的屬性集合的屬性集合,X,X和和Y Y是是U U的子集。的子集。r r是是R R的任意一個實的任意一個實例(關(guān)系),若例(關(guān)系),若r r的任意兩個元組的任意兩個元組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的的某個或某些某個或某些關(guān)系實關(guān)系實例滿足的約束條件,例滿足的約束條件,而是而是指指R R的的所有所有關(guān)系實例均關(guān)系實例均要滿足的約束條件。要滿足的約束條件。2.2.函數(shù)依賴是函數(shù)依賴是語義范疇語義范疇的概念。只能根據(jù)數(shù)據(jù)的的概念。只能根據(jù)數(shù)據(jù)的語義來確定函數(shù)依賴。語義來確定函數(shù)依賴。 例如例如“姓名姓名年齡年齡”這個函數(shù)依賴只有在不這個函數(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,并且對于并且對于X X的的任何一個真子集任何一個真子集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ù)依賴實際上是指一個關(guān)系模式中一個屬性實際上是指一個關(guān)系模式中一個屬性集和另一個屬性集間的多對一關(guān)系集和另一個屬性集間的多對一關(guān)系 例如選課關(guān)系例如選課關(guān)系

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

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

16、 )若一門課只能有一個教師,則有若一門課只能有一個教師,則有 C# C# TnameTname 若一門課可有多個教師任教,則有若一門課可有多個教師任教,則有 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)。若候選碼多于一個,則選定其中一個為若候選碼多于一個,則選定其中一

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

18、了一個表示關(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、式滿足特定要求的模式不同級別的范式要求各不相同不同級別的范式要求各不相同范式可以作為衡量一個關(guān)系模式好壞的標準范式可以作為衡量一個關(guān)系模式好壞的標準若關(guān)系模式若關(guān)系模式R R滿足范式滿足范式xNF,記,記R xNFn規(guī)范化:規(guī)范化:將低一級范式的關(guān)系模式通過模式分解將低一級范式的關(guān)系模式通過模式分解轉(zhuǎn)換為高一級范式的關(guān)系模式集合的過程轉(zhuǎn)換為高一級范式的關(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 如果一個關(guān)系模式如果一個關(guān)系模式R R的所有屬性都的所有屬性都是不可分的基本數(shù)據(jù)項,(即對于關(guān)系模式是不可分的基本數(shù)據(jù)項,(即對于關(guān)系模式R R的任一實例,其元組的每一個屬性值都只含有的任一實例,其元組的每一個屬性值都只含有一個值),則一個值),則 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)系模式并不一定是一個好的關(guān)系模式。一個好的關(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( (因為每個系只住在一個地方)因為每個系只住在一個地方)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對前例分析:對前例分析:非主屬性非主屬性 SdeptSdept 和和 SlocSloc 部分部分函數(shù)依賴于碼函數(shù)依賴于碼(Sno,CnoSno,Cno) )。SLCSLC關(guān)系存在數(shù)據(jù)冗余、更新異常、插入異常、關(guān)系存在數(shù)據(jù)冗余、更新異常、插入異常、刪除異常刪除異常4 4個問題。個問題。因此因此SLCSLC不是一個好的關(guān)系模式。不是一個好的關(guān)系模式。應(yīng)消除部分函數(shù)依賴,可用投影分解法分解為應(yīng)消除部分函數(shù)依賴,可用投影分解法分解為兩個關(guān)系模式兩個關(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個問題得到一定解決,個問題得到一定解決,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中任何一個均不成立中任何一個均不成立 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)商的供貨信息同時刪除刪除供應(yīng)商的供貨信息同時刪除了供應(yīng)商的其它信息了供應(yīng)商的其它信息n更新異常:更新異常:供應(yīng)商的供應(yīng)商的citycity修改時必須修改多修改時必須修改多個元組個元組n數(shù)據(jù)冗余:數(shù)據(jù)冗余:同一供應(yīng)商的同一供應(yīng)商的citycity被重復(fù)存儲被重復(fù)存儲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中存在非主屬性中存在非主屬性對碼的傳遞函數(shù)依賴。對碼的傳遞函數(shù)依

28、賴。SLSL關(guān)系仍然不同測定存在關(guān)系仍然不同測定存在上面上面4 4個問題,所以個問題,所以SLSL還不是一個好關(guān)系模式還不是一個好關(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的每一個非主屬性都不的每一個非主屬性都不傳遞依賴于主碼時,傳遞依賴于主碼時,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進一步分解為:進一步分解為: SD(SD(SnoSno,Sdept,Sdept) ) DL(DL(SdeptSdept,Sloc,Sloc) )n函數(shù)依賴為:函數(shù)依賴為: SnoSno SdeptSdept SdeptSdept SlocSlocn顯然顯然, ,分解后沒有非主屬性對碼的分解后沒有非主屬性對碼的部分和傳遞部分和傳遞依依賴了,使以上賴了,使以上4 4個問題

30、得到基本解決,個問題得到基本解決,SCSC,SLSL屬屬于于3NF3NF。1.40數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n將一個將一個2NF2NF關(guān)系分解為多個關(guān)系分解為多個3NF3NF的關(guān)系后的關(guān)系后, ,并并不能完全消除關(guān)系模式中的各種異常情況和不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。數(shù)據(jù)冗余。n即即滿足滿足3NF3NF的關(guān)系模式不一定是一個好的關(guān)的關(guān)系模式不一定是一個好的關(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插入異常:插入異常:不能插入一個具有不能插入一個具有statusstatus但沒有供但沒有供應(yīng)商的應(yīng)商的citycity,例如,例如RomeRome的的statusstatus為為5050,但除非,但除非有一個供應(yīng)商住在有一個供應(yīng)商住在Rome,Rome,否則無法插入否則無法插入n刪除異常刪除異常:刪除供應(yīng)商時會同時刪除與該城市相:刪除供應(yīng)商時會同時刪除與該城市相關(guān)的關(guān)的statusstatus信息信息n更新異常:更新異常:一個城市中會有多個供應(yīng)商,因此一個城市中會有多個供應(yīng)商,因此statusstatus更新時要更新多個元組更新時要更新多個元組n數(shù)據(jù)冗余數(shù)據(jù)冗余:同一

32、城市的:同一城市的statusstatus冗余存儲冗余存儲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)系的每個屬性值不可分任一關(guān)系的每個屬性值不可分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更進了一步。更進了一步。通常認為通常認為BCNFBCNF是修正的第三范式。是修正的第三范式。n2 2NFNF和和3 3NFNF的定義都假設(shè)了的定義都假設(shè)了R R只有一個候選碼,但一只有一個候選碼,但一般情況下般情況下R R可能有多個候選碼,并且不同的候選碼可能有多個候選碼,并且不同的候選碼之間還可能相互重疊。之間還可能相互重疊。n3 3NFNF不能處理不能處理R R的一般情況(多個候選碼)。

34、的一般情況(多個候選碼)。nBCNFBCNF擴充了擴充了3 3NFNF,可以處理可以處理R R有多個候選碼的情形有多個候選碼的情形。nR R只有一個候選碼時只有一個候選碼時BCNFBCNF等價等價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)存在兩個候選碼存在兩個候選碼 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ù)存儲重復(fù)存儲n更新異常:更新異常:修改修改s1s1的名字時必須修改多個元組的名字時必須修改多個元組n刪除異常:刪除異常:若若s2s2現(xiàn)在不提供任何零件,則須刪除現(xiàn)在不提供任何零件,則須刪除s2s2的元組,但同時刪除了的元組,但同時刪除了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時,時,X X必含有必含有候選碼,則候選碼,則R R BCNFBCNF。n換句話說,換句話說,在關(guān)系模式在關(guān)系模式R R中,如果每一個中,如果每一個決定屬性集都包含候選碼,則決定屬性集都包含候選碼,則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ù)依賴于候選碼所有的主屬性對每一個不包含它的碼,也所有的主屬性對每一個不包含它的碼,也是完全函數(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é)號,課程號,教師名學(xué)號,課程號,教師名n每一教師只教一門課。每門課由若干教師教,某一學(xué)生每一教師只教一門課。每門課由若干教師教,某一學(xué)生選定某門課,就確定了一個固定的教師。某個學(xué)生選修選定某門課,就確定了一個固定的教師。某個學(xué)生選修某個教師的課就確定了所選課的名稱某個教師的課就確定了所選課的名稱 : ( (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分解為二個關(guān)系模式:分解為二個關(guān)系模式: SJ(SJ(S S,J J) BCNF) BCNF, TJ( TJ(T T,J) BCNFJ) BCNF 沒有沒有任何屬性任何屬性對碼的部分函數(shù)依賴和傳遞函數(shù)依賴對碼的部分函數(shù)依賴和傳遞函數(shù)依賴SJSTTJTJ1.54數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理例例: : 學(xué)校中某一門課程由多個教師講授,他們使學(xué)校中某一門課程由多個教師講授,他們使用相同的一套參考書。用相同的一套參考書。關(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é) 計算數(shù)學(xué)計算數(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ù)冗余度大: 有多少名任課教師,參考書就要存儲多少次有多少名任課教師,參考書就要存儲多少次 1.58數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理 (2)(2)插入操作復(fù)雜:插入操作復(fù)雜: 當(dāng)某一課程增加一名任課教師時,該課程當(dāng)某一課程增加一名任課教師時,該課程有多少本參照書,就必須插入多少個元組。有多少本參照書,就必須插入多少個元組。例如:例如:物理課增加一名教師劉關(guān),需要插入兩物理課增加一名教師劉關(guān),需要插入兩個元組:個元組: (物理,劉關(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ù)雜: 某一門課要去掉一本參考書,該課程有多少名教師,某一門課要去掉一本參考書,該課程有多少名教師,就必須刪除多少個元組就必須刪除多少個元組(4) (4) 修改操作復(fù)雜:修改操作復(fù)雜: 某一門課要修改一本參考書,該課程有多少名教師,某一門課要修改一本參考書,該課程有多少名教師,就必須修改多少個元組就必須修改多少個元組 n產(chǎn)生原因產(chǎn)生原因存在多值依賴存在多值依賴1.60數(shù)據(jù)庫系統(tǒng)原理數(shù)據(jù)庫系統(tǒng)原理n

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論