![《數(shù)據(jù)庫原理》課件第7章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第1頁](http://file4.renrendoc.com/view12/M0B/1A/19/wKhkGWbar4mAWTevAADBWZbhBP0897.jpg)
![《數(shù)據(jù)庫原理》課件第7章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第2頁](http://file4.renrendoc.com/view12/M0B/1A/19/wKhkGWbar4mAWTevAADBWZbhBP08972.jpg)
![《數(shù)據(jù)庫原理》課件第7章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第3頁](http://file4.renrendoc.com/view12/M0B/1A/19/wKhkGWbar4mAWTevAADBWZbhBP08973.jpg)
![《數(shù)據(jù)庫原理》課件第7章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第4頁](http://file4.renrendoc.com/view12/M0B/1A/19/wKhkGWbar4mAWTevAADBWZbhBP08974.jpg)
![《數(shù)據(jù)庫原理》課件第7章 關(guān)系數(shù)據(jù)庫規(guī)范化理論_第5頁](http://file4.renrendoc.com/view12/M0B/1A/19/wKhkGWbar4mAWTevAADBWZbhBP08975.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2024/9/6ftt@1優(yōu)秀的數(shù)據(jù)庫設(shè)計是應(yīng)用成功的基石
第7章關(guān)系數(shù)據(jù)庫規(guī)范化理論2024/9/6ftt@2問題的提出關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)模型靜態(tài)的數(shù)據(jù)結(jié)構(gòu)描述動態(tài)的數(shù)據(jù)操作集合數(shù)據(jù)完整性約束關(guān)系數(shù)據(jù)庫邏輯設(shè)計針對一個具體問題,應(yīng)如何構(gòu)造一個適合于它的數(shù)據(jù)模式,即應(yīng)該構(gòu)造幾個關(guān)系,每個關(guān)系由哪些屬性組成等。數(shù)據(jù)庫邏輯設(shè)計的工具──關(guān)系數(shù)據(jù)庫的規(guī)范化理論2024/9/6ftt@3關(guān)系模式的設(shè)計問題例1.考慮為管理職工的工資信息而設(shè)計一個關(guān)系模式職工級別工資趙明4500錢廣5600孫志6700李開5600周祥67002024/9/6ftt@4存在問題:信息的不可表示問題插入異常:如果沒有職工具有8級工資,則8級工資的工資數(shù)額就難以插入刪除異常:如果僅有職工趙明具有4級工資,如果將趙明刪除,則有關(guān)4級工資的工資數(shù)額信息也隨之刪除了信息的冗余問題數(shù)據(jù)冗余:職工很多,工資級別有限,每一級別的工資數(shù)額反復(fù)存儲多次更新異常:如果將5級工資的工資數(shù)額調(diào)為620,則需要找到每個具有5級工資的職工,逐一修改麻煩!麻煩!!好煩!!!唉,剪不斷,理還亂2024/9/6ftt@5解決之道:關(guān)系模式分解級別工資450056006700分解!分解!!再分解!!!哇,原來生活可以如此簡單2024/9/6ftt@6分解改進后,好處:數(shù)據(jù)量減少。設(shè)有n個職工,m個工資級別,n>>m,則分解前原模式有3n個數(shù)據(jù),改進后新模式共有2n+2m個數(shù)據(jù),顯然后者的數(shù)據(jù)量要少得多。表達能力強。分解前原表中無法進入的信息(如9級工資),在改進后的兩個模式中則可加入;當刪除職工C時,也不會丟失7級工資信息。修改方便。改進后,修改某一級別工資時只要修改一處。當然,改進后的關(guān)系模式也存在另外一個問題,當查詢某個職工的工資時,需要將兩個關(guān)系連接后進行查詢,而關(guān)系的連接代價是很大的。2024/9/6ftt@7主要內(nèi)容關(guān)系模式的冗余和異常問題數(shù)據(jù)依賴*數(shù)據(jù)依賴的公理系統(tǒng)(了解)碼與閉包算法求碼關(guān)系模式的規(guī)范化函數(shù)依賴與關(guān)系模式的范式:1NF,2NF,3NF,BCNF*多值依賴與4NF(了解)*模式的分解(了解)無損連接性分解保持函數(shù)依賴分解2024/9/6ftt@8數(shù)據(jù)依賴內(nèi)容提要關(guān)系模式中的數(shù)據(jù)依賴概念回顧關(guān)系模式的形式化定義什么是數(shù)據(jù)依賴關(guān)系模式的簡化定義數(shù)據(jù)依賴對關(guān)系模式有什么影響數(shù)據(jù)依賴的形式化定義2024/9/6ftt@9概念回顧關(guān)系:描述實體及其屬性、實體間的聯(lián)系。從形式上看,它是一張二維表,是所涉及屬性的笛卡爾積的一個子集。關(guān)系模式:用來定義關(guān)系。關(guān)系數(shù)據(jù)庫:基于關(guān)系模型的數(shù)據(jù)庫,利用關(guān)系來描述現(xiàn)實世界。從形式上看,它由一組關(guān)系組成。關(guān)系數(shù)據(jù)庫的模式:定義這組關(guān)系的關(guān)系模式的全體。2024/9/6ftt@10關(guān)系模式的形式化定義關(guān)系模式由五部分組成,即它是一個五元組:
R(U,D,DOM,F)R:關(guān)系名U:組成該關(guān)系的屬性名集合D:屬性組U中屬性所來自的域DOM:屬性向域的映象集合F:屬性間數(shù)據(jù)的依賴關(guān)系集合。即限定了組成關(guān)系的各個元組必須滿足的完整性約束條件。2024/9/6ftt@11什么是數(shù)據(jù)依賴1.完整性約束的表現(xiàn)形式限定屬性取值范圍:例如學(xué)生成績必須在0-100之間定義屬性值間的相互關(guān)連(主要體現(xiàn)于值的相等與否),這就是數(shù)據(jù)依賴,它是數(shù)據(jù)庫模式設(shè)計的關(guān)鍵。2024/9/6ftt@12什么是數(shù)據(jù)依賴(續(xù))2.數(shù)據(jù)依賴是通過一個關(guān)系中屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間的相互關(guān)系是現(xiàn)實世界屬性間相互聯(lián)系的抽象是數(shù)據(jù)內(nèi)在的性質(zhì)是語義的體現(xiàn)2024/9/6ftt@13什么是數(shù)據(jù)依賴(續(xù))3.數(shù)據(jù)依賴的主要類型函數(shù)依賴(FunctionalDependency,F(xiàn)D)多值依賴(了解)(MultivaluedDependency,MVD)連接依賴(了解)2024/9/6ftt@14關(guān)系模式的簡化表示在關(guān)系模式R(U,D,DOM,F)中,影響數(shù)據(jù)庫模式設(shè)計的主要是U和F,D和DOM對其影響不大,為了方便討論,我們將關(guān)系模式簡化為一個三元組:R(U,F)當且僅當U上的一個關(guān)系r滿足F時,r稱為關(guān)系模式R(U,F)的一個關(guān)系。2024/9/6ftt@15數(shù)據(jù)依賴對關(guān)系模式的影響例2.建立一個描述學(xué)校的數(shù)據(jù)庫。涉及的對象包括: 學(xué)生的學(xué)號(Sno),所在系(Sdept),系主任姓名(Mname),課程名(Cname),成績(Grade)假設(shè)學(xué)校的數(shù)據(jù)庫模式由一個單一的關(guān)系模式Student構(gòu)成,則該關(guān)系模式的屬性集合為:
U={Sno,Sdept,Mname,Cname,Grade}2024/9/6ftt@16數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))現(xiàn)實世界的已知事實:一個系有若干學(xué)生,但一個學(xué)生只屬于一個系;一個系只有一名主任;一個學(xué)生可以選修多門課程,每門課程有若干學(xué)生選修;每個學(xué)生所學(xué)的每門課程都有一個成績。由此可得到屬性組U上的一組函數(shù)依賴F:
F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}2024/9/6ftt@17數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))
SnoCnameSdeptMnameGrade函數(shù)依賴圖2024/9/6ftt@18數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))關(guān)系模式Student<U,F>中存在的問題:⒈數(shù)據(jù)冗余太大浪費大量的存儲空間
例:每一個系主任的姓名重復(fù)出現(xiàn),重復(fù)次數(shù)與該系所有學(xué)生的所有課程成績出現(xiàn)次數(shù)相同。⒉更新異常(UpdateAnomalies)數(shù)據(jù)冗余,更新數(shù)據(jù)時,維護數(shù)據(jù)完整性代價大。
例:某系更換系主任后,系統(tǒng)必須修改與該系學(xué)生有關(guān)的每一個元組。2024/9/6ftt@19數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))⒊插入異常(InsertionAnomalies)該插的數(shù)據(jù)插不進去
例:如果一個系剛成立,尚無學(xué)生,我們就無法把這個系及其系主任的信息存入數(shù)據(jù)庫。⒋刪除異常(DeletionAnomalies)不該刪除的數(shù)據(jù)不得不刪
例:如果某個系的學(xué)生全部畢業(yè)了,我們在刪除該系學(xué)生信息的同時,把這個系及其系主任的信息也丟掉了。2024/9/6ftt@20數(shù)據(jù)依賴對關(guān)系模式的影響(續(xù))結(jié)論:Student關(guān)系模式不是一個好的模式。一個“好”的模式應(yīng)當不會發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡可能少。原因:由存在于模式中的某些數(shù)據(jù)依賴引起的。解決方法:通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴。2024/9/6ftt@21如何設(shè)計一個合理的關(guān)系數(shù)據(jù)庫模式?與實際問題相結(jié)合例3.設(shè)計一個關(guān)系數(shù)據(jù)模型以存放學(xué)生各門課考試成績方案一:Grade關(guān)系(sno,sname,cno,cname,grade)方案二:Grade關(guān)系(sno,sname,cno,grade)
Course關(guān)系(cno,cname)方案三:Grade關(guān)系(sno,cnograde)
Student關(guān)系(sno,sname)
Course關(guān)系(cno,cname)規(guī)范化理論2024/9/6ftt@22例4.設(shè)計教學(xué)管理關(guān)系數(shù)據(jù)庫模型2024/9/6ftt@23方案一:SCT(sno,cno,tno,sname,grade,cname,tname)
問題分析關(guān)系SCT冗余度高修改困難插入問題刪除問題產(chǎn)生問題的原因
屬性間約束關(guān)系(即數(shù)據(jù)間的依賴關(guān)系)太強2024/9/6ftt@24方案二:分解成5個關(guān)系模式
students(sno,sname)、courses(cno,cname)
enrolls(sno,cno,grade)
teachers(tno,tname)、teaching(tno,cno)
CnoTnoC1T1C1T4C2T2C3T3C4T4CoursesStudentsEnrollsTeachersTeachCourses2024/9/6ftt@25什么是關(guān)系數(shù)據(jù)庫設(shè)計理論?關(guān)系數(shù)據(jù)庫設(shè)計的核心:關(guān)系模式設(shè)計關(guān)系模式的設(shè)計:
按照一定的原則從數(shù)量眾多而又相互關(guān)聯(lián)的數(shù)據(jù)中,構(gòu)造出一組既能較好地反映現(xiàn)實世界,而又有良好的操作性能的關(guān)系模式。關(guān)系模式優(yōu)劣,如何評價,如何改進?
——本章所要解決的問題2024/9/6ftt@26什么是關(guān)系數(shù)據(jù)庫設(shè)計理論?(續(xù))規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。數(shù)據(jù)庫語義學(xué)的重要內(nèi)容它借助近代代數(shù)工具,提出了一整套嚴密的理論和實用算法,把抽象的數(shù)學(xué)理論和具體的實際問題結(jié)合起來解決如何設(shè)計好一個關(guān)系數(shù)據(jù)模式問題是關(guān)系數(shù)據(jù)庫設(shè)計的指南理論的基礎(chǔ):數(shù)據(jù)的依賴(數(shù)據(jù)的相關(guān)性)2024/9/6ftt@27數(shù)據(jù)依賴相關(guān)概念函數(shù)依賴(FunctionalDependency)平凡函數(shù)依賴與非平凡函數(shù)依賴完全函數(shù)依賴與部分函數(shù)依賴傳遞函數(shù)依賴碼2024/9/6ftt@28函數(shù)依賴數(shù)據(jù)依賴的一種,它反映屬性或?qū)傩越M之間相依存,互相制約的關(guān)系,即反映現(xiàn)實世界的約束關(guān)系。定義: 設(shè)R(U)是屬性U上的一個關(guān)系模式,X和Y均為U={A1,A2,…,An}的子集,r為R的任一關(guān)系,如果對于r中的任意兩個元組u,v,只要有u[X]=v[X],就有u[Y]=v[Y],則稱X函數(shù)決定Y,或稱Y函數(shù)依賴于X,記為X→Y,稱X為決定因素。若X→Y,并且Y→X,則記為X←→Y。若Y不函數(shù)依賴于X,則記為X→Y。2024/9/6ftt@29函數(shù)依賴(續(xù))函數(shù)依賴是語義范疇的概念。只能根據(jù)語義來確定函數(shù)依賴性的存在與否。例如“姓名→年齡”這個函數(shù)依賴只有在不允許有同名人的條件下成立。函數(shù)依賴反映屬性之間的一般規(guī)律,必須在關(guān)系模式下的任一個關(guān)系r中都滿足約束條件。數(shù)據(jù)庫設(shè)計者可以對現(xiàn)實世界作強制的規(guī)定。例如規(guī)定不允許同名人出現(xiàn),函數(shù)依賴“姓名→年齡”成立。所插入的元組必須滿足規(guī)定的函數(shù)依賴,若發(fā)現(xiàn)有同名人存在,則拒絕裝入該元組。2024/9/6ftt@30函數(shù)依賴(續(xù))屬性間的聯(lián)系決定函數(shù)依賴關(guān)系。設(shè)X、Y均是U的子集,
1.X和Y間聯(lián)系是1:1,則X→Y且Y→X,則記為X←→Y。
2.X和Y間聯(lián)系是M:1(M>1),則記為X→Y。
3.X和Y間聯(lián)系是M:N(M,N>1),則X、Y間不存在函數(shù)依賴,則記為X→Y。關(guān)系中函數(shù)依賴關(guān)系可以用函數(shù)依賴圖表示。例:關(guān)系模式SCT(sno,cno,tno,sname,grade,cname,tname)snamecnamesnocnogradetnotname因不允許學(xué)生有重名sno→snamesname→sno因課程名唯一cno←→cname(sno,cno)→grade(sno,cno)→tnotno→tname2024/9/6ftt@31平凡函數(shù)依賴與非平凡函數(shù)依賴定義:設(shè)X,Y均為某關(guān)系上的屬性集,且X→Y:若Y包含于X即Y
X,則稱X→Y為平凡函數(shù)依賴;若Y不包含于X即Y
X,則稱X→Y為非平凡函數(shù)依賴。XYW例:設(shè)關(guān)系X,Y,W為關(guān)系R中的三個屬性組,屬性關(guān)系如下圖所示,問X→Y,X→W,W→Y各屬上述何種函數(shù)依賴。X→Y為平凡函數(shù)依賴
X→W,W→Y為非平凡函數(shù)依賴2024/9/6ftt@32平凡函數(shù)依賴與非平凡函數(shù)依賴(續(xù))例:在關(guān)系SC(Sno,Cno,Grade)中,非平凡函數(shù)依賴:(Sno,Cno)→
Grade
平凡函數(shù)依賴:(Sno,Cno)→
Sno(Sno,Cno)→Cno于任一關(guān)系模式,平凡函數(shù)依賴都是必然成立的,它不反映新的語義,因此若不特別聲明,我們總是討論非平凡函數(shù)依賴。2024/9/6ftt@33完全函數(shù)依賴與部分函數(shù)依賴定義:在R(U)中,如果X→Y,并且對于X的任何真子集X’都有X’→Y,則稱Y完全依賴于X,記作X→Y;否則,如果X→Y,且X中存在一個真子集X’,使得X’→Y成立,則Y部分依賴于X,記作X→Y。例:在關(guān)系SC(Sno,Cno,Grade)中,Sno→Grade,Cno→Grade,因此:(Sno,Cno)→
Grade但:(Sno,Cno)→Sno,(Sno,Cno)
→Cno平凡函數(shù)依賴必定是部分函數(shù)依賴非平凡函數(shù)依賴也可能是部分函數(shù)依賴fpfpp2024/9/6ftt@34完全函數(shù)依賴與部分函數(shù)依賴(續(xù))例:Student(Sno,Sname,Ssex,Sage,Sdept)
Snof
Sname,SnofSsex,Snof
Sage,
SnofSdept(Sno,Sname)PSdept,(Sno,Ssex)PSdept2024/9/6ftt@35傳遞函數(shù)依賴定義:在關(guān)系模式R(U)中,如果X→Y,Y→Z,且Y
X,Y→X,則稱Z傳遞函數(shù)依賴于X。注:如果Y→X,即X←→Y,則Z直接依賴于X。例:在關(guān)系Std(Sno,Sdept,Mname)中,
有:Sno→Sdept,Sdept→Mname,Mname傳遞函數(shù)依賴于Sno。2024/9/6ftt@36碼的求解碼的定義數(shù)據(jù)依賴的公理系統(tǒng)閉包算法侯選碼的求解理論和算法函數(shù)依賴集等價最小函數(shù)依賴集2024/9/6ftt@37碼的定義定義:設(shè)K為關(guān)系模式R<U,F>中的屬性或?qū)傩越M合。若KU,則K稱為R的一個侯選碼(CandidateKey)。若關(guān)系模式R有多個候選碼,則選定其中的一個做為主碼(Primarykey)。主屬性:包含在每一個候選碼中的屬性,稱作主屬性。碼是關(guān)系模式中一個重要概念。候選碼能夠唯一地標別關(guān)系的元組,是關(guān)系模式中一組最重要的屬性。主碼又和外部碼一起提供了一個表示關(guān)系間聯(lián)系的手段。f2024/9/6ftt@38數(shù)據(jù)依賴的公理系統(tǒng)一套推理規(guī)則,是模式分解算法的理論基礎(chǔ)用途求給定關(guān)系模式的碼討論如何推導(dǎo)函數(shù)依賴,即從已知的函數(shù)依賴集中推導(dǎo)出其他隱含的函數(shù)依賴。2024/9/6ftt@39Armstrong公理系統(tǒng)Armstrong公理系統(tǒng)
設(shè)有關(guān)系模式R(U,F),X、Y、Z、W
U,則對R(U,F)有:A1(自反律):若Y
X,則X→Y;A2(增廣律):若X→Y,則XZ→YZ;A3(傳遞律):若X→Y,Y→Z,則X→Z。定理Armstrong公理是正確的。即如果函數(shù)依賴F成立,則由F根據(jù)Armstrong公理所推導(dǎo)的函數(shù)依賴總是成立的。由Armstrong公理系統(tǒng),可以得到以下三個推論:合成規(guī)則:若X→Y,X→Z,則X→YZ;分解規(guī)則:若X→Y,Z
Y,則X→Z;偽傳遞規(guī)則:若X→Y,WY→Z,則XW→Z。引理X→A1A2…Ak成立的充分必要條件是X→Ai成立(i=1,2,…,k)。2024/9/6ftt@40函數(shù)依賴的閉包定義
設(shè)關(guān)系模式R(U,F),U為R的屬性集合,F(xiàn)為其函數(shù)依賴集,則稱所有用Armstrong公理從F推出的函數(shù)依賴X→R中Ai的屬性集合,為X的屬性閉包,記作X+,讀作X關(guān)于函數(shù)依賴集F的閉包。引理
設(shè)關(guān)系模式R(U,F),U為R的屬性集合,F(xiàn)為其函數(shù)依賴集,X、Y
U,則從F推出X→Y的充要條件是Y
X+。用途將判定X→Y是否能由F根據(jù)Armstrong公理導(dǎo)出的問題,就轉(zhuǎn)化為求出XF+
,判定Y是否為XF+的子集的問題。2024/9/6ftt@41求解閉包的算法算法求屬性集X(X
U)關(guān)于U上的函數(shù)依賴集F的閉包XF+
。輸入:X,F(xiàn);輸出:XF+步驟:(1)令X(0)=X,i=0;(2)求B,這里B={A|(
V)(
W)(V→W
F∧V
X(i)∧A
W)};(3)X(i+1)=B∪X(i);(4)判斷X(i+1)=X
(i)嗎?(5)若相等或X(i)=U,則X(i)就是XF+,算法終止。(6)若否,則i=i+l,返回第(2)步。2024/9/6ftt@42求解閉包的算法(續(xù))算法偽代碼表示:(輸出結(jié)果XF+存儲在變量result中)result:=X;WHILE(result發(fā)生變化)DOFOREACH函數(shù)依賴Y→ZINFDOBEGINIFY
resultTHENresult:=result∪Z;END2024/9/6ftt@43求解閉包示例例1.已知U={A,B,C,D};A→B,BC→D.A+=AB.C+=C.(AC)+=ABCD.ACDB2024/9/6ftt@44求解閉包示例(續(xù))例2.已知關(guān)系模式R<U,F(xiàn)>,其中U={A,B,C,D,E};F={AB→C,B→D,C→E,EC→B,AC→B}。求(AB)F+
。(1)設(shè)X(0)=AB;(2)計算X(1):逐一的掃描F集合中各個函數(shù)依賴,找左部為A,B或AB的函數(shù)依賴。得到兩個:AB→C,B→D。于是X(1)=AB∪CD=ABCD。(3)因為X(0)≠X(1),所以再找出左部為ABCD子集的那些函數(shù)依賴,又得到AB→C,B→D,C→E,AC→B,于是X(2)=X(1)∪BCDE=ABCDE。(4)因為X(2)=U,算法終止所以(AB)F+=ABCDE。2024/9/6ftt@45閉包求解與碼利用閉包算法,能夠正確判斷一個新的函數(shù)依賴能否從給定的函數(shù)依賴F集合中推導(dǎo)出來。通過閉包算法,可以從關(guān)系R(U,F)中給定的函數(shù)依賴集合F推導(dǎo)出所有的函數(shù)依賴。還可以得出結(jié)論:關(guān)系R(U,F)中,其中某個給定屬性集K
U,當且僅當K關(guān)于給定函數(shù)依賴集F的閉包K+是R的所有屬性集合U時,K即為關(guān)系R的超碼。當且僅當屬性集K中不存在任一真子集K’的閉包(K’)+也是R的所有屬性集合U時,即屬性集K是最小屬性集合構(gòu)成的超碼時
,K就是該關(guān)系R(U,F)的候選碼。2024/9/6ftt@46候選碼的求解理論和算法對于給定的關(guān)系R(A1A2…An)和函數(shù)依賴集F,可將其屬性分為4類:L類:僅出現(xiàn)在F函數(shù)依賴左部的屬性 R類:僅出現(xiàn)在F函數(shù)依賴右部的屬性N類:在F函數(shù)依賴的左右兩部均未出現(xiàn)的屬性LR類:在F函數(shù)依賴的左右兩部均出現(xiàn)的屬性定理:對于給定的關(guān)系模式R及其函數(shù)依賴集F,若X是R的L類屬性,則X必為R的任一侯選碼的成員。推論:對于給定的關(guān)系模式R及其函數(shù)依賴集F,若X是R的L類屬性,且X+包含了R的全部屬性,則X必為R的唯一侯選碼。2024/9/6ftt@47例:設(shè)有關(guān)系模式R(A,B,C,D),其函數(shù)依賴集F={D->B,B->D,AD->B,AC->D},求R的所有候選碼。解:考察F發(fā)現(xiàn),A,C兩屬性是L類屬性,由以上的定理可知,AC必是R的候選碼成員,又因為AC+=ABCD,所以AC是R的唯一侯選碼。2024/9/6ftt@48定理:對于給定的關(guān)系模式R及其函數(shù)依賴集F,若X是R的R類屬性,則X不是R的任何候選碼的成員。定理:對于給定的關(guān)系模式R及其函數(shù)依賴集F,若X是R的N類屬性,則X必為R的任一候選碼的成員。例:設(shè)有關(guān)系模式R(A,B,C,D,E,P),R的函數(shù)依賴集為F={A->D,E->D,D->B,BC->D,DC->A},求R的所有候選碼。解:考察F發(fā)現(xiàn),屬性E,C是L類屬性,故E,C必在R的任何候選碼中。又因為屬性P是N類屬性,所以P也在R的任何候選碼中。而CEP+=ABCDEP,所以CEP是R的唯一候選碼。推論:對于給定的關(guān)系模式R及其函數(shù)依賴集F,如果X是R的N類和L類組成的屬性集,且X+包含了R的全部屬性,則X是R的唯一候選碼。2024/9/6ftt@49示例關(guān)系模式S(S#,SN,SD,DMN,C#,G)函數(shù)依賴:
(S#,C#) GS#
SN,(S#,C#) SNS#SD,(S#,C#) SDSD
DMN 候選碼:(S#,C#)2024/9/6ftt@50函數(shù)依賴集等價定義如果G+=F+,就說函數(shù)依賴集F覆蓋G(F是G的覆蓋,或G是F的覆蓋),或F與G等價。2024/9/6ftt@51最小函數(shù)依賴集定義如果函數(shù)依賴集F滿足下列條件,則稱F為一個極小函數(shù)依賴集。亦稱為最小依賴集或最小覆蓋。(1)F中任一函數(shù)依賴的右部僅含有一個屬性。(2)F中不存在這樣的函數(shù)依賴X→A,使得F與F-{X→A}等價。(3)F中不存在這樣的函數(shù)依賴X→A,X有真子集Z使得F-{X→A}∪{Z→A}與F等價。2024/9/6ftt@52最小函數(shù)依賴集示例例.對于關(guān)系模式S<U,F(xiàn)>,其中:
U={SNO,SDEPT,DMN,CNAME,G},
F={SNO→SDEPT,SDEPT→DMN,(SNO,CNAME)→G}設(shè)F’={SNO→SDEPT,SNO→DMN,SDEPT→DMN,
(SNO,CNAME)
→G,(SNO,SDEPT)→SDEPT}F是最小覆蓋,而F’不是。因為:F’—{SNO→MN}與F’等價;
F’—{(SNO,SDEPT)→SDEPT}也與F’等價。2024/9/6ftt@53范式定義關(guān)系模式滿足的確定約束條件稱為范式,根據(jù)滿足約束條件的級別不同,范式由低到高分為1NF,2NF,3NF,BCNF,4NF,5NF等。不同的級別范式性質(zhì)不同。關(guān)系模式的規(guī)范化:把一個低一級的關(guān)系模式分解為高一級關(guān)系模式的過程。1NF2NF3NF4NFBCNF5NF各種范式之間存在聯(lián)系:2024/9/6ftt@54范式第一范式(1NF)部分函數(shù)依賴與第二范式(2NF)傳遞函數(shù)依賴與第三范式(3NF)主屬性的不良依賴與BC范式(BCNF)多值依賴與第四范式(4NF)(了解)2024/9/6ftt@55第一范式(1NF)1NF的定義:如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R∈1NF。關(guān)系中每一分量不可再分,即屬性不能再分,是屬性項而不是屬性組。即不能以集合、序列等作為屬性值。第一范式是對關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。教工號教工名所在部門工資基本工資補貼工資005001王武管理學(xué)院
800.00500.00005002張三計算機學(xué)院
900.00600.002024/9/6ftt@561NF(續(xù))例1:A1,A2,A3,…,Ak,…,An
Ak1Ak2例2:工資(工號,姓名,工資(基本工資,年績津貼,煤電補貼))不滿足1NF的關(guān)系稱為非規(guī)范化關(guān)系。關(guān)系數(shù)據(jù)模型不能存儲上兩個例子(非規(guī)范化關(guān)系),在關(guān)系數(shù)據(jù)庫中不允許非規(guī)范化關(guān)系的存在。轉(zhuǎn)化方法:
1)A1,A2,A3,…,Ak1,Ak2,…,An 2)工資(工號,姓名,基本工資,津貼,獎金)2024/9/6ftt@571NF(續(xù))分量是否需要再分,與具體應(yīng)用有關(guān)。如果用到值的一部分,則需要進一步分割。
如果只是查詢出生日期,則它滿足1NF;如果查詢兩人生日是否相同,則只比較月、日,需要將生日分解,就不滿足1NF。如果比較兩人的生肖呢?姓名生日王軍68.7.10張立69.7.10李明80.3.28姓名年月日王軍687.10張立697.10李明803.282024/9/6ftt@58第二范式(2NF)關(guān)系模式S(S#,SN,SD,DMN,C#,G)不良特性插入異常:如果學(xué)生沒有選課,關(guān)于他的個人信息及所在系的信息就無法插入刪除異常:如果刪除學(xué)生的選課信息,則有關(guān)他的個人信息及所在系的信息也隨之刪除了更新異常:如果學(xué)生轉(zhuǎn)系,若他選修了k門課,則需要修改k次數(shù)據(jù)冗余:如果一個學(xué)生選修了k門課,則有關(guān)他的所在系的信息重復(fù)2024/9/6ftt@59S#C#GSDDMNSSNS的主碼是:(S#,C#)關(guān)系模式S(S#,SN,SD,DMN,C#,G)2024/9/6ftt@602NF(續(xù))定義若R
1NF,且每個非主屬性完全依賴于碼,則稱R是第二范式,簡記為2NF。
消除非主屬性對碼的部分依賴。若關(guān)系模型H包含的每一關(guān)系模式都是2NF的,則稱該關(guān)系模型是2NF的?!?NF∈1NF。2024/9/6ftt@612NF(續(xù))如S(S#,SN,SD,DMN,C#,G),S2NF,因為
改造非主屬性有兩種,一種完全依賴于碼,一種部分依賴于碼。將S分解為: SC(S#,C#,G) S_SD(S#,SN,SD,DMN)快速熱身關(guān)系模式R(A,B,C,D),碼為AB,給出它的一個函數(shù)依賴集,使得R屬于1NF而不屬于2NF。(S#,C#) SN(S#,C#)SD2024/9/6ftt@62例1:
SCT(SNO,CNO,CN,GRADE,TNAME,BDATE,SALARY)
F={(SNO,CNO)→GRADE,CNO→CN,CNO→TNAME,
TNAME→BDATE,TNAME→SALARY}非2NF存在問題:1.數(shù)據(jù)冗余;2.插入,刪除異常3.修改麻煩。原因:非主屬性部分依賴于侯選關(guān)鍵字,關(guān)鍵字是一個元組區(qū)別其它元組的依賴,同時也是一個元組賴以存在的依據(jù)。分解:SC(SNO,CNO,GRADE),
CT(CNO,CN,TNAME,BDATE,SALARY)例2:
R=(ABCD,{AB→C,C→D})
R為2NF2NF(續(xù))2024/9/6ftt@63第三范式(3NF)S_SD(S#,SN,SD,DMN)不良特性插入異常:如果系中沒有學(xué)生,則有關(guān)系的信息就無法插入刪除異常:如果學(xué)生全部畢業(yè)了,則在刪除學(xué)生信息的同時有關(guān)系的信息也隨之刪除了更新異常:如果學(xué)生轉(zhuǎn)系,不但要修改SD,還要修改DMN,如果換系主任,則該系每個學(xué)生元組都要做相應(yīng)修改數(shù)據(jù)冗余:每個學(xué)生都存儲了所在系的系主任的信息2024/9/6ftt@643NF(續(xù))S_SD(S#,SN,SD,DMN)
因為有S#SD,SDDMN則S_SD
3NF,改造 將S分解為 STUDENT(S#,SN,SD) DEPT(SD,DMN)快速熱身 關(guān)系模式R(A,B,C,D),碼為AB,給出它的一個函數(shù)依賴集,使得R屬于2NF而不屬于3NF。S_SDS#SDDMN2024/9/6ftt@653NF(續(xù))定義關(guān)系模式R<U,F>中,若不存在這樣的碼X,屬性組Y及非主屬性Z(ZY),使得下式成立,X
Y,Y
Z,Y
X
則稱R是第三范式,簡記為R3NF。消除非主屬性對碼的傳遞依賴。若關(guān)系模型R包含的每一關(guān)系模式都是3NF的,則稱該關(guān)系模型是3NF的。定理:一個3NF的關(guān)系(模式)必定是2NF的(3NF∈2NF∈1NF)。2024/9/6ftt@663NF(續(xù))例1:
CT(CNO,TNAME,BDATE,SALARY)
存在問題:(1)不能存放不開課的教師
(2)教師信息和課程數(shù)一樣多原因:存在傳遞函數(shù)依賴
CT(CNO,TNAME,BDATE,SALARY)非3NF分解:
C(CNO,TNAME),
T(TNAME,BDATE,SALARY)
屬于3NF。
2024/9/6ftt@67BC范式(BCNF)例1.STC(S#,T#,C#)假設(shè)每一教師只教一門課。每門課由若干教師教,但某一學(xué)生選定某門課,就確定了一個固定的教師??傻煤瘮?shù)依賴:T#
C#,(S#,C#)T#,(S#,T#)C#(S,C)和(S,T)都可以作為候選碼。S,T,C都是關(guān)系的主屬性。STC∈3NFT→C,即T也屬決定屬性集,可是T只是主屬性,它既不是候選碼,也不包含候選碼。SCTSTCSTC2024/9/6ftt@68BCNF(續(xù))STC仍然不是一個理想的關(guān)系模式不良特性插入異常:如果沒有學(xué)生選修某位老師的任課,則該老師擔任課程的信息就無法插入刪除異常:刪除學(xué)生選課信息,會刪除掉老師的任課信息更新異常:如果老師所教授的課程有所改動,則所有選修該老師課程的學(xué)生元組都要做改動數(shù)據(jù)冗余:每位學(xué)生都存儲了有關(guān)老師所教課程的信息癥由主屬性對碼的不良依賴:主屬性C依賴于T,即主屬性C部分依賴于碼2024/9/6ftt@69BCNF(續(xù))解決方法:采用投影分解法,將STC分解為兩個關(guān)系模式:ST(S,T),碼:(S,T)TC(T,C),碼:TSCTSTCSTCSTSTTCTC2024/9/6ftt@70BCNF(續(xù))定義關(guān)系模式R<U,F>中,對于屬性組X、Y,若X
Y且YX時X必含有碼,則R<U,F>
BCNF
如STC(S#,T#,C#),STCBCNF,因為T#C#,而T#不含有碼BCNF的關(guān)系模式所具有的性質(zhì)所有非主屬性都完全函數(shù)依賴于每個候選碼。所有主屬性都完全函數(shù)依賴于每個不包含它的候選碼。沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。2024/9/6ftt@71BCNF(續(xù))3NF與BCNF的關(guān)系定理:BCNF滿足3NF(BCNF∈3NF∈2NF∈1NF)。如果R∈3NF,且R只有一個候選碼,則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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村土地租賃及流轉(zhuǎn)合同模板
- 體育賽事UPS電源蓄電池租賃及智能監(jiān)控系統(tǒng)服務(wù)合同(二零二五)
- 《設(shè)備維修管理》課件
- 《高等數(shù)學(xué)基本概念》課件
- 《苗圃生產(chǎn)與管理》課件-3-1播種繁殖技術(shù)
- 《軟飲料熱殺菌工藝》課件
- 《寶潔的創(chuàng)新營銷》課件
- 企業(yè)人力資源規(guī)劃
- 靈活用工與遠程工作模式的興起
- 家庭與社會支持學(xué)校體育發(fā)展策略
- T-CSUS 69-2024 智慧水務(wù)技術(shù)標準
- 2025年護理質(zhì)量與安全管理工作計劃
- 湖南大學(xué) 嵌入式開發(fā)與應(yīng)用(張自紅)教案
- 地下商業(yè)街的規(guī)劃設(shè)計
- 長安大學(xué)《畫法幾何與機械制圖一》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024-2030年全球及中國低密度聚乙烯(LDPE)行業(yè)需求動態(tài)及未來發(fā)展趨勢預(yù)測報告
- 2024年新華東師大版七年級上冊數(shù)學(xué)全冊教案(新版教材)
- 醫(yī)院物業(yè)管理制度
- 新版高中物理必做實驗?zāi)夸浖捌鞑?(電子版)
- 初中數(shù)學(xué)思維訓(xùn)練雙十字相乘法因式分解練習100道及答案
- (正式版)QC∕T 625-2024 汽車用涂鍍層和化學(xué)處理層
評論
0/150
提交評論