版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章關(guān)系模式的規(guī)范化設(shè)計(jì)
主要內(nèi)容:本章討論關(guān)系模式的規(guī)范化設(shè)計(jì)。這章將從數(shù)據(jù)庫邏輯設(shè)計(jì)中如何構(gòu)造一個(gè)好的數(shù)據(jù)庫模式這一問題出發(fā),闡明了關(guān)系規(guī)范化理論研究的實(shí)際背景,介紹關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系即函數(shù)依賴的各種形式。介紹規(guī)范化理論,討論各種范式及可能存在的插入、刪除等問題,并直觀地描述解決辦法。
25.1問題提出前面的章節(jié)已經(jīng)介紹了數(shù)據(jù)庫當(dāng)中涉及到的基本概念,關(guān)系模型的三個(gè)部分(關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性)以及關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。 但是有一個(gè)很基本的問題沒有提及,就是針對(duì)一個(gè)具體的問題,應(yīng)該構(gòu)造幾個(gè)關(guān)系模式,每個(gè)關(guān)系由哪些屬性組成,各屬性之間的依賴關(guān)系及其對(duì)關(guān)系模式性能的影響等。 這就是關(guān)系數(shù)據(jù)庫邏輯設(shè)計(jì)的問題。本章主要來討論實(shí)體內(nèi)部屬性與屬性之間的數(shù)據(jù)關(guān)聯(lián),目標(biāo)就是要設(shè)計(jì)一個(gè)“好”的數(shù)據(jù)庫。3關(guān)系模型原理的核心內(nèi)容就是規(guī)范化概念。
規(guī)范化是把數(shù)據(jù)庫組織成在保持存儲(chǔ)數(shù)據(jù)完整性的同時(shí)最小化冗余數(shù)據(jù)的結(jié)構(gòu)的過程。 規(guī)范化的數(shù)據(jù)庫必須符合關(guān)系模型的范式規(guī)則。范式可以防止在使用數(shù)據(jù)庫時(shí)出現(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)實(shí)世界屬性間相互聯(lián)系的抽象,是數(shù)據(jù)內(nèi)在的性質(zhì),是語義的體現(xiàn)。如教師姓名和地址之間,每一個(gè)教師都有個(gè)確定的地址,意味著:
教師編號(hào)確定了,地址就確定了.地址依賴于教師編號(hào)。
5數(shù)據(jù)依賴的類型函數(shù)依賴(FunctionalDependency,簡記為FD)多值依賴(MultivaluedDependency,簡記為MVD)其他6數(shù)據(jù)依賴對(duì)關(guān)系模式的影響“好”的模式:不會(huì)發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡可能少“不好”原因:由存在于模式中的某些數(shù)據(jù)依賴引起的解決方法:通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴75.2.2函數(shù)依賴函數(shù)依賴(functiondependency)是最基本的一種數(shù)據(jù)依賴,也是設(shè)計(jì)關(guān)系模式時(shí)應(yīng)著重考慮的因素.-平凡函數(shù)依賴與非平凡函數(shù)依賴-完全函數(shù)依賴與部分函數(shù)依賴-傳遞函數(shù)依賴函數(shù)依賴定義5.1設(shè)R(U)是屬性集U上的一個(gè)關(guān)系模式。X和Y是U的子集。若對(duì)于R(U)中任意一個(gè)可能關(guān)系r,r中不存在有兩個(gè)元組,它們在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é)號(hào))?X是自變量,自變量確定了,Y的值也就確定了城市=f(省)學(xué)號(hào)=f(系名)√9一個(gè)關(guān)系模式由五部分組成,即它是一個(gè)五元組:描述為:R(U,D,dom,F)。其中:(1)R是關(guān)系名;(2)U是一組屬性,即組成R的全部屬性的集合;(3)D為域的集合,即屬性取值范圍的集合;(4)dom為U與D之間的映象;(5)F是屬性組U上的一組函數(shù)依賴。
說明:由于域的定義對(duì)關(guān)系模式設(shè)計(jì)關(guān)系不大,(3)和(4)往往可以忽略。10術(shù)語和符號(hào)如果X→Y,但Y不是X的子集,則稱X→Y是非平凡的函數(shù)依賴。如果X→Y
,但Y是X的子集,則稱X→Y為平凡的函數(shù)依賴。說明:平凡函數(shù)依賴對(duì)于任一關(guān)系模式都是必然成立的。因此,一般討論的都是非平凡的函數(shù)依賴。例:在關(guān)系選修(學(xué)號(hào),課程號(hào),成績)中,(學(xué)號(hào),課程號(hào))→成績(學(xué)號(hào),所在系)→所在系非平凡依賴平凡依賴11術(shù)語和符號(hào)(續(xù))如果X→Y,則X稱作決定因素或決定屬性集。 如:學(xué)號(hào)→所在系,則學(xué)號(hào)稱作決定因素。如果X→Y,并且Y→X,則可記作X←→Y。如果Y不函數(shù)依賴于X,則記作
。12定義5.2在R(U)中,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X’,都有,
則稱Y對(duì)X完全函數(shù)依賴,記作若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對(duì)X部分函數(shù)依賴,記作。13例題(學(xué)號(hào),課程號(hào))→課程名(學(xué)號(hào),課程號(hào))→學(xué)分(學(xué)號(hào),課程號(hào))→成績部分函數(shù)依賴部分函數(shù)依賴完全函數(shù)依賴[例]在成績表SC(Sno,Cno,Credit,Grade)中,Sno是學(xué)號(hào),Cno是課程號(hào),Credit是學(xué)分,Grade是成績。14定義5.3在R(U)中,如果X→Y,Y→Z,且Y不是X的子集,Z不是Y的子集(非平凡的函數(shù)依賴),則稱Z對(duì)X傳遞函數(shù)依賴。記為:說明:如果Y→X,即X←→Y,則Z直接依賴于X。[例]:在關(guān)系Std(Sno,Sdept,Mname)中,Sno是學(xué)號(hào),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的候選鍵。若候選鍵多于一個(gè),則選定其中的一個(gè)為主鍵(Primarykey)。 含在任何一個(gè)候選鍵中的屬性,叫做主屬性(Primeattribute)。 不包含在任何鍵中的屬性稱為非主屬性(Nonprimeattribute)。 最簡單的情況:單個(gè)屬性是鍵。 最極端的情況:整個(gè)屬性組是鍵,稱為全鍵(All-key).
16定義5.6關(guān)系模式R中屬性或?qū)傩越MX并非R的鍵,但X是另一個(gè)關(guān)系模式的鍵,則稱X是R的外部鍵(Foreignkey)也稱外鍵。如在SC(Sno,Cno,Grade)中,Sno不是碼,但Sno是關(guān)系模式S(Sno,Sdept,Sage)的碼,則Sno是關(guān)系模式SC的外碼。主鍵與外部鍵提供了一個(gè)表示關(guān)系間聯(lián)系的手段。175.3規(guī)范化的關(guān)系模式 范式是符合某一種級(jí)別的關(guān)系模式的集合。關(guān)系數(shù)據(jù)庫中的關(guān)系必須滿足一定的要求。滿足不同程度要求的為不同范式。范式的種類: 第一范式(1NF),第二范式(2NF),第三范式(3NF) BC范式(BCNF),第四范式(4NF),第五范式(5NF)18各種范式之間的關(guān)系195.3.1第一范式1NF的定義 定義5.7如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則R∈1NF說明:第一范式是對(duì)關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。但是滿足第一范式的關(guān)系模式并不一定是一個(gè)好的關(guān)系模式20例如,在表1,籍貫含有省、市/縣兩項(xiàng),出現(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é)號(hào),Sdept為學(xué)生的系別,Sloc為學(xué)生住處,假設(shè)每個(gè)系的學(xué)生住在同一個(gè)地方,Cno為課程號(hào),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ù)依賴,虛線表示部分函數(shù)依賴23一個(gè)“非2NF”的關(guān)系模式Sno(學(xué)號(hào))Sdept(系別)Sloc(學(xué)生住處)Cno(課程號(hào))G(成績)S1電子商務(wù)10號(hào)樓180S1電子商務(wù)10號(hào)樓290S1電子商務(wù)10號(hào)樓375S2計(jì)算機(jī)20號(hào)樓185S2計(jì)算機(jī)20號(hào)樓382S3外語15號(hào)樓288S4會(huì)計(jì)30號(hào)樓58624S-L-C不是一個(gè)“好”的關(guān)系模式(1)插入異常 沒有選課的學(xué)生記錄插不進(jìn)去,因?yàn)镃no是主碼的一部分,主碼不能為空。(2)刪除異常 刪除選課記錄會(huì)將學(xué)生信息也一同刪掉。即不該刪除的信息也刪除掉了。(3)數(shù)據(jù)冗余度大 系別和學(xué)生住處會(huì)重復(fù)存放。如一個(gè)學(xué)生選修了10門課程,那么他的Sdept和Sloc的值就要重復(fù)存儲(chǔ)10次。(4)修改復(fù)雜 如某個(gè)學(xué)生從電子商務(wù)系轉(zhuǎn)到外語系,本來只需要修改此學(xué)生的Sdept值。但因?yàn)殛P(guān)系模式SLC中還含有系的住處Sloc屬性,學(xué)生轉(zhuǎn)系將同時(shí)改變住處,因此還必須修改Sloc的值。如果該學(xué)生選修了3門課,由于Sdept和Sloc的值重復(fù)存放了3次,當(dāng)數(shù)據(jù)更新時(shí)必須無遺漏的修改3個(gè)元組中全部Sdept和Sloc的值,這就造成了修改的復(fù)雜化。25“不好”原因
分析該例,可見有2種非主屬性,一是G,它對(duì)碼(Sno,Cno)是完全函數(shù)依賴。另一種是Sdept和Sloc,它們都是部分函數(shù)依賴于碼(Sno,Cno)。解決方法
用投影分解把S-L-C分解為兩個(gè)關(guān)系模式,以消除這些部分函數(shù)依賴
SC(Sno,Cno,G)
S-L(Sno,Sdept,Sloc)26“分解”以后的函數(shù)依賴圖:關(guān)系模式SC的碼為(Sno,Cno)關(guān)系模式S-L的碼為Sno這樣非主屬性對(duì)碼都是完全函數(shù)依賴27定義5.8若R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于鍵,則R∈2NF。第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求實(shí)體的非主屬性完全函數(shù)依賴于主鍵,不存在非主屬性對(duì)主鍵的部分函數(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ù)依賴?yán)簩W(xué)生成績表(課程號(hào),學(xué)號(hào),姓名,成績)是否滿足2NF?為什么?不滿足2NF,因?yàn)槌煽円蕾囉冢ㄕn程號(hào),學(xué)號(hào))而姓名只依賴于學(xué)號(hào),因此存在部分函數(shù)依賴29解決辦法:把此關(guān)系分解為如下兩個(gè)表:
學(xué)生:
(學(xué)號(hào),姓名);
選課:
(學(xué)號(hào),課程號(hào),成績)
這樣的數(shù)據(jù)庫表是符合第二范式的30采用投影分解法將一個(gè)1NF的關(guān)系分解為多個(gè)2NF的關(guān)系,可以在一定程度上減輕原1NF關(guān)系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度大、修改復(fù)雜等問題。但是,將一個(gè)1NF關(guān)系分解為多個(gè)2NF的關(guān)系,并不能完全消除關(guān)系模式中的各種異常情況和數(shù)據(jù)冗余。315.3.3第三范式定義5.9若R∈2NF,且每一個(gè)非主屬性都不傳遞函數(shù)依賴于鍵,則R∈3NF。說明:若R∈3NF,則每一個(gè)非主屬性既不部分依賴于鍵也不傳遞依賴于鍵。若R∈3NF,則若R∈2NF; 反之不成立。32【例5-6】2NF關(guān)系模式S-L(Sno,Sdept,Sloc)中函數(shù)依賴:
由于Sno→Sdept
Sdept→Sloc
可得:,即S-L中存在非主屬性對(duì)鍵的傳遞函數(shù)依賴,因此33解決方法 采用投影分解法,把S-L分解為兩個(gè)關(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)系。假定:每個(gè)級(jí)別對(duì)應(yīng)不同的工資。請(qǐng)問該關(guān)系是否屬于3NF?3NF總結(jié):
不存在傳遞函數(shù)依賴職工號(hào)姓名級(jí)別工資001張三技41500002李四技61200傳遞依賴關(guān)系:職工號(hào)->級(jí)別->工資36解決辦法:把此關(guān)系分解為如下兩個(gè)表:
這樣的數(shù)據(jù)庫表是符合第三范式的職工號(hào)姓名級(jí)別001張三技4002李四技6級(jí)別工資技41500技61200第三范式——消除了非主屬性對(duì)鍵的傳遞函數(shù)依賴375.3.6規(guī)范化小結(jié)關(guān)系數(shù)據(jù)庫的規(guī)范化理論是數(shù)據(jù)庫邏輯設(shè)計(jì)的工具。一個(gè)關(guān)系只要其分量都是不可分的數(shù)據(jù)項(xiàng),它就是規(guī)范化的關(guān)系,但這只是最基本的規(guī)范化。規(guī)范化程度可以有多個(gè)不同的級(jí)別。規(guī)范化的目的:盡量消除插入異常、刪除異常,修改復(fù)雜、數(shù)據(jù)冗余基本思想:逐步消除數(shù)據(jù)依賴中不合適的部分實(shí)質(zhì):概念的單一化(“一事一地”原則)38關(guān)系模式的規(guī)范化過程是通過對(duì)關(guān)系模式的分解來實(shí)現(xiàn)的。把低一級(jí)的關(guān)系模式分解為若干個(gè)高一級(jí)的關(guān)系模式。說明:這種分解不是唯一的。關(guān)系模式規(guī)范化的基本步驟39不能說規(guī)范化程度越高的關(guān)系模式就越好在設(shè)計(jì)數(shù)據(jù)庫模式結(jié)構(gòu)時(shí),必須對(duì)現(xiàn)實(shí)世界的實(shí)際情況和用戶應(yīng)用需求作進(jìn)一步分析,確定一個(gè)合適的、能夠反映現(xiàn)實(shí)世界的模式上面的規(guī)范化步驟可以在其中任何一步終止40規(guī)范化程度過低的關(guān)系不一定能夠很好地描述現(xiàn)實(shí)世界,可能會(huì)存在插入異常、刪除異常、修改復(fù)雜、數(shù)據(jù)冗余等問題。一個(gè)低一級(jí)范式的關(guān)系模式,通過模式分解(投影)方法可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式集合,這種過程就叫關(guān)系模式的規(guī)范化。規(guī)范化的方式是進(jìn)行模式分解。415.5模式分解
模式分解:把低一級(jí)的關(guān)系模式分解為若干個(gè)高一級(jí)的關(guān)系模式。 模式分解的方法并不是唯一的。只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價(jià),分解方法才有意義。 三種模式分解“等價(jià)”的定義:
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分解為三個(gè)關(guān)系模式:
SN(Sno)
SD(Sdept)
SO(Sloc)2.S-L分解為下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 拋荒整治協(xié)議合同
- 2024年生物制藥試劑定制生產(chǎn)合同樣本2篇
- 2025年云南貨運(yùn)資格證題庫在線練習(xí)
- 2025年黃岡貨運(yùn)從業(yè)資格證考試模擬
- 2025年貴港b2貨運(yùn)資格證全題
- 2024年度生物制藥研發(fā)委托技術(shù)合同范本3篇
- 2024年環(huán)保項(xiàng)目實(shí)施方案保密協(xié)議
- 2024年版綜合性勞動(dòng)協(xié)議范本版
- 2025年北京貨運(yùn)資格證考試70題
- 《工程制圖與CAD(軌道交通)》課件-鐵路線路平面圖認(rèn)識(shí)
- 松果體區(qū)腫瘤護(hù)理
- 《施工現(xiàn)場安全防護(hù)標(biāo)準(zhǔn)化防高墜篇》測試附有答案
- 流動(dòng)資金貸款管理辦法培訓(xùn)1
- 血管瘤護(hù)理措施
- 智能穿戴行業(yè)發(fā)展趨勢
- 公共場所的肺結(jié)核消毒措施
- 圓及其在生活中的應(yīng)用
- 春節(jié)晚宴策劃方案1
- 如何制作一個(gè)簡易的動(dòng)物細(xì)胞模型
- 2024年便攜式X光機(jī)行業(yè)分析報(bào)告及未來發(fā)展趨勢
- 騰訊公司營銷策略
評(píng)論
0/150
提交評(píng)論