




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
AnIntroductiontoDatabaseSystem數據庫系統概論AnIntroductiontoDatabaseSystem第六章關系數據理論6.1函數依賴用形式化方法研究一個關系中各屬性之間的語義關系。函數依賴的定義:
若關系R的任意兩個元組在屬性A1、A2、…、An上一致(即有相同分量值),則這兩個元組在屬性B上也一致,則稱屬性A1A2…An函數決定B,或稱屬性B函數依賴于A1A2…An。記為:A1A2…An→BAnIntroductiontoDatabaseSystemtuAB若t和u在A上一致,則在B上也一致函數依賴的定義關系:學生(學號,姓名,性別)中為何學號→姓名成立?在一個關系中,不存在(鍵值)完全相同的元組。如果不存在兩個元組具有相同學號,即每個元組各表示一個學生,則學號→姓名成立。關系:學生(學號,姓名,課號,成績)中學號→姓名?如果兩個元組具有相同學號,則兩個元組指同一個學生,故具有相同姓名。但是:學號→成績?如果兩個元組學號相同,但課程號不同,其成績亦可能不同。只有在學號,課號都確定的情況下,成績才被確定,因此:學號,課號→成績函數依賴的定義(續)AnIntroductiontoDatabaseSystem函數依賴的定義(續)[例1]建立一個描述學校教務的數據庫: 學生的學號(Sno)、所在系(Sdept) 系主任姓名(Mname)、課程名(Cname) 成績(Grade)單一的關系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}AnIntroductiontoDatabaseSystem函數依賴的定義(續)
屬性組U上的一組函數依賴F:
F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}
SnoCnameSdeptMnameGradeExampleMovies(title,year,length,filmType,studioname,starName)ReasonableFD’stoassert:titleyear→lengthtitleyear→filmTypetitleyear→studioNameBut titleyear→starNametitleyearlengthfilmtypestudioNamestarNameStarWarsStarWarsStarWarsMightyDucksWayne’sWorldWayne’sWorld1977197719771991199219921241241241049595colorcolorcolorcolorcolorcolorFoxFoxFoxDisneyParamountParamountCarrieFisherMarkHamillHarrisonFordEmilioEstevezDanaCarveyMikeMeyers6.2函數依賴規則什么是函數依賴規則?為何需要它?在一個給定關系上,已知一組函數依賴作為前提條件。根據一組函數依賴規則,就可推斷另一些函數依賴。這種計算和驗證可有效減少冗余,得到良好的關系設計。函數依賴規則重要的函數依賴規則:分解/合并(Splitting/combining)規則平凡依賴(TrivialDependance)規則
傳遞(Transitivy)規則
Armstrong公理
分解/合并規則分解/合并規則(Splitting/CombiningRule):A1A2…An→B1B2…Bm等價于
A1A2…An→B1A1A2…An→B2…A1A2…An
→Bm注意:函數依賴的左面不能分解合并。分解/合并規則(續)
例如:關系Movies中,
titleyear→lengthfilmTypestudioName
等價于:
titleyear→length titleyear→fileType titleyear→studioName
但是,學號課號→成績不能分解為: 學號→成績 課號→成績AnIntroductiontoDatabaseSystem平凡函數依賴與非平凡函數依賴在關系模式R(U)中,對于U的子集X和Y,如果X→Y,但YX,則稱X→Y是非平凡的函數依賴若X→Y,但YX,則稱X→Y是平凡的函數依賴例:在關系SC(Sno,Cno,Grade)中,非平凡函數依賴:(Sno,Cno)→
Grade
平凡函數依賴:(Sno,Cno)→
Sno(Sno,Cno)→CnoAnIntroductiontoDatabaseSystem平凡函數依賴與非平凡函數依賴(續)若X→Y,則X稱為這個函數依賴的決定屬性組,也稱為決定因素(Determinant)。若X→Y,Y→X,則記作X←→Y。若Y不函數依賴于X,則記作X→Y。AnIntroductiontoDatabaseSystem完全函數依賴與部分函數依賴定義
在R(U)中,如果X→Y,并且對于X的任何一個真子集X’,都有X’Y,則稱Y對X完全函數依賴,記作
XFY。若X→Y,但Y不完全函數依賴于X,則稱Y對X部分函數依賴,記作XPY。
AnIntroductiontoDatabaseSystem完全函數依賴與部分函數依賴(續)[例1]中(Sno,Cno)→Grade是完全函數依賴,
(Sno,Cno)→Sdept是部分函數依賴因為Sno→Sdept成立,且Sno是(Sno,Cno)的真子集
FPAnIntroductiontoDatabaseSystem傳遞函數依賴定義6.3
在R(U)中,如果X→Y,(YX),Y→XY→Z,則稱Z對X傳遞函數依賴。記為:X→Z
注:如果Y→X,即X←→Y,則Z直接依賴于X。例:在關系Std(Sno,Sdept,Mname)中,有:
Sno→Sdept,Sdept→MnameMname傳遞函數依賴于Sno傳遞AnIntroductiontoDatabaseSystem碼定義:
設K為R<U,F>中的屬性或屬性組合。若K
U,則K稱為R的侯選碼(CandidateKey)。若候選碼多于一個,則選定其中的一個做為主碼(PrimaryKey)。FAnIntroductiontoDatabaseSystem碼(續)主屬性與非主屬性包含在任何一個候選碼中的屬性,稱為主屬性(Primeattribute)不包含在任何碼中的屬性稱為非主屬性(Nonprimeattribute)或非碼屬性(Non-keyattribute)全碼整個屬性組是碼,稱為全碼(All-key)AnIntroductiontoDatabaseSystem碼(續)[例2]
關系模式S(Sno,Sdept,Sage),單個屬性Sno是碼,
SC(Sno,Cno,Grade)中,(Sno,Cno)是碼[例3]
關系模式R(P,W,A)
P:演奏者W:作品A:聽眾一個演奏者可以演奏多個作品某一作品可被多個演奏者演奏聽眾可以欣賞不同演奏者的不同作品碼為(P,W,A),即All-KeyAnIntroductiontoDatabaseSystem外部碼定義6.5
關系模式R中屬性或屬性組X并非R的碼,但X是另一個關系模式的碼,則稱X是R的外部碼(Foreignkey)也稱外碼如在SC(Sno,Cno,Grade)中,Sno不是碼,但Sno是關系模式S(Sno,Sdept,Sage)的碼,則Sno是關系模式SC的外部碼
主碼與外部碼一起提供了表示關系間聯系的手段計算屬性的閉包屬性閉包的概念設S是關系R上的函數依賴集,A={A1,A2,…,An}是R上的屬性集,則屬性集A可函數決定的最大屬性集合(一定存在這樣的集合)稱做A的閉包,記做:A+
。這個集合如何計算?這種計算有何用途?屬性的閉包:
設S是關系R上的函數依賴集,A={A1,A2,…,An}是R上的屬性集,屬性集A在函數依賴集S下的閉包(closure)是這樣一個屬性集B,對于關系R的所有實例,函數依賴:A1A2…An→B均成立,即A1A2…An→B“邏輯蘊含于”函數依賴集S。
屬性集{A1,A2,…,An}的閉包表示為{A1,A2,…,An}+。 顯然:{A1,A2,…,An}含于{A1,A2,…,An}+若A1A2…An→X,則X含于B計算屬性的閉包(續)計算屬性的閉包(續)計算屬性的閉包:
給定函數依賴集S,和屬性集A={A1,A2,…,An},如何計算A+?設屬性集X是A的閉包,將X初始化為{A1,A2,…,An},即為閉包的最小集合。遍歷S中的每個函數依賴,對于每個函數依賴式:B1B2…Bm→C。如果B1、B2、…、Bm都在X中,而C不在X中,則把C加入X中。重復第2步,直到遍歷完S中所有函數依賴,而沒有新屬性能加入到X中。最終屬性集X即為屬性集A在函數依賴集S下的閉包A+。
Y+newY+XAExampleR=(A,B,C,G,H,I)F={A
B
A
C
CG
H
CG
I
B
H}(AG)+1. result=AG2. result=ABCG (A
CandAB)3. result=ABCGH (CG
HandCGAGBC)4. result=ABCGHI (CG
IandCGAGBCH)IsAGacandidatekey?IsAGasuperkey?DoesAG
R?==Is(AG)+RIsanysubsetofAGasuperkey?DoesA
R?==Is(A)+RDoesG
R?==Is(G)+R6.2關系數據庫模式設計關系模式設計中出現冗余的原因:關系模式設計中可能出現各種冗余,即同一事實在多個元組中重復。造成冗余的原因通常是將同一個對象的單值和多值特征混合在同一個關系中。例如:學生關系學號
姓名家庭地址課號
成績
系號
系主任
S1S1S1S2S3S3S4S4
N1N1N1N2N3N3N4N4A1A1A1A2A3A3A4A4C1C2C3C2C1C3C1C2
AABBAABA
D1D1D1D1D2D2D2D2
M1M1M1M1M2M2M2M2
關系數據庫模式設計(續)“異常”指什么?
異常anomaly,即不符合規范的設計,導致操作數據庫時,出現影響數據一致性的現象。關系設計中可能出現哪些異常?冗余。同一信息在多個元組中不必要的重復。浪費空間,增加更新操作的復雜度,影響數據一致性。修改異常。修改某個元組的信息,而重復的信息可能未修改而破壞一致性。或插入數據時,某些有用信息暫時無法插入。刪除異常。刪除某個對象時,必須刪除多個元組而不是一個元組,操作不當有可能破壞數據一致性。或刪除元組時,同時刪除了其它有用信息。插入異常AnIntroductiontoDatabaseSystem解決方法結論:學生關系模式不是一個好的模式。“好”的模式:不會發生插入異常、刪除異常、更新異常,數據冗余應盡可能少原因:由存在于模式中的某些數據依賴引起的解決方法:通過分解關系模式來消除其中不合適的數據依賴關系分解關系分解:
給定一個關系R{A1,A2,…,An},將R分解為兩個關系S{B1,B2,…,Bm}和T{C1,C2,…,Ck},使得:{A1,A2,…,An}={B1,B2,…,Bm}∪{C1,C2,…,Ck}S中的元組是R的所有元組在{B1,B2,…,Bm}上的投影;
T中的元組是R的所有元組在{C1,C2,…,Ck}上的投影。
投影:
R中的一個元組在屬性B1,B2,…,Bm上的分量,構成S中的一個元組,且保持元組不重復。為何進行分解: 為了避免異常,用幾個關系代替原有的關系,且保持數據一致性。
關系分解(續)上例學生(學號,姓名,家庭地址,課號,成績,系號,系主任)可分解為右面的學生、選修兩個關系。分解后的兩個關系減少了異常。這兩個關系應可連接(join)得到原有的關系元組,且不改變原有語義。學號姓名家庭地址系號系主任S1S2S3S4
N1N2N3N4A1A2A3A4D1D1D2D2M1M1M2M2學號課號成績S1S1S1S2S3S3S4S4
C1C2C3C2C1C3C1C2AABBAABAAnIntroductiontoDatabaseSystem6.3規范化范式是符合某一種級別的關系模式的集合關系數據庫中的關系必須滿足一定的要求。滿足不同程度要求的為不同范式范式的種類:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF) BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)AnIntroductiontoDatabaseSystem范式各種范式之間存在聯系:某一關系模式R為第n范式,可簡記為R∈nNF。一個低一級范式的關系模式,通過模式分解可以轉換為若干個高一級范式的關系模式的集合,這種過程就叫規范化
AnIntroductiontoDatabaseSystem1NF1NF的定義 如果一個關系模式R的所有屬性都是不可分的基本數據項,則R∈1NF第一范式是對關系模式的最起碼的要求。不滿足第一范式的數據庫模式不能稱為關系數據庫但是滿足第一范式的關系模式并不一定是一個好的關系模式AnIntroductiontoDatabaseSystem1NF(續)[例4]關系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc為學生住處,假設每個系的學生住在同一個地方函數依賴包括:
(Sno,Cno)FGradeSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→SlocAnIntroductiontoDatabaseSystem1NF(續)S-L-C的碼為(Sno,Cno)S-L-C滿足第一范式。非主屬性Sdept和Sloc部分函數依賴于碼(Sno,Cno)SnoCnoGradeSdeptSlocS-L-CAnIntroductiontoDatabaseSystemS-L-C不是一個好的關系模式(續)(1)插入異常(2)刪除異常(3)數據冗余度大(4)修改復雜AnIntroductiontoDatabaseSystemS-L-C不是一個好的關系模式(續)原因
Sdept、Sloc部分函數依賴于碼。解決方法
S-L-C分解為兩個關系模式,以消除這些部分函數依賴SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)AnIntroductiontoDatabaseSystem1NF(續)函數依賴圖:SnoCnoGradeSCS-LSnoSdeptSloc關系模式SC的碼為(Sno,Cno)關系模式S-L的碼為Sno這樣非主屬性對碼都是完全函數依賴
AnIntroductiontoDatabaseSystem2NF2NF的定義
定義:
若R∈1NF,且每一個非主屬性完全函數依賴于碼,則R∈2NF。 例:S-L-C(Sno,Sdept,Sloc,Cno,Grade)∈1NFS-L-C(Sno,Sdept,Sloc,Cno,Grade)∈2NF SC(Sno,Cno,Grade)∈
2NF S-L(Sno,Sdept,Sloc)∈
2NF1NF分解為2NF范式的方法分解的原則: 把一個關系模式分解成一個由若干個關系模式構成的集合,且這些關系模式應滿足如下條件:每個關系模式都滿足2NF。分解后的元組能如實反映原有關系中的數據,即能由分解的關系準確重構原有關系。分解策略:消除違背2NF的函數依賴:找一個違背2NF的非平凡函數依賴A1A2…An→B1B2…Bm。
把關系R分解成兩個關系:
R1(A1,A2,…,An,B1,B2,…,Bm)。R2(A1,A2,…,An,所有其它屬性)。(即從R中刪除B1,B2,…,Bm列)R1,R2若不滿足2NF,則再分解。
1NF分解為2NF范式的方法
例如:R(學號,姓名,家庭地址,課號,成績,系號,系主任)不滿足2NF。
1R中違背2NF的非平凡函數依賴: 學號→姓名,家庭地址,系號,系主任
2分解為:R1(學號,姓名,家庭地址,系號,系主任) R2(學號,課號,成績)
AnIntroductiontoDatabaseSystem3NF3NF的定義
定義6.7
關系模式R<U,F>
中若不存在這樣的碼X、屬性組Y及非主屬性Z(ZY),使得X→Y,Y→Z成立,
Y→X,則稱R<U,F>∈3NF。若R∈3NF,則每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼。AnIntroductiontoDatabaseSystem3NF(續)例:2NF關系模式S-L(Sno,Sdept,Sloc)中函數依賴:
Sno→SdeptSdept→SnoSdept→Sloc
可得:
Sno→Sloc,即S-L中存在非主屬性對碼的傳遞函數依賴,S-L∈3NF傳遞AnIntroductiontoDatabaseSystem3NF(續)函數依賴圖:S-LSnoSdeptSlocAnIntroductiontoDatabaseSystem3NF(續)解決方法采用投影分解法,把S-L分解為兩個關系模式,以消除傳遞函數依賴:S-D(Sno,Sdept)
D-L(Sdept,Sloc)S-D的碼為Sno,D-L的碼為Sdept。分解后的關系模式S-D與D-L中不再存在傳遞依賴AnIntroductiontoDatabaseSystem3NF(續)S-D的碼為Sno,D-L的碼為SdeptSnoSdeptS-DSdeptSlocD-LS-L(Sno,Sdept,Sloc)∈2NFS-L(Sno,Sdept,Sloc)∈3NFS-D(Sno,Sdept)∈3NFD-L(Sdept,Sloc)∈3NFAnIntroductiontoDatabaseSystem3NF(續)采用投影分解法將一個2NF的關系分解為多個3NF的關系,可以在一定程度上解決原2NF關系中存在的插入異常、刪除異常、數據冗余度大、修改復雜等問題。將一個2NF關系分解為多個3NF的關系后,仍然不能完全消除關系模式中的各種異常情況和數據冗余。AnIntroductiontoDatabaseSystemBC范式(BCNF)定義6.8
關系模式R<U,F>∈1NF,若X→Y且YX時X必含有碼,則R<U,F>∈BCNF。等價于:每一個決定屬性因素都包含碼AnIntroductiontoDatabaseSystemBCNF(續)若R∈BCNF所有非主屬性對每一個碼都是完全函數依賴所有的主屬性對每一個不包含它的碼,也是完全函數依賴沒有任何屬性完全函數依賴于非碼的任何一組屬性R∈BCNFR∈3NF充分不必要AnIntroductiontoDatabaseSystemBCNF(續)[例5]關系模式C(Cno,Cname,Pcno)C∈3NFC∈BCNF[例6]關系模式S(Sno,Sname,Sdept,Sage)假定S有兩個碼Sno,SnameS∈3NF。S∈BCNFAnIntroductiontoDatabaseSystemBCNF(續)[例7]關系模式SJP(S,J,P)函數依賴:(S,J)→P;(J,P)→S(S,J)與(J,P)都可以作為候選碼,屬性相交SJP∈3NF,SJP∈BCNFAnIntroductiontoDatabaseSystemBCNF(續)[例8]在關系模式STJ(S,T,J)中,S表示學生,T表示教師,J表示課程。函數依賴:
(S,J)→T,(S,T)→J,T→J(S,J)和(S,T)都是候選碼AnIntroductiontoDatabaseSystemBCNF(續)
JSJTSTSTJ中的函數依賴AnIntroductiontoDatabaseSystemBCNF(續)STJ∈3NF
沒有任何非主屬性對碼傳遞依賴或部分依賴
STJ∈BCNFT是決定因素,T不包含碼AnIntroductiontoDatabaseSystemBCNF(續)解決方法:將STJ分解為二個關系模式:
ST(S,T)∈BCNF,TJ(T,J)∈BCNF
沒有任何屬性對碼的部分函數依賴和傳遞函數依賴SJSTTJTJAnIntroductiontoDatabaseSystem3NF與BCNF的關系R∈BCNFR∈3NF如果R∈3NF,且R只有一個候選碼
R∈BCNFR∈3NF充分不必要充分必要思考(S#,C#,ORDER),表示學生選修課程的名次,有函數依賴(S#,C#)ORDER,(C#,ORDER)S#,它屬于BCNF嗎?全碼屬于BCNF嗎?任何一個二目關系模式R(A,B)一定屬于BCNF嗎?一個全是主屬性的關系模式一定可以達到第幾范式?一個全碼的關系模式一定可以達到第幾范式?Exercise商品銷售業務管理系統的關系設計符合最高范式是什么?Customer(custid,name,prov,city,phone,unit)
Product(prodid,factory,type,spec,price,desc)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州工程技術職業學院《基礎法語精讀(2)》2023-2024學年第二學期期末試卷
- 測繪安全合同
- 手房擔保買賣合同
- 貨物運輸險合同
- 啤酒銷售合作協議合同
- 合同法規專業術語考查點
- 建筑工地塔吊司機用工合同
- 《國防建設》國防建設與外交成就課件
- 古詩詞誦讀《燕歌行(并序)》課件22張 2021-2022學年統編版高中語文選擇性必修中冊
- 車房抵押借貸合同范本
- 湖南省示范性高中2024-2025學年高二下學期2月聯考 物理試卷(含解析)
- 2025年《宏觀經濟政策與發展規劃》考前通關必練題庫(含答案)
- 服裝公司品質(質量)管理手冊
- 一年級道德與法治下冊素養教案第10課 相親相愛一家人
- 辦公樓弱電系統設計方案
- 私募投資學試題及答案
- 2025屆山東省青島市高三下學期一模讀后續寫+替補隊員+講義
- 藥物臨床試驗科普
- 2025年合肥二模數學試題及答案
- 不要慌太陽下山有月光二部合唱簡譜
- 2024年內江市事業單位醫療崗招聘筆試真題
評論
0/150
提交評論