




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章范式理論目錄本章要點●數據庫規(guī)范化問題的提出和主要內容●函數依賴●關系模式的分解●關系模式的范式
教學目標●了解數據庫規(guī)范化問題的產生和規(guī)范化的主要內容●掌握函數依賴的相關概念●熟悉關系模式的分解●掌握關系模式的范式的概念及規(guī)范化過程6.1關系數據庫設計中存在的問題示例: 考慮為管理職工的工資信息而設計一個關系模式。問題:麻煩!好麻煩!!!插入異常:如果沒有職工具有8級工資,則8級工資的工資數額就難以插入。刪除異常:如果僅有職工趙明具有4級工資,如果將趙明刪除,則有關4級工資的工資數額信息也隨之刪除了。數據冗余:職工很多,工資級別有限,每一級別的工資數額反復存儲多次。更新異常:如果將5級工資的工資數額調為620,則需要找到每個具有5級工資的職工,逐一修改。6.1關系數據庫設計中存在的問題問題:麻煩!好麻煩!!!插入異常:①元組插不進去;②插入一個元組卻要求插入多個元組。刪除異常:①刪除時刪掉了其他信息;②刪除一個元組卻刪除了多個元組。更新異常:更新一個元組卻要求更新多個元組。 數據冗余:同一個數據在系統(tǒng)中多次重復出現(xiàn)。6.1關系數據庫設計中存在的問題解決之道:分解!再分解!!!
原來數據庫設計可以如此簡單!職工表級別表快速熱身:它有哪些問題?學生關系模式S(學號,姓名,系別,班主任,課程號,成績)上表(關系模式)存在的缺陷:1、數據重復、冗余。
2、新增學生或課程,若未選課,則無法插入記錄,因為(學號,課程號)為主鍵。
3、如果有學生退學,則需將相關信息全部刪除,導致課程信息可能丟失??焖贌嵘恚核心男﹩栴}?學生關系模式S(學號,姓名,系別,班主任,課程號,成績)6.1關系數據庫設計中存在的問題改進的關系模式6.1關系數據庫設計中存在的問題在數據庫中,數據之間存在著密切地聯(lián)系。在數據庫技術中,把數據之間存在的聯(lián)系稱為“數據依賴”。在數據庫規(guī)范化設計中,設計人員地一個職責就是把數據依賴找出來。函數依賴是基本的一種依賴。6.2函數依賴(FunctionalDependency)
回顧:函數——熟悉的概念。
Y=f(x):x和Y之間數量上的對應關系。給定x值,Y值與之對應。稱x函數決定Y,或Y函數依賴于x。在關系數據庫中討論函數或函數依賴注重的是語義上的關系。如:省=f(城市)Y=f(x)函數依賴:任給R(U),U為屬性集,x、y為U的子集,如果對于x的每個值,y有唯一確定的值與之對應,則稱x決定y,或y函數依賴于x。記為:x→y。例1:關系模式Student(Sno,Sname,Ssex,Sage,Sdept)
中,Sno函數決定Sname和Sdept
,或Sname和Sdept函數依賴于Sno,記為
Sno->Sname,Sno->Sdept
6.2函數依賴注:函數依賴是屬性間的一種聯(lián)系6.2函數依賴
建立一個描述學校教務的數據庫: 學生的學號(Sno)、所在系(Sdept) 系主任姓名(Mname)、課程名(Cname) 成績(Grade)單一的關系模式:Student<U、F>U={
Sno,Sdept,Mname,Cname,Grade}⑴根據學號可以確定學生的姓名;⑵一個系有若干學生,但一個學生只屬于一個系;⑶一個系只有一名主任;⑷一個學生可以選修多門課程,每門課程有若干學生選修;⑸每個學生所學的每門課程都有一個成績。
根據如下描述寫出依賴關系:SNo→SNameSNo→SDeptSDept→MName(SNo,CName)→ScoreF={SNo→SName,SNo→SDept,SDept→MName,(SNo,CName)→Score}例2:一個學校數據庫中的唯一關系模式Student(U,F),其中U={Sno,Sdept,Mname,Cname,Grade}F={Sno->Sdept,Sdept->Mname,(Sno,Cname)->Grade}SnoCnameGradeSdeptMname插入異常不能插入一個沒有學生的系刪除異常刪除某系的一個學生時(如畢業(yè))會刪除系的相關信息數據冗余太大系主任出現(xiàn)的次數和該系學生選課總數相同Why?某些數據依賴引起的!分解為三個關系模式Student(Sno,Sdept,Sno->Sdept);SC(Sno,Cname,Grade,(Sno,Cname)->Grade);Dept(Sdept,Mname,Sdept->Mname);Mname:系主任完全函數依賴:若函數依賴XY成立,且X是能夠推出Y的最小集合,即不存在X的真子集Z,使ZY成立,則稱Y完全函數依賴于X,簡稱Y完全依賴于X,記做,否則稱Y部分函數依賴于X,簡稱Y部分依賴于X,記做例:(SNo,CName)→SNameSNo→SName(SNo,CName)→Score【例】有一關系模式S(學號,姓名,系名稱,出生年月)。在S中存在如下完全函數依賴:學號系名稱,學號出生年月通常記為學號→系名稱,學號→出生年月FF若無重名還存在學號←→姓名函數依賴【例】有一關系模式SC(學號,課程號,成績,教師編號)。
在SC中,(學號,課程號)成績(學號,課程號)→教師編號(相當于X→Y)
課程號→教師編號(相當于X’→Y)F因此(學號,課程號)教師編號P傳遞函數依賴:若XY,YZ,并且Y不能推出X,Z不是Y的真子集,則稱Z傳遞依賴于X。例
關系Std(Sno,Sdept,Mname)中,有SnoSdept,SdeptMname,Sno
Mname
傳遞舉例:【例】關系模式R(學號,姓名,出生年月,系編號,系負責人)在此關系模式中有如下函數依賴:學號→系編號(相當于X→Y)
系編號→學號(相當于Y→X)
系編號→系負責人(相當于Y→Z)因此,在R中存在傳遞函數依賴學號系負責人。T關系模式S(S#,SName,SDept,mname,C#,G)主碼:(S#,C#)函數依賴: (S#,C#)G S#
SName
,(S#,C#)
SName
S#SDept
,(S#,C#)
SDept
SDept
mname
6.2函數依賴練習檢驗:A→C?C→A?AB→D?對于給出具體數據的表格,在判斷時要看:當自變量字段取相同值時,對應的因變量的值是否也取相同的值。如果是,則是正確的。ABCDa1b1c1d1a1b2c1d2a2b2c2d2a2b3c2d3a3b3c2d46.2函數依賴練習找出可能的函數依賴。ABC123423533有一個關于學生選課、教師任課的關系模式:
R(S#,SNAME,C#,GRADE,CNAME,TNAME,TAGE)
屬性分別表示學生學號、姓名、選修課程的課程號、成績、課程名、任課教師姓名和年齡等意義。 *如果規(guī)定,每個學號只能有一個學生姓名,每個課程號只能決定一門課程,那么可寫出哪些形式的FD?
S#→SNAME C#→CNAME(S#,C#)→GRADEC#→(CNAME,TNAME,TAGE)TNAME→TAGE*每個學生每學一門課程,有一個成績,那么可寫出什么形式的FD?*還寫出其他什么形式的FD?6.2函數依賴練習6.2函數依賴練習設關系模式R(A,B,C,D),在R的關系中,屬性值間有這樣的聯(lián)系:(1)A值與B值有一對多的聯(lián)系,即每個A值有多個B值與之聯(lián)系,而每個B值只有一個A值與之聯(lián)系;(2)C值與D值之間有一對一聯(lián)系,即每個C值只有一個D值與之聯(lián)系,每個D值只有一個C值與之聯(lián)系。試根據這些規(guī)則寫出相應的函數依賴。根據條件(1),有:B→A根據條件(2),有:C→D和D→C6.3函數依賴候選碼:若關系中的某一屬性組的值能唯一的標識一個元組,而其任何真子集都不能再標識,則稱該屬性組為候選碼。簡單的說候選碼就是沒有被選為主碼的主屬性,當一個關系有多個屬性可以唯一標示時,就選取一個屬性或者屬性組為主碼,剩下的屬性或屬性組就稱為候選碼.主屬性:包含在每一個候選碼中的屬性,稱作主屬性。工人(工號,身份證號,姓名,性別,部門).顯然工號和身份證號都能夠唯一標示這個關系,所以都是主屬性,我們選取工號為主碼,那么身份證號就是候選碼,反之,我們選擇身份證號為主碼,也可以讓工號為候選碼.
包含在任何一個候選鍵中的屬性,叫主屬性(PrimeAttribute)。不包含在任何主鍵中的屬性稱為非主屬性(NonprimeAttribute),或非鍵屬性(Non-keyAttribute)。主碼,簡單地說,在一個關系表中主碼能夠唯一地標識每一個元組。也就是說,元組在主碼屬性上是不能有重復的。例如,把學生表的學號當主碼的話,就不能有兩個學號是一樣的學生。主碼是一個屬性或屬性組。候選碼,一個關系表里只能有一個主碼,成為主碼的條件是:能夠唯一地標識每一個元組。凡是達到這個條件的屬性,都是候選碼。主碼就是從候選碼里選出來的。主屬性,當主碼只有一個屬性時,那主屬性自然是主碼了。當主碼是一個屬性組時,這個屬性組包含的屬性都是主屬性。換一種說法,非主屬性就是除開主碼以外的屬性。外碼:屬性或屬性組X不是關系模式R的碼(既不是主碼也不是候選碼),但X是另一個關系模式的碼,則稱X是R的外部碼,也稱外碼(Foreignkey)。如在SC(Sno,Cno,Grade)中,Sno不是碼,但Sno是關系模式S(Sno,Sdept,Sage)的碼,則Sno是關系模式SC的外部碼
主碼與外部碼提供了一個表示關系間聯(lián)系的手段。createtable
表名(列名數據類型
[,列名數據類型]…… [,primarykey(列名[,列名]…)] [,foreignkey
(列名[,列名]…)
references
表名(列名[,列名]…)])主碼外碼6.3范式6.3關系規(guī)范化關系數據庫范式理論是數據庫設計的一種理論指南和基礎,其既作為數據庫設計優(yōu)劣的判斷依據,也可預測數據庫系統(tǒng)可能出現(xiàn)的問題?!胺妒健笔菙祿煸O計過程中將要依據的準則,數據庫結構必須滿足這些準則,這些準則被稱為規(guī)范化形式;在數據庫設計過程中,對數據庫進行檢查和修改并使之符合范式的過程叫規(guī)范化。范式按照規(guī)范化的級別分為5種:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第一范式(5NF)。數據庫設計過程中通常需要用到的是前三類范式。6.3關系規(guī)范化定義范式是對關系的不同數據依賴程度的要求。通過模式分解將一個低級范式轉換為若干個高級范式的過程稱作規(guī)范化(概念的純粹化)。2NF3NFBCNF4NF5NF第一范式(1NF)定義 關系中每一分量不可再分。即不能以集合、序列等作為屬性值。S#C#S1{C1,C2,C3}S#C#S1C1S1C2S1C3第一范式(1NF)分量是否需要再分,與具體應用有關。如果用到值的一部分,則需要進一步分割。
如果只是查詢出生日期,則它滿足1NF。
如果查詢兩人生日是否相同,則只比較月、日,需要將生日分解,就不滿足1NF。
姓名生日王軍68.7.10張立69.7.10李明80.3.28姓名年月日王軍687.10張立697.10李明803.28第一范式(1NF)并非所有滿足1NF的模式都是“好”的關系模式。SLC(Sno,Sdept,Sloc,Cno,Grade)SnoGradeCnoSdeptSloc刪除異常刪除某學生的最后一門選修記錄,會刪除該學生的相關信息插入異常無法插入一個尚未選課的學生信息數據冗余太大某學生的Sdept和Sloc出現(xiàn)的次數和該學生選課總數相同Why?Sdept和Sloc對碼的部分依賴第一范式(1NF)
要求每個數據項都不能拆分兩個或兩個以上的數據項。姓名性別工資地址張建兵男2000杭州市上城區(qū)人民路126號,310007孫曉晴女1800杭州市西湖區(qū)濱河路269號,310012姓名性別工資城市地區(qū)街道門牌郵編張建兵男2000杭州上城區(qū)人民路126號310007孫曉晴女1800杭州西湖區(qū)濱河路269號310012將地址字段分為城市、地區(qū)、街道、門牌號和郵政編碼多個字段,以滿足1NF第二范式(2NF)
若關系模式R1NF,并且每一個非主屬性都完全函數依賴于R的碼,則R2NF。2NF是在1NF上消除了可能存在的非主屬性對碼的部分依賴。
若R1NF且(所有候選)碼只有一個屬性,則R2NF。SnoGradeCnoSdeptSloc投影分解SnoGradeCno(a)SC(Sno,Cno,Grade)1NF2NF一定程度上解決了“異?!眴栴}SdeptSlocSno(b)SL(Sno,Sdept,Sloc)SdeptSlocSno第二范式(2NF)快速熱身 關系模式R(A,B,C,D),碼為AB,給出它的一個函數依賴集,使得R屬于1NF而不屬于2NF。第二范式(1NF): 如果一個數據表已滿足1NF,而且該數據表中的任何一個非主鍵字段的數據項都完全函數依賴該數據表的主鍵字段,則滿足2NF。該數據表的主鍵是“項目編號”,“負責人部門”完全依賴于“負責人”,而不取決與“項目編號“項目編號項目名稱客戶名稱負責人負責人部門開工日期結束日期1ABCHHHHDSDSAAADEP12002.02.062003.11.252ABCYYYYWDSDTBBBDEP22001.04.052003.05.113IBMHHSSRRETTTAAADEP12002.06.082002.09.174HPSDFSSERERETAAADEP12001.05.092003.12.30項目編號項目名稱客戶名稱負責人開工日期結束日期1ABCHHHHDSDSAAA2002.02.062003.11.252ABCYYYYWDSDTBBB2001.04.052003.05.113IBMHHSSRRETTTAAA2002.06.082002.09.174HPSDFSSERERETAAA2001.05.092003.12.30負責人負責人部門AAADEP1BBBDEP2將數據表分成“項目表”和“部門表”,以滿足2NF第三范式(3NF)如果關系模式R滿足2NF,并且其任何一個非主屬性都不傳遞函數依賴于任何候選關鍵字,則稱R為第三范式,記為3NF。SnoGradeCno(a)SC(Sno,Cno,Grade)2NFSdeptSlocSno(b)SL(Sno,Sdept,Sloc)Why?存在非主屬性對碼的傳遞函數依賴(Sloc傳遞依賴于Sno)插入異常無法插入一個尚未招生的系刪除異常刪除某系全部學生,則會刪除該系信息數據冗余大某系的住處Sloc重復次數和該系學生數相同投影分解3NFSloc(b)DL(Sdept,Sloc)SdeptSdeptSno(a)SD(Sno,Sdept)3NF快速熱身 關系模式R(A,B,C,D),碼為AB,給出它的一個函數依賴集,使得R屬于2NF而不屬于3NF。第三范式(3NF)
數據表已滿足第2范式,且其任何2個非主鍵字段的數據之間不存在函數依賴關系。員工編號姓名性別基本工資津貼獎金1張建兵男20002004302孫曉晴女1800180350“津貼”字段的數值是“基本工資”的10%,2個字段有依賴關系,不滿足3NF,應刪除“津貼”字段以滿足3NF。bcnf消除主屬性對碼的部分和傳遞依賴4NF是消除非函數依賴的多值依賴盤點6.1問題的提出:
數據冗余修改異常刪除異常插入異常6.2問題的根源:
完全依賴與部分依賴傳遞依賴6.3解決途徑
所謂范式就是符合某一種級別的關系模式的集合。通過分解把屬于低級范式的關系模式轉換為幾個屬于高級范式的關系模式的集合。這一過程稱為規(guī)范化。第一范式(1NF):一個關系模式R的所有屬性都是不可分的基本數據項。第二范式(2NF):關系模式R屬于第一范式,且每個非主屬性都完全函數依賴于鍵碼。第三范式(3NF):關系模式R屬于第一范式,且每個非主屬性都不傳遞依賴于鍵碼。盤點消除決定因素非碼的函數依賴1NF2NF3NF消除非主屬性對碼的部分函數依賴消除非主屬性對碼的傳遞函數依賴盤點一個低一級范式的關系模式,通過模式分解轉化為若干個高一級范式的關系模式的集合,這種分解過程叫作關系模式的規(guī)范化。規(guī)范化的目的是使結構合理,消除存儲異常,使數據冗余盡量小,便于插入、刪除和更新。規(guī)范化的原則是:遵從概念單一化“一事一地”的原則,即一個關系模式描述一個實體或實體間的一種聯(lián)系。規(guī)范的實質就是概念單一化。盤點不好的數據庫設計存在數據冗余,操作異常。函數依賴的分析提供了很好的數據庫設計思路。對數據庫設計過程中初始函數依賴關系的采集是通過理解數據項和企業(yè)的規(guī)則來決定函數依賴的。根據函數依賴找出關系的候選碼、主屬性、非主屬性。不好的數據庫模式的原因是表達函數依賴的方式不妥,通過模式的分解,研究并消除屬性之間的部分依賴、傳遞依賴即可得到高級別范式的模式。盤點模式好壞的評價標準是范式,但不能說規(guī)范化程度越高的關系模式就越好。從不同角度的分解都可以得到高級別的范式,一般不是從1NF到2NF,2NF到3NF的。實際使用時,一般是基于3NF進行,但根據實際情況,不達3NF的情況也很常見。1NF消去對主碼的部分函數依賴后=2NF。2NF消去對主碼的傳遞函數依賴后=3NF。bcnf消除主屬性對碼的部分和傳遞依賴4NF是消除非函數依賴的多值依賴范式規(guī)范化的步驟:1、找到候選碼2、找到非主屬性3、判斷范式級別4、分解例題:有表格sc(sno,sname,sdept,mname,cno,cname,grade),判斷其滿足第幾范式,并將其分解成滿足3NF解答:1、候選碼(sno,cno)2、找到非主屬性(sname,sdept,mname,cname,grade)3、(sno,cno)→sname
sno→sname
(sno,cno)→sdept
sno→sdept
(sno,cno)→mname
sno→mname
(sno,cno)→cname
cno→cname
(sno,cno)→grade(sno,cno)→grad
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華東師范大學《風景園林設計實驗古典園林景觀設計》2023-2024學年第二學期期末試卷
- 武漢工程大學郵電與信息工程學院《立體設計》2023-2024學年第二學期期末試卷
- 南京師范大學泰州學院《大學美育》2023-2024學年第二學期期末試卷
- 南昌航空大學《電路(下)》2023-2024學年第二學期期末試卷
- 河南檢察職業(yè)學院《造型基礎(工設)》2023-2024學年第二學期期末試卷
- 河源廣東河源紫金縣專門學校駐校教官招聘7人筆試歷年參考題庫附帶答案詳解
- 山東農業(yè)大學《組成原理與接口技術》2023-2024學年第二學期期末試卷
- 山西體育職業(yè)學院《聯(lián)合創(chuàng)作預案》2023-2024學年第二學期期末試卷
- 中國礦業(yè)大學(北京)《基礎造型》2023-2024學年第二學期期末試卷
- 河南2025年河南省工業(yè)學校招聘20人筆試歷年參考題庫附帶答案詳解-1
- 森林質量精準提升項目(2024年度)作業(yè)設計
- 北師大版小學數學五年級下冊同步課時練習試題含答案(全冊)
- 戰(zhàn)馬魂(2023年重慶A中考語文試卷記敘文閱讀題及答案)
- 2024年全國職業(yè)院校技能大賽中職組(法律實務賽項)考試題庫-下(多選、判斷題)
- 區(qū)塊鏈應用操作員技能大賽考試題庫大全-下(多選、判斷題)
- 二 《“友邦驚詫”論》(同步練習)解析版
- 施工技術交底(電氣安裝)
- 污水處理廠TOT項目招標文件模板
- 勞工及道德體系法律法規(guī)清單
- 倉儲物流中心物業(yè)管理服務費報價單
- 2024年哈爾濱科學技術職業(yè)學院單招職業(yè)適應性測試題庫及答案解析
評論
0/150
提交評論