版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章關(guān)系模式的規(guī)范化設(shè)計
主要內(nèi)容:本章討論關(guān)系模式的規(guī)范化設(shè)計。這章將從數(shù)據(jù)庫邏輯設(shè)計中如何構(gòu)造一個好的數(shù)據(jù)庫模式這一問題出發(fā),闡明了關(guān)系規(guī)范化理論研究的實際背景,介紹關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系即函數(shù)依賴的各種形式。介紹規(guī)范化理論,討論各種范式及可能存在的插入、刪除等問題,并直觀地描述解決辦法。
25.1問題提出前面的章節(jié)已經(jīng)介紹了數(shù)據(jù)庫當(dāng)中涉及到的基本概念,關(guān)系模型的三個部分(關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性)以及關(guān)系數(shù)據(jù)庫的標準語言。 但是有一個很基本的問題沒有提及,就是針對一個具體的問題,應(yīng)該構(gòu)造幾個關(guān)系模式,每個關(guān)系由哪些屬性組成,各屬性之間的依賴關(guān)系及其對關(guān)系模式性能的影響等。 這就是關(guān)系數(shù)據(jù)庫邏輯設(shè)計的問題。本章主要來討論實體內(nèi)部屬性與屬性之間的數(shù)據(jù)關(guān)聯(lián),目標就是要設(shè)計一個“好”的數(shù)據(jù)庫。3關(guān)系模型原理的核心內(nèi)容就是規(guī)范化概念。
規(guī)范化是把數(shù)據(jù)庫組織成在保持存儲數(shù)據(jù)完整性的同時最小化冗余數(shù)據(jù)的結(jié)構(gòu)的過程。 規(guī)范化的數(shù)據(jù)庫必須符合關(guān)系模型的范式規(guī)則。范式可以防止在使用數(shù)據(jù)庫時出現(xiàn)不一致的數(shù)據(jù),并防止數(shù)據(jù)丟失。 關(guān)系模型的范式有第一范式、第二范式、第三范式、BCNF范式、第四范式等多種。45.2數(shù)據(jù)依賴 數(shù)據(jù)依賴是關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系。這種約束關(guān)系是通過屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間的相關(guān)聯(lián)系,它是現(xiàn)實世界屬性間相互聯(lián)系的抽象,是數(shù)據(jù)內(nèi)在的性質(zhì),是語義的體現(xiàn)。如教師姓名和地址之間,每一個教師都有個確定的地址,意味著:
教師編號確定了,地址就確定了.地址依賴于教師編號。
5數(shù)據(jù)依賴的類型函數(shù)依賴(FunctionalDependency,簡記為FD)多值依賴(MultivaluedDependency,簡記為MVD)其他6數(shù)據(jù)依賴對關(guān)系模式的影響“好”的模式:不會發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡可能少“不好”原因:由存在于模式中的某些數(shù)據(jù)依賴引起的解決方法:通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴75.2.2函數(shù)依賴函數(shù)依賴(functiondependency)是最基本的一種數(shù)據(jù)依賴,也是設(shè)計關(guān)系模式時應(yīng)著重考慮的因素.-平凡函數(shù)依賴與非平凡函數(shù)依賴-完全函數(shù)依賴與部分函數(shù)依賴-傳遞函數(shù)依賴函數(shù)依賴定義5.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。8函數(shù)依賴Y=f(X)函數(shù)Y=sin(X)Y=X+1Y=X2+2X+1省=f(城市)系名=f(學(xué)號)?X是自變量,自變量確定了,Y的值也就確定了城市=f(省)學(xué)號=f(系名)√9一個關(guān)系模式由五部分組成,即它是一個五元組:描述為:R(U,D,dom,F)。其中:(1)R是關(guān)系名;(2)U是一組屬性,即組成R的全部屬性的集合;(3)D為域的集合,即屬性取值范圍的集合;(4)dom為U與D之間的映象;(5)F是屬性組U上的一組函數(shù)依賴。
說明:由于域的定義對關(guān)系模式設(shè)計關(guān)系不大,(3)和(4)往往可以忽略。10術(shù)語和符號如果X→Y,但Y不是X的子集,則稱X→Y是非平凡的函數(shù)依賴。如果X→Y
,但Y是X的子集,則稱X→Y為平凡的函數(shù)依賴。說明:平凡函數(shù)依賴對于任一關(guān)系模式都是必然成立的。因此,一般討論的都是非平凡的函數(shù)依賴。例:在關(guān)系選修(學(xué)號,課程號,成績)中,(學(xué)號,課程號)→成績(學(xué)號,所在系)→所在系非平凡依賴平凡依賴11術(shù)語和符號(續(xù))如果X→Y,則X稱作決定因素或決定屬性集。 如:學(xué)號→所在系,則學(xué)號稱作決定因素。如果X→Y,并且Y→X,則可記作X←→Y。如果Y不函數(shù)依賴于X,則記作
。12定義5.2在R(U)中,如果X→Y,并且對于X的任何一個真子集X’,都有,
則稱Y對X完全函數(shù)依賴,記作若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴,記作。13例題(學(xué)號,課程號)→課程名(學(xué)號,課程號)→學(xué)分(學(xué)號,課程號)→成績部分函數(shù)依賴部分函數(shù)依賴完全函數(shù)依賴[例]在成績表SC(Sno,Cno,Credit,Grade)中,Sno是學(xué)號,Cno是課程號,Credit是學(xué)分,Grade是成績。14定義5.3在R(U)中,如果X→Y,Y→Z,且Y不是X的子集,Z不是Y的子集(非平凡的函數(shù)依賴),則稱Z對X傳遞函數(shù)依賴。記為:說明:如果Y→X,即X←→Y,則Z直接依賴于X。[例]:在關(guān)系Std(Sno,Sdept,Mname)中,Sno是學(xué)號,Sdept是系名,Mname是系主任名,有:
Sno→Sdept,Sdept→Mname
Mname傳遞函數(shù)依賴于Sno155.2.4鍵本節(jié)用函數(shù)依賴的概念來定義鍵。 定義5.5設(shè)K為R(U,F(xiàn))中的屬性或?qū)傩越M合,若K→U則K為R的候選鍵。若候選鍵多于一個,則選定其中的一個為主鍵(Primarykey)。 含在任何一個候選鍵中的屬性,叫做主屬性(Primeattribute)。 不包含在任何鍵中的屬性稱為非主屬性(Nonprimeattribute)。 最簡單的情況:單個屬性是鍵。 最極端的情況:整個屬性組是鍵,稱為全鍵(All-key).
16定義5.6關(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)系的手段。175.3規(guī)范化的關(guān)系模式 范式是符合某一種級別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求。滿足不同程度要求的為不同范式。范式的種類: 第一范式(1NF),第二范式(2NF),第三范式(3NF) BC范式(BCNF),第四范式(4NF),第五范式(5NF)18各種范式之間的關(guān)系195.3.1第一范式1NF的定義 定義5.7如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R∈1NF說明:第一范式是對關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。但是滿足第一范式的關(guān)系模式并不一定是一個好的關(guān)系模式20例如,在表1,籍貫含有省、市/縣兩項,出現(xiàn)了“表中有表”的現(xiàn)象,則為非規(guī)范化關(guān)系(不符合“第一范式”),而把籍貫分成省、市/縣兩列,將其規(guī)范化,如表2所示。姓名籍貫省市/縣王洪黑龍江齊齊哈爾李利吉林長春表1不規(guī)范的關(guān)系表2規(guī)范后的關(guān)系長春吉林李利齊齊哈爾黑龍江王洪市/縣省姓名小表不允許表中有表21[例5-6]關(guān)系模式S-L-C(Sno,Sdept,Sloc,Cno,G)其中,Sno為學(xué)生的學(xué)號,Sdept為學(xué)生的系別,Sloc為學(xué)生住處,假設(shè)每個系的學(xué)生住在同一個地方,Cno為課程號,G為學(xué)生的成績。本例中的函數(shù)依賴包括:5.3.2第二范式22關(guān)系模式S-L-C的函數(shù)依賴關(guān)系圖S-L-C滿足第一范式。
S-L-C的碼為(Sno,Cno)非主屬性Sdept和Sloc部分函數(shù)依賴于碼(Sno,Cno)本例中的函數(shù)依賴包括:說明:實線表示完全函數(shù)依賴,虛線表示部分函數(shù)依賴23一個“非2NF”的關(guān)系模式Sno(學(xué)號)Sdept(系別)Sloc(學(xué)生住處)Cno(課程號)G(成績)S1電子商務(wù)10號樓180S1電子商務(wù)10號樓290S1電子商務(wù)10號樓375S2計算機20號樓185S2計算機20號樓382S3外語15號樓288S4會計30號樓58624S-L-C不是一個“好”的關(guān)系模式(1)插入異常 沒有選課的學(xué)生記錄插不進去,因為Cno是主碼的一部分,主碼不能為空。(2)刪除異常 刪除選課記錄會將學(xué)生信息也一同刪掉。即不該刪除的信息也刪除掉了。(3)數(shù)據(jù)冗余度大 系別和學(xué)生住處會重復(fù)存放。如一個學(xué)生選修了10門課程,那么他的Sdept和Sloc的值就要重復(fù)存儲10次。(4)修改復(fù)雜 如某個學(xué)生從電子商務(wù)系轉(zhuǎn)到外語系,本來只需要修改此學(xué)生的Sdept值。但因為關(guān)系模式SLC中還含有系的住處Sloc屬性,學(xué)生轉(zhuǎn)系將同時改變住處,因此還必須修改Sloc的值。如果該學(xué)生選修了3門課,由于Sdept和Sloc的值重復(fù)存放了3次,當(dāng)數(shù)據(jù)更新時必須無遺漏的修改3個元組中全部Sdept和Sloc的值,這就造成了修改的復(fù)雜化。25“不好”原因
分析該例,可見有2種非主屬性,一是G,它對碼(Sno,Cno)是完全函數(shù)依賴。另一種是Sdept和Sloc,它們都是部分函數(shù)依賴于碼(Sno,Cno)。解決方法
用投影分解把S-L-C分解為兩個關(guān)系模式,以消除這些部分函數(shù)依賴
SC(Sno,Cno,G)
S-L(Sno,Sdept,Sloc)26“分解”以后的函數(shù)依賴圖:關(guān)系模式SC的碼為(Sno,Cno)關(guān)系模式S-L的碼為Sno這樣非主屬性對碼都是完全函數(shù)依賴27定義5.8若R∈1NF,且每一個非主屬性完全函數(shù)依賴于鍵,則R∈2NF。第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求實體的非主屬性完全函數(shù)依賴于主鍵,不存在非主屬性對主鍵的部分函數(shù)依賴5.3.2第二范式S-L-C(Sno,Sdept,Sloc,Cno,G)SC(Sno,Cno,G)S-L(Sno,Sdept,Sloc)282NF總結(jié):
所有非主屬性都完全函數(shù)依賴于主鍵,
即:不存在部分函數(shù)依賴例:學(xué)生成績表(課程號,學(xué)號,姓名,成績)是否滿足2NF?為什么?不滿足2NF,因為成績依賴于(課程號,學(xué)號)而姓名只依賴于學(xué)號,因此存在部分函數(shù)依賴29解決辦法:把此關(guān)系分解為如下兩個表:
學(xué)生:
(學(xué)號,姓名);
選課:
(學(xué)號,課程號,成績)
這樣的數(shù)據(jù)庫表是符合第二范式的30采用投影分解法將一個1NF的關(guān)系分解為多個2NF的關(guān)系,可以在一定程度上減輕原1NF關(guān)系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度大、修改復(fù)雜等問題。但是,將一個1NF關(guān)系分解為多個2NF的關(guān)系,并不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。315.3.3第三范式定義5.9若R∈2NF,且每一個非主屬性都不傳遞函數(shù)依賴于鍵,則R∈3NF。說明:若R∈3NF,則每一個非主屬性既不部分依賴于鍵也不傳遞依賴于鍵。若R∈3NF,則若R∈2NF; 反之不成立。32【例5-6】2NF關(guān)系模式S-L(Sno,Sdept,Sloc)中函數(shù)依賴:
由于Sno→Sdept
Sdept→Sloc
可得:,即S-L中存在非主屬性對鍵的傳遞函數(shù)依賴,因此33解決方法 采用投影分解法,把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中不再存在傳遞函數(shù)依賴34S-D的鍵為Sno,D-L的鍵為Sdept35所謂傳遞函數(shù)依賴,指的是如果存在“A→B→C”的決定關(guān)系,則C傳遞函數(shù)依賴于A。例:關(guān)于職工,有如下關(guān)系。假定:每個級別對應(yīng)不同的工資。請問該關(guān)系是否屬于3NF?3NF總結(jié):
不存在傳遞函數(shù)依賴職工號姓名級別工資001張三技41500002李四技61200傳遞依賴關(guān)系:職工號->級別->工資36解決辦法:把此關(guān)系分解為如下兩個表:
這樣的數(shù)據(jù)庫表是符合第三范式的職工號姓名級別001張三技4002李四技6級別工資技41500技61200第三范式——消除了非主屬性對鍵的傳遞函數(shù)依賴375.3.6規(guī)范化小結(jié)關(guān)系數(shù)據(jù)庫的規(guī)范化理論是數(shù)據(jù)庫邏輯設(shè)計的工具。一個關(guān)系只要其分量都是不可分的數(shù)據(jù)項,它就是規(guī)范化的關(guān)系,但這只是最基本的規(guī)范化。規(guī)范化程度可以有多個不同的級別。規(guī)范化的目的:盡量消除插入異常、刪除異常,修改復(fù)雜、數(shù)據(jù)冗余基本思想:逐步消除數(shù)據(jù)依賴中不合適的部分實質(zhì):概念的單一化(“一事一地”原則)38關(guān)系模式的規(guī)范化過程是通過對關(guān)系模式的分解來實現(xiàn)的。把低一級的關(guān)系模式分解為若干個高一級的關(guān)系模式。說明:這種分解不是唯一的。關(guān)系模式規(guī)范化的基本步驟39不能說規(guī)范化程度越高的關(guān)系模式就越好在設(shè)計數(shù)據(jù)庫模式結(jié)構(gòu)時,必須對現(xiàn)實世界的實際情況和用戶應(yīng)用需求作進一步分析,確定一個合適的、能夠反映現(xiàn)實世界的模式上面的規(guī)范化步驟可以在其中任何一步終止40規(guī)范化程度過低的關(guān)系不一定能夠很好地描述現(xiàn)實世界,可能會存在插入異常、刪除異常、修改復(fù)雜、數(shù)據(jù)冗余等問題。一個低一級范式的關(guān)系模式,通過模式分解(投影)方法可以轉(zhuǎn)換為若干個高一級范式的關(guān)系模式集合,這種過程就叫關(guān)系模式的規(guī)范化。規(guī)范化的方式是進行模式分解。415.5模式分解
模式分解:把低一級的關(guān)系模式分解為若干個高一級的關(guān)系模式。 模式分解的方法并不是唯一的。只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價,分解方法才有意義。 三種模式分解“等價”的定義:
1.分解具有無損連接性。(數(shù)據(jù)的完整性)
2.分解要保持函數(shù)依賴。(語義的完整性)
3.分解既要保持函數(shù)依賴,又具有無損連接性。42例【5-17】:S-L(Sno,Sdept,Sloc)
F={Sno→Sdept,Sdept→Sloc,Sno→Sloc}S-L∈2NF分解方法可以有多種:1.S-L分解為三個關(guān)系模式:
SN(Sno)
SD(Sdept)
SO(Sloc)2.S-L分解為下
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教A版安徽省合肥市普通高中聯(lián)盟2023-2024學(xué)年高二上學(xué)期1月期末聯(lián)考數(shù)學(xué)試題
- 武術(shù)說課稿課件
- 基層 工會 課件
- 介紹魯濱遜課件
- 高考地理一輪復(fù)習(xí)第六章自然環(huán)境的整體性和差異性第一節(jié)植被與土壤課件
- 西京學(xué)院《微機原理與接口技術(shù)》2021-2022學(xué)年期末試卷
- 學(xué)管師工作核心說課
- 西京學(xué)院《教師語言藝術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《電機控制技術(shù)》2021-2022學(xué)年期末試卷
- 學(xué)會讀書 課件
- 社區(qū)工作者案件調(diào)解流程
- 2023年度高級會計實務(wù)真題及答案解析
- 學(xué)校監(jiān)控使用安全應(yīng)急預(yù)案
- 南開大學(xué)答辯通用模板
- 汽車構(gòu)造復(fù)習(xí)
- 【酒店人力資源管理問題研究文獻綜述3000字】
- 新版出口報關(guān)單模板
- 國網(wǎng)福建省電力有限公司高校畢業(yè)生招聘筆試真題2021
- 危急值的報告制度與流程
- 月度安全管理綜合考核表
- 兒科學(xué)智慧樹知到課后章節(jié)答案2023年下溫州醫(yī)科大學(xué)
評論
0/150
提交評論