第05章(補充)模式的方法和實例_第1頁
第05章(補充)模式的方法和實例_第2頁
第05章(補充)模式的方法和實例_第3頁
第05章(補充)模式的方法和實例_第4頁
第05章(補充)模式的方法和實例_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章關(guān)系數(shù)據(jù)理論及求精志存高遠,

腳踏實地,

勇于探索!2015/10/30數(shù)據(jù)庫原理與設(shè)計2023/2/6一、什么是數(shù)據(jù)依賴1.完整性約束的表現(xiàn)形式限定屬性取值范圍:例如學(xué)生成績必須在0-100之間定義屬性值間的相互關(guān)連(主要體現(xiàn)于值的相等與否),這就是數(shù)據(jù)依賴,它是數(shù)據(jù)庫模式設(shè)計的關(guān)鍵2023/2/6什么是數(shù)據(jù)依賴(續(xù))2.數(shù)據(jù)依賴一個關(guān)系內(nèi)部屬性與屬性之間的約束關(guān)系現(xiàn)實世界屬性間相互聯(lián)系的抽象數(shù)據(jù)內(nèi)在的性質(zhì)語義的體現(xiàn)2023/2/6什么是數(shù)據(jù)依賴(續(xù))3.數(shù)據(jù)依賴的類型函數(shù)依賴(FunctionalDependency,簡記為FD)多值依賴(MultivaluedDependency,簡記為MVD)其他2023/2/6四、關(guān)系模式的簡化表示關(guān)系模式R(U,D,DOM,F)簡化為一個三元組:

R(U,F)當(dāng)且僅當(dāng)U上的一個關(guān)系r滿足F時,r稱為關(guān)系模式R(U,F)的一個關(guān)系2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇6二、數(shù)據(jù)依賴對關(guān)系模式的影響[例1]建立一個描述學(xué)校教務(wù)的數(shù)據(jù)庫:

學(xué)生的學(xué)號(Sno)、所在系(Sdept) 系主任姓名(Mname)、課程名(Cname) 成績(Grade)單一的關(guān)系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}2023/2/6數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))屬性組U上的一組函數(shù)依賴F:

F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}

SnoCnameSdeptMnameGrade2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇8數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))SnoSdeptMnameCnameGrade01外語系王軍大學(xué)英語8501外語系王軍英文寫作8001外語系王軍語文8702數(shù)學(xué)系李鐵大學(xué)英語7502數(shù)學(xué)系李鐵高等數(shù)學(xué)9003物理系朱巖大學(xué)英語8204物理系朱巖高等數(shù)學(xué)8405化學(xué)系馬兵大學(xué)英語7005化學(xué)系馬兵分析化學(xué)902023/2/6關(guān)系模式Student<U,F>中存在的問題1.數(shù)據(jù)冗余太大(Redundancy)2.更新異常(UpdateAnomalies)3.插入異常(InsertionAnomalies)4.刪除異常(DeletionAnomalies)2023/2/6數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))結(jié)論:Student關(guān)系模式不是一個好的模式?!昂谩钡哪J剑翰粫l(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡可能少。原因:由存在于模式中的某些數(shù)據(jù)依賴引起的解決方法:通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴。2023/2/6分解關(guān)系模式把這個單一模式分成3個關(guān)系模式:

S(Sno,Sdept,Sno→Sdept);SC(Sno,Cname,Grade,(Sno,Cname)→Grade);DEPT(Sdept,Mname,Sdept→Mname)2023/2/6二、規(guī)范化

規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇132.1函數(shù)依賴函數(shù)依賴平凡函數(shù)依賴與非平凡函數(shù)依賴完全函數(shù)依賴與部分函數(shù)依賴傳遞函數(shù)依賴2023/2/6一、函數(shù)依賴定義6.1設(shè)R(U)是一個屬性集U上的關(guān)系模式,X和Y是U的子集。若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱“X函數(shù)確定Y”

或“Y函數(shù)依賴于X”,記作X→Y。

2023/2/6說明

1.

所有關(guān)系實例均要滿足2.語義范疇的概念3.數(shù)據(jù)庫設(shè)計者可以對現(xiàn)實世界作強制的規(guī)定2023/2/6二、平凡函數(shù)依賴與非平凡函數(shù)依賴在關(guān)系模式R(U)中,對于U的子集X和Y,如果X→Y,但YX,則稱X→Y是非平凡的函數(shù)依賴若X→Y,但YX,則稱X→Y是平凡的函數(shù)依賴例:在關(guān)系SC(Sno,Cno,Grade)中,非平凡函數(shù)依賴:(Sno,Cno)→

Grade

平凡函數(shù)依賴:(Sno,Cno)→

Sno(Sno,Cno)→Cno2023/2/6平凡函數(shù)依賴與非平凡函數(shù)依賴(續(xù))若X→Y,則X稱為這個函數(shù)依賴的決定屬性組,也稱為決定因素(Determinant)。若X→Y,Y→X,則記作X←→Y。若Y不函數(shù)依賴于X,則記作X→Y。2023/2/6三、完全函數(shù)依賴與部分函數(shù)依賴定義6.2在R(U)中,如果X→Y,并且對于X的任何一個真子集X’,都有X’Y,則稱Y對X完全函數(shù)依賴,記作

XFY。若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴,記作XPY。

2023/2/6完全函數(shù)依賴與部分函數(shù)依賴(續(xù))[例1]中(Sno,Cno)→Grade是完全函數(shù)依賴,

(Sno,Cno)→Sdept是部分函數(shù)依賴因為Sno→Sdept成立,且Sno是(Sno,Cno)的真子集

FP2023/2/6四、傳遞函數(shù)依賴定義6.3在R(U)中,如果X→Y,(YX),Y→XY→Z,則稱Z對X傳遞函數(shù)依賴。記為:X→Z

注:如果Y→X,即X←→Y,則Z直接依賴于X。例:在關(guān)系Std(Sno,Sdept,Mname)中,有:

Sno→Sdept,Sdept→Mname,Mname傳遞函數(shù)依賴于Sno。傳遞2023/2/62.2碼定義6.4設(shè)K為R<U,F>中的屬性或?qū)傩越M合。若K

U,則K稱為R的侯選碼(CandidateKey)。若候選碼多于一個,則選定其中的一個做為主碼(PrimaryKey)。F2023/2/6碼(續(xù))主屬性與非主屬性包含在任何一個候選碼中的屬性,稱為主屬性(Primeattribute)不包含在任何碼中的屬性稱為非主屬性(Nonprimeattribute)或非碼屬性(Non-keyattribute)全碼整個屬性組是碼,稱為全碼(All-key)

2023/2/6碼(續(xù))[例2]關(guān)系模式S(Sno,Sdept,Sage),單個屬性Sno是碼,

SC(Sno,Cno,Grade)中,(Sno,Cno)是碼[例3]關(guān)系模式R(P,W,A)

P:演奏者W:作品A:聽眾一個演奏者可以演奏多個作品某一作品可被多個演奏者演奏聽眾可以欣賞不同演奏者的不同作品碼為(P,W,A),即All-Key2023/2/6外部碼定義6.5關(guān)系模式R中屬性或?qū)傩越MX并非R的碼,但X是另一個關(guān)系模式的碼,則稱X是R的外部碼(Foreignkey)也稱外碼如在SC(Sno,Cno,Grade)中,Sno不是碼,但Sno是關(guān)系模式S(Sno,Sdept,Sage)的碼,則Sno是關(guān)系模式SC的外部碼。主碼與外部碼一起提供了表示關(guān)系間聯(lián)系的手段。2023/2/62.3范式范式是符合某一種級別的關(guān)系模式的集合關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求。滿足不同程度要求的為不同范式范式的種類:

第一范式(1NF)

第二范式(2NF)

第三范式(3NF) BC范式(BCNF)

第四范式(4NF)

第五范式(5NF)2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇262.3范式各種范式之間存在聯(lián)系:某一關(guān)系模式R為第n范式,可簡記為R∈nNF。一個低一級范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為若干個高一級范式的關(guān)系模式的集合,這種過程就叫規(guī)范化

2023/2/62.42NF1NF的定義 如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R∈1NF第一范式是對關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫但是滿足第一范式的關(guān)系模式并不一定是一個好的關(guān)系模式2023/2/62NF(續(xù))[例4]關(guān)系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc為學(xué)生住處,假設(shè)每個系的學(xué)生住在同一個地方函數(shù)依賴包括:

(Sno,Cno)FGradeSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→Sloc2023/2/6

2NF(續(xù))S-L-C的碼為(Sno,Cno)S-L-C滿足第一范式。非主屬性Sdept和Sloc部分函數(shù)依賴于碼(Sno,Cno)SnoCnoGradeSdeptSlocS-L-C2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇30S-L-C不是一個好的關(guān)系模式(續(xù))(1)插入異常(2)刪除異常(3)數(shù)據(jù)冗余度大(4)修改復(fù)雜2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇31S-L-C不是一個好的關(guān)系模式(續(xù))原因

Sdept、Sloc部分函數(shù)依賴于碼。解決方法

S-L-C分解為兩個關(guān)系模式,以消除這些部分函數(shù)依賴

SC(Sno,Cno,Grade)

S-L(Sno,Sdept,Sloc)2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇322NF(續(xù))函數(shù)依賴圖:SnoCnoGradeSCS-LSnoSdeptSloc關(guān)系模式SC的碼為(Sno,Cno)關(guān)系模式S-L的碼為Sno這樣非主屬性對碼都是完全函數(shù)依賴

2023/2/6

2NF(續(xù))2NF的定義 定義6.6若R∈1NF,且每一個非主屬性完全函數(shù)依賴于碼,則R∈2NF。例:S-L-C(Sno,Sdept,Sloc,Cno,Grade)∈1NFS-L-C(Sno,Sdept,Sloc,Cno,Grade)∈2NFSC(Sno,Cno,Grade)∈2NFS-L(Sno,Sdept,Sloc)∈2NF2023/2/6分解辦法首先,對于組成主碼的屬性集合的每一個子集,用它作為主碼構(gòu)成一個表。然后,將依賴于這些主碼的屬性放置到相應(yīng)的表中。最后,去掉只由主碼的子集構(gòu)成的表。2023/2/6

2NF(續(xù))采用投影分解法將一個1NF的關(guān)系分解為多個2NF的關(guān)系,可以在一定程度上減輕原1NF關(guān)系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度大、修改復(fù)雜等問題。將一個1NF關(guān)系分解為多個2NF的關(guān)系,并不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇36

2.53NF3NF的定義定義6.7關(guān)系模式R<U,F(xiàn)>

中若不存在這樣的碼X、屬性組Y及非主屬性Z(ZY),使得X→Y,Y→Z成立,Y→X,則稱R<U,F(xiàn)>∈3NF。若R∈3NF,則每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼。2023/2/63NF(續(xù))例:2NF關(guān)系模式S-L(Sno,Sdept,Sloc)中函數(shù)依賴:

Sno→SdeptSdept→SnoSdept→Sloc

可得:Sno→Sloc,即S-L中存在非主屬性對碼的傳遞函數(shù)依賴,S-L∈3NF傳遞2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇38

3NF(續(xù))函數(shù)依賴圖:S-LSnoSdeptSloc2023/2/63NF(續(xù))解決方法采用投影分解法,把S-L分解為兩個關(guān)系模式,以消除傳遞函數(shù)依賴:

S-D(Sno,Sdept)

D-L(Sdept,Sloc)S-D的碼為Sno,D-L的碼為Sdept。分解后的關(guān)系模式S-D與D-L中不再存在傳遞依賴2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇403NF(續(xù))S-D的碼為Sno,D-L的碼為SdeptSnoSdeptS-DSdeptSlocD-L

S-L(Sno,Sdept,Sloc)∈2NFS-L(Sno,Sdept,Sloc)∈3NFS-D(Sno,Sdept)∈3NFD-L(Sdept,Sloc)∈3NF2023/2/6分解過程(1)對于不是候選碼的每個決定因子,從表中刪去依賴于它的所有屬性;(2)新建一個表,新表中包含在原表中所有依賴于該決定因子的屬性;(3)將決定因子作為新表的主碼。2023/2/63NF(續(xù))采用投影分解法將一個2NF的關(guān)系分解為多個3NF的關(guān)系,可以在一定程度上解決原2NF關(guān)系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度大、修改復(fù)雜等問題。將一個2NF關(guān)系分解為多個3NF的關(guān)系后,仍然不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。2023/2/6規(guī)范化舉例設(shè)有關(guān)系模式:Student(學(xué)號,姓名,導(dǎo)師號,導(dǎo)師名,課程號,課程說明,成績)語義:一名學(xué)生只有一個導(dǎo)師,學(xué)生可選多門課。判斷此關(guān)系模式屬于幾范式,如不屬于3NF,將其規(guī)范化成3NF的。2023/2/61.此表是1NF,其函數(shù)依賴為: 學(xué)號F→姓名,學(xué)號F→導(dǎo)師號,學(xué)號F→導(dǎo)師名,課程號F→課程說明,(學(xué)號,課程號)→成績主碼為(學(xué)號,課程號)存在部分函數(shù)依賴關(guān)系,不是2NF,首先將其分解為2NF。學(xué)生(學(xué)號,姓名,導(dǎo)師號,導(dǎo)師名),課程(課程號,課程說明),成績(學(xué)號,課程號,成績)均為2NF2023/2/62.判是否為3NF“學(xué)生”表不是3NF,其函數(shù)依賴為: 學(xué)號→姓名,學(xué)號→導(dǎo)師號,導(dǎo)師號F→導(dǎo)師名,∴學(xué)號傳遞→導(dǎo)師名消除依賴于決定者的屬性,把它們放在一個單獨的表中,得到:學(xué)生(學(xué)號,姓名,導(dǎo)師號),導(dǎo)師(導(dǎo)師號,導(dǎo)師名)2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇46規(guī)范化小結(jié)關(guān)系數(shù)據(jù)庫的規(guī)范化理論是數(shù)據(jù)庫邏輯設(shè)計的工具目的:盡量消除插入、刪除異常,修改復(fù)雜,數(shù)據(jù)冗余基本思想:逐步消除數(shù)據(jù)依賴中不合適的部分實質(zhì):概念的單一化2023/2/6規(guī)范化小結(jié)(續(xù))關(guān)系模式規(guī)范化的基本步驟

1NF ↓消除非主屬性對碼的部分函數(shù)依賴消除決定屬性2NF集非碼的非平↓消除非主屬性對碼的傳遞函數(shù)依賴凡函數(shù)依賴3NF ↓消除主屬性對碼的部分和傳遞函數(shù)依賴

BCNF ↓消除非平凡且非函數(shù)依賴的多值依賴

4NF2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇48規(guī)范化小結(jié)(續(xù))不能說規(guī)范化程度越高的關(guān)系模式就越好在設(shè)計數(shù)據(jù)庫模式結(jié)構(gòu)時,必須對現(xiàn)實世界的實際情況和用戶應(yīng)用需求作進一步分析,確定一個合適的、能夠反映現(xiàn)實世界的模式上面的規(guī)范化步驟可以在其中任何一步終止2023/2/6數(shù)據(jù)庫原理與應(yīng)用張申勇496.4模式的分解把低一級的關(guān)系模式分解為若干個高一級的關(guān)系模式的方法不是唯一的只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價,分解方法才有意義2023/2/6關(guān)系模式分解的標準三種模式分解等價的定義: ⒈分解具有無損連接性 ⒉分解要保持函數(shù)依賴 ⒊分解既要保持函數(shù)依賴,又要具有無損連接性2023/2/6關(guān)系模式的分解準則模式分解要滿足:模式分解具有無損連接性;模式分解能夠保持函數(shù)依賴。

無損連接是指分解后的關(guān)系通過自然連接可以恢復(fù)成原來的關(guān)系,即通過自然連接得到的關(guān)系與原來的關(guān)系相比,既不多出信息、又不丟失信息。

保持函數(shù)依賴分解是指在模式的分解過程中,函數(shù)依賴不能丟失的特性,即模式分解不能破壞原來的語義。2023/2/6關(guān)系模式的分解準則(續(xù))

例:S-D-L(Sno,Dept,Loc)有函數(shù)依賴:

Sno→Dept,Dept→Loc不是第三范式的。至少可以有三種分解方案,分別為:方案1:S-L(Sno,Loc),D-L(Dept,Loc)方案2:S-D(Sno,Dept),S-L(Sno,Loc)方案3:S-D(Sno,Dept),D-L(Dept,Loc)這三種分解方案得到的關(guān)系模式都是第三范式的,那么如何比較這三種方案的好壞呢?由此在將一個關(guān)系模式分解為多個關(guān)系模式時除了提高規(guī)范化程度之外,還需要考慮其他的一些因素。2023/2/6關(guān)系模式的分解準則(續(xù))將一個關(guān)系模式R<U,F(xiàn)>分解為若干個關(guān)系模式R1<U1,F(xiàn)1>,R2<U2,F(xiàn)2>,…,Rn<Un,F(xiàn)n>,意味著將存儲在一張二維表r中的數(shù)據(jù)分散到了若干個二維表r1,r2,…,rn中。這樣的分解應(yīng)該不丟失信息,即能通過對關(guān)系r1,r2,…,rn的自然連接運算重新得到關(guān)系r中的所有信息。事實上,將關(guān)系r投影為r1,r2,…,rn時不會丟失信息,關(guān)鍵是對r1,r2,…,rn做自然連接時可能產(chǎn)生一些r中原來沒有的元組,從而無法區(qū)別哪些元組是r中原來有的,即數(shù)據(jù)庫中應(yīng)該存在的數(shù)據(jù),哪些是不應(yīng)該有的。在這個意義上就丟失了信息。2023/2/6關(guān)系模式的分解準則(續(xù))這三種分解方案是否都滿足分解要求呢?假設(shè)此關(guān)系模式的數(shù)據(jù)如表所示,此關(guān)系用r表示。Sno

Dept

Loc

S01D1L1S02D2L2S03D2L2S04D3L12023/2/6關(guān)系模式的分解準則(續(xù))若按方案1將S-D-L投影到S-L和D-L的屬性上,得到如左邊兩個表所示的關(guān)系。做自然連接得到結(jié)果如右表所示。Sno

Loc

S01L1S02L2S03L2S04L1Dept

Loc

D1L1D2L2D3L1Sno

Dept

Loc

S01D1L1S01D3L1S02D2L2S03D2L2S04D1L1S04D3L12023/2/6關(guān)系模式的分解準則(續(xù))無損連接性將關(guān)系模式R<U,F(xiàn)>分解為個關(guān)系模式R1<U1,F(xiàn)1>,R2<U2,F(xiàn)2>,…,Rn<Un,F(xiàn)n>,若對于R

溫馨提示

  • 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

提交評論