SQLServer教案第03周關(guān)系模式的規(guī)范化設(shè)計_第1頁
SQLServer教案第03周關(guān)系模式的規(guī)范化設(shè)計_第2頁
SQLServer教案第03周關(guān)系模式的規(guī)范化設(shè)計_第3頁
SQLServer教案第03周關(guān)系模式的規(guī)范化設(shè)計_第4頁
SQLServer教案第03周關(guān)系模式的規(guī)范化設(shè)計_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫原理與應(yīng)用一一SQLServer數(shù)據(jù)庫原理與應(yīng)用一一SQLServer2005教案 鄒競授課日期年月曰 第3周 授課形式 講課 授課時數(shù) 4章節(jié)名稱第03章關(guān)系模式的規(guī)范化設(shè)計教學(xué)目的與要求理解函數(shù)依賴、完全函數(shù)依賴、部分函數(shù)依賴、傳遞函數(shù)依賴的概念掌握Armstrong公理系統(tǒng)(自反律、增廣律、傳遞律、合并規(guī)則、偽傳遞規(guī)則、分解規(guī)則)掌握函數(shù)依賴集的閉包和屬性閉包的求法理解最小函數(shù)依賴集的定義,掌握最小函數(shù)依賴集的求法掌握將E-R圖轉(zhuǎn)換成為關(guān)系模式的方法掌握根據(jù)某個關(guān)系的函數(shù)依賴找候選鍵的方法。理解第范式、第—范式、第三范式、 BC范式、第四范式、第五范式的概念掌握將不滿足第三范式的關(guān)系模式進行分解,令分解后的關(guān)系模式滿足第三范式的方法教學(xué)重點第范式、第—范式、第三范式教學(xué)難點根據(jù)某個關(guān)系的函數(shù)依賴找候選鍵的方法教學(xué)方法和手段講授法結(jié)合課堂實例分析討論教學(xué)過程與組織導(dǎo)入新課關(guān)系數(shù)據(jù)庫是以數(shù)學(xué)理論為基礎(chǔ)的。 基于這種理論上的優(yōu)勢,關(guān)系模型可以設(shè)計得較為科學(xué), 關(guān)系操作可以較好地進行優(yōu)化,許多技術(shù)問題可以得到較好地解決。講授新課第三章關(guān)系模式的對范化設(shè)計第01節(jié)關(guān)系模式的設(shè)計問題3.1.1問題的提出設(shè)有一個關(guān)系模式R(U),其中U為由屬性SNO、CNO、TNO、TNAME、TDEPT、和G組成的屬性集合,其中SNO為學(xué)生學(xué)號,CNO為課程號,TNO為任課教師編號,TNAME為任課教師姓名,TDEPT為教師所在系, G為課程成績。該關(guān)系具有如下語義:?1位學(xué)生只有1個學(xué)號,1位教師只有一個教師號,1門課程只有1個課程號;?每位學(xué)生選修的每門課程都有 1個成績;?每門課程只有1位教師任課,每位教師可以擔(dān)任多門課程;?每個教師只能在1個系,每個系可有多個教師;根據(jù)上述語義和常識,可以知道 R的候選鍵:{SNO,CNO}。選定{SNO,CNO}作為主鍵。通過分析關(guān)系模式R(U),我們可以發(fā)現(xiàn)下面2類冋題。第1類問題是數(shù)據(jù)大量冗余,表現(xiàn)在:?每門課程的任課教師的教師編號、姓名必須對選修該門課程的學(xué)生重復(fù) 1次;?每門課程的任課教師所在的系必須對選修該門課程的學(xué)生重復(fù) 1次。第2類冋題是更新出現(xiàn)異常(updateanomalies),表現(xiàn)在:?修改異常(modificationanomalies):修改一門課程的任課教師,或者一門課程由另一位教師開設(shè),就需要修改多個兀組。如果不分修改,部分不修改,就會出現(xiàn)數(shù)據(jù)間的不一致。?插入異常(insertanomalies):由于主鍵中兀素的屬性值不能取空值,如果某系的一位教師不開課或一位教師所開的課程無人選修, 則這位教師的姓名和所屬的系名就不能插入; 如果一門課程列入計劃而目前不開,則有關(guān)這門課的數(shù)據(jù)(CNO、TNAME和TDPT)也無法插入。?刪除異常(deletionanomalies):如果所有學(xué)生都退選一門課,則有關(guān)這門課的其他數(shù)據(jù)(TNAME和TDPT)也將刪除;同樣,如果一位教師因故暫時停開,則這位教師的其他信息 (TDPT,CNO)也將被刪除。3.1.2問題的分析這兩類現(xiàn)象的根本原因在于關(guān)系的結(jié)構(gòu)。 如果在構(gòu)造關(guān)系模式的時候,不從語義上研究和考慮到屬性間的這種關(guān)聯(lián),簡單地將屬性隨意編排在一起,就必然發(fā)生某種沖突,即冗余度水平較高,更新產(chǎn)生異常。解決問題的根本方法就是將關(guān)系模式進行分解,也就是進行關(guān)系的規(guī)范化。3.1.3問題的解決方案在關(guān)系數(shù)據(jù)庫的設(shè)計當中, 不是隨便一種關(guān)系模式設(shè)計方案都是可行的。 數(shù)據(jù)庫中的每一個關(guān)系模式的屬性之間需要滿足某種內(nèi)在的必然聯(lián)系。 因此,設(shè)計一個好的數(shù)據(jù)庫的根本方法是先要分析和掌握屬性間的語義關(guān)聯(lián),然后再依據(jù)這些關(guān)聯(lián)得到相應(yīng)的設(shè)計方案。人們認識到屬性之間一般有 2種依賴關(guān)系,一種是函數(shù)依賴關(guān)系,一種是多值依賴關(guān)系。函數(shù)依賴關(guān)系與更新異常密切相關(guān),多值依賴與數(shù)據(jù)冗余密切聯(lián)系。基于對這兩種依賴關(guān)系不同層面上的具體要求,人們又將屬性之間的聯(lián)系分為若干等級,這就是所謂的關(guān)系的規(guī)范化 (normalization)。解決問題的基本方案就是分析研究屬性之間的聯(lián)系, 按照每個關(guān)系中屬性間滿足某種內(nèi)在語義條件來構(gòu)造關(guān)系。由此產(chǎn)生的一整套有關(guān)理論稱之為關(guān)系數(shù)據(jù)庫的規(guī)范化理論。第02節(jié)函數(shù)依賴3.2.1函數(shù)依賴的概念設(shè)有關(guān)系模式R(A1,A2,,,An),簡記為R(U),其中U={A1,A2,,,An}。設(shè)X、Y是U的子集,r是R的任一具體關(guān)系,r的任意兩個元組門,「2,若「1[X]=r2[X](元組門、「2在X上的屬性值相等)則r1[Y]=r2[丫](元組H、r2在Y上的屬性值相等),則稱X函數(shù)決定Y(或Y函數(shù)依賴于X),記為X宀Y。稱XtY為R的一個函數(shù)依賴(簡稱FD)??梢赃@樣理解:XtY的意思是:在當前值r的兩個不同元組中,如果X值相同,則Y值也相同;或者說,對于X的每一個具體值,都有Y唯一的具體值與之對應(yīng),即Y值由X值決定。例3-1設(shè)有關(guān)系模式R(SNO,SNAME,CNO,SG,CNAME,TNO,TNAME),其中各屬性的含義為:SNO為學(xué)生學(xué)號,SNAME為學(xué)生姓名,CNO為課程號,SG為最終成績,CNAME為課程名。在R的關(guān)系r中,存在著如下函數(shù)依賴:SNOtSNAME(每個學(xué)號只能有1個學(xué)生姓名,SNAME函數(shù)依賴于SNO)CNOtCNAME(每個課程號只能對應(yīng)1門課程名,CNAME函數(shù)依賴于CNO)(SNO,CNO)tSG(每個學(xué)生學(xué)習(xí)一門課只能有 1個最終成績,SG函數(shù)依賴于SNO和CNO)3.2.2函數(shù)依賴的分類(1)完全函數(shù)依賴在關(guān)系模式R(U)中,如果XtY,并且對于X的任意一個真子集X1,X1tY均不成立,則稱Y完全依賴于X。例如:(學(xué)號,課程號)t最終成績部分函數(shù)依賴在關(guān)系模式R(U)中,如果XtY,并且至少存在X的一個真子集X1,使得X1tY成立,則稱Y部分依賴于X。例如:(學(xué)號,課程號)t姓名傳遞函數(shù)依賴在關(guān)系模式R(U)中,如果XtY并且YtZ,則稱Z傳遞依賴于X。例如:學(xué)號t系主任 (學(xué)號t系名,系名T系主任)3.2.3函數(shù)依賴的邏輯蘊涵與推理規(guī)則函數(shù)依賴的邏輯蘊涵設(shè)U為關(guān)系模式R(U,F)的所有屬性的集合,F(xiàn)為屬性集U上的所有函數(shù)依賴的集合, X、丫是U的子集,如果從F能推出函數(shù)依賴XtY,則稱F邏輯蘊涵XtY。函數(shù)依賴的推理規(guī)則前面我們提到由函數(shù)依賴、函數(shù)依賴集 (F)可以推出另外的函數(shù)依賴 (XtY),那么從一個函數(shù)依賴集如何推出另外一個函數(shù)依賴?推理依據(jù)什么規(guī)則呢 ?函數(shù)依賴的推理規(guī)則是W.W.Armstrong1974年首先提出來的,稱為Armstrong公理系統(tǒng),由3條公理和3條推理規(guī)則構(gòu)成。設(shè)有關(guān)系R(U),U是R屬性的集合,F(xiàn)是R上函數(shù)依賴的集合。Armstrong公理系統(tǒng)的3條公理自反律:如果YXU,則F邏輯蘊涵Xty。增廣律:若F邏輯蘊涵Xt丫,且Z5U,貝UF邏輯蘊涵XZtYZ傳遞律:F邏輯蘊涵Xty、Ytz,則F邏輯蘊涵XtZArmstrong公理系統(tǒng)的3條推理規(guī)則合并規(guī)則:F邏輯蘊涵Xty、Xtz,貝UXtYZ。證明:利用增廣律將函數(shù)依賴 XtY、XtZ進行擴充得:XtxyXYtYZ由傳遞律得:XtYZ。偽傳遞規(guī)則:F邏輯蘊涵Xty、WYtz,貝UXWtz。證明:利用增廣律將函數(shù)依賴 XtY進行擴充得:WXtWY,再由WXtWY、WYtZ,根據(jù)傳遞律得: XWtz。分解規(guī)則:F邏輯蘊涵XtY且Z二丫,則F邏輯蘊涵XtZ證明:由ZY根據(jù)自反律得:Yt乙再由XtY、YtZ根據(jù)傳遞律得:XtZ。定理3-1函數(shù)依賴Xty邏輯蘊涵于F的充要條件是:函數(shù)依賴Xty,可根據(jù)F,由Armstrong推理規(guī)則推出。3.2.4函數(shù)依賴集的閉包與屬性閉包設(shè)F是函數(shù)依賴集,F(xiàn)及由F推出的所有函數(shù)依賴(即為F所邏輯蘊含的函數(shù)依賴的集合),稱為函數(shù)依賴集F的閉包,記為F+。一般情況下,F(xiàn)<F+。如果F=F+,則稱F是函數(shù)依賴的完備集。

設(shè)有關(guān)系模式tAi中Ai的屬性集為X的屬性閉包,記作Xf設(shè)有關(guān)系模式tAi中Ai的屬性集為X的屬性閉包,記作Xf+={Ai|Ai?U,Xtai?F+)由公理的自反性可知Xt算法3-1求屬性集閉包輸入:有限的屬性集合Xf+。即:X,因此XXf+。Xf+的算法。輸出:X關(guān)于F的閉包XF+。方法:①置Xf+=的初值為X;②依次掃描輸出:X關(guān)于F的閉包XF+。方法:①置Xf+=的初值為X;②依次掃描則置xf+=xf+uZ;③輸出xf+,算法結(jié)束。例3-2設(shè)有關(guān)系模式(AB)f+。(注:“ABCDE”解:①置F中的每個函數(shù)依賴YtZ,若Y;=XF+且Z二XfR(U,F),其中U={ABCDE},F={ABtC,BtD,CtE,ECtB,ACtB),求為“a,b,c,d,e”的簡寫,其它類同)(AB)f+=ab;(置屬性集閉包(AB)f+初值為{AB})②依次掃描F中的每個函數(shù)依賴:?/ABtC,AB工(AB)f+,C二(AB)f+BtD,B-(AB)f+,D二(AB)F+CtE,C-(AB)f+,E二(AB)f+?/ECtB,EC』(AB)f+,B—(AB)f+?/ACtb,ACm(AB)f+,Bm(AB)f+(AB)f+=(AB)f+uc=abc,掃描下一個函數(shù)依賴(AB)f+=(ab)f+ud=abcd,掃描下一個函數(shù)依賴(AB)f+=(ab)f+ue=abcde,掃描下一個函數(shù)依賴(AB)f+不變,掃描下一個函數(shù)依賴(AB)f+不變,掃描結(jié)束輸出:xf+=abcde即XF+={A,B,C,D,E}3.2.5函數(shù)依賴集的等價和覆蓋(1)函數(shù)依賴集的等價概念設(shè)F和G是兩個函數(shù)依賴集,如果 F+=G+,則稱F和G等價,又稱為F覆蓋G或G覆蓋F。(2)判斷兩個函數(shù)依賴集等價的方法在G上計算Xg+,看是否Y^XG+。若是,則說明XtY?G+,于是繼續(xù)檢查F中的其他依賴,如果全部滿足XtY?G+,則F〈G+。如果在檢查中發(fā)現(xiàn)有一個 XtY不屬于G+,就可以判定FG+不成立,即F和G不等價。如果經(jīng)判斷FG+,則類似地重復(fù)上述做法,判斷是否GF+,如果成立則可斷定F和G等價。定理3-2F+=G+的充分必要條件是F5G+且G5F+。3.2.6函數(shù)依賴集的最小化(1)最小函數(shù)依賴集的定義如果函數(shù)依賴集F同時滿足下列3個條件,則稱F為一個極小函數(shù)依賴集(亦稱為最小依賴集或最小覆蓋),記為Fmin。F中任一函數(shù)依賴的右部都是單屬性。F中的任一函數(shù)依賴Xta,其F-{XtA)與F不等價。F中的任一函數(shù)依賴Xta,其X有真子集Z,F-{XtA}U{ZtA}與F不等價。條件①說明在最小函數(shù)依賴集中的所有函數(shù)依賴都應(yīng)該是 “右端沒有多余屬性”的最簡單的形式;條件②保證了最小函數(shù)依賴集中無多余的函數(shù)依賴; 條件③要求最小函數(shù)依賴集中的每個函數(shù)依賴的左端沒有多余屬性。(2)最小函數(shù)依賴集的求法定理3-3每一個函數(shù)依賴集F均等價于一個極小函數(shù)依賴集 Fm,此Fm稱為F的最小依賴集。算法3-2求最小函數(shù)依賴集的算法(本算法也是對定理 3-3的證明)??梢苑秩綄進行“極小化處理”,找出F的一個最小依賴集:逐一檢查F中各函數(shù)依賴Xty,若Y=A[A2,Ak,k>2,則用{XtAj|j=1,2,,k}取代Xty。逐一檢查F中各函數(shù)依賴Xta,令G=F-{XtA},若A?XG+,則從F中去掉此函數(shù)依賴。逐一取出F中各函數(shù)依賴Xta,設(shè)X=B1B2,Bm,逐一檢查Bi(i=1,2,,,m),如果A?(X-Bi)F+,則以X-Bi取代X。因為對F的每一次改造都保證了改造前后的兩個函數(shù)依賴集等價,所以最后得到的 F就是極小依賴集,并且與原來的 F等價。注意:F的最小依賴集Fm不一定是唯一的,它與對各函數(shù)依賴及Xta中X各屬性的處置有關(guān)。例3-3設(shè)F={Atbc,BtAC,CtA),對F進行極小化處理。解:①根據(jù)分解規(guī)則把 F中的函數(shù)依賴轉(zhuǎn)換成右部都是單屬性的函數(shù)依賴集合,分解后的函數(shù)依賴集仍用F表示:F={AtB,AtC,BtA,BtC,CtA}②去掉F中冗余的函數(shù)依賴:

判斷AtB是否冗余:設(shè):G仁{AtC,BtA,BtC,CtA),得:AG1+=AC?/B-AG1+ ???AtB不冗余判斷AtC是否冗余:設(shè):G2={AtB,BtA,BC,CA),得:AG2+=ABC?/C?Ag2+ 二AtC冗余(以后的檢查不再考慮AtC)判斷Bta是否冗余:設(shè):G3={AtB,BtC,CtA},得:BG3+=BCA?/A?BG3+ ???Bta冗余(以后的檢查不再考慮BtA)判斷BtC是否冗余:設(shè):G4={AtB,CtA},得:BG4+=B?/C-一BG4+ ?BtC不冗余判斷CtA是否冗余:設(shè):G5={AtB,BtC),得:CG5+=CTA七Cg5+ ?-CtA不冗余由于該例中的函數(shù)依賴表達式的左部均為單屬性,因而它不需要進行算法 3-2中第③步的檢查。上述結(jié)果為最小函數(shù)依賴集,用 Fm表示為:Fm={Atb,btC,CtA}例3-4求F={ABtC,Atb,btA}的最小函數(shù)依賴集Fm。解:①將F中的函數(shù)依賴都分解為右部為單屬性的函數(shù)依賴: F已經(jīng)滿足該條件。②去掉F中冗余的函數(shù)依賴:判斷ABtC是否冗余:設(shè):G仁{AtB,BtA},得:(AB)G1+=AB?/C-(AB)g1+ ?-ABtC不冗余判斷AtB是否冗余:設(shè):G2={ABtC,BtA},得:AG2+=A???B'(AB)G2+ ?-AtB不冗余判斷BtA是否冗余。設(shè):G3={ABtC,AtB},得:BG3+=BTA二Bg3+ ?-BtA不冗余經(jīng)過檢驗后的函數(shù)依賴集仍然為 F。去掉各函數(shù)依賴左部冗余的屬性:本題只需考慮 ABtC的情況。方法1:在決定因素中去掉B,若C?AF+,則以AtC代替ABtCo求得:Af+=ABC?/C?AF+ ???以atC代替ABtcFm={AtC,AtB,BtA}方法2:在決定因素中去掉A,若C?BF+,則以BtC代替ABtCo求得:bf+=abc?/C?BF+ ?以Btc代替ABtcFm={BtC,AtB,BtA}(3)極小化算法在數(shù)據(jù)庫設(shè)計中的應(yīng)用在數(shù)據(jù)庫的概念模型設(shè)計中,實體及屬性的冗余可以通過分析確定, 而聯(lián)系的冗余可以通過函數(shù)依賴集的極小化算法查出和消除。利用函數(shù)依賴集最小化算法消除概念模型中的聯(lián)系冗余的步驟為:把E-R圖中的實體、聯(lián)系和屬性符號化:符號化的信息模型比較簡潔,有利于化簡。將實體之間的聯(lián)系用實體主鍵之間的聯(lián)系表示,并轉(zhuǎn)換為函數(shù)依賴表達式。對于1:1聯(lián)系,轉(zhuǎn)化為兩個函數(shù)依賴表達式。例如圖3-1中的1:1聯(lián)系可轉(zhuǎn)化為A.atB.b和B.bTA.b,實體集A、B的主鍵分別為a和boA.aM~<^A_B^^IB.b圖3-1實體間1:1聯(lián)系對于1:n的聯(lián)系,每個聯(lián)系轉(zhuǎn)化為一個函數(shù)依賴表達式, 函數(shù)依賴表達式中的決定因素為聯(lián)系的n方實體集,依賴因素為1方實體集。例如圖3-2中的1:n聯(lián)系可轉(zhuǎn)化為B.btA.a,實體集A、B的主鍵分別為a和b。A.a IB.b圖3-2實體間1:n聯(lián)系對于m:n的聯(lián)系,每個聯(lián)系轉(zhuǎn)化為一個函數(shù)依賴表達式。函數(shù)依賴表達式中的決定因素為相關(guān)實體集的組合,依賴因素為聯(lián)系的屬性(當聯(lián)系無屬性時,依賴因素為聯(lián)系名) 。例如圖3-3可以轉(zhuǎn)化為(A.a,B.b)tCo利用求函數(shù)依賴集的最小化算法進行極小化處理。 處理時應(yīng)把重要的聯(lián)系放在后面, 以免冗余時被消除。重新確定函數(shù)依賴集:設(shè)原函數(shù)依賴表達式集合為 F,最小函數(shù)依賴集為 G,差集為D,則D=F-G。逐一考查D中每一個函數(shù)依賴表達式,根據(jù)實際情況確定是否應(yīng)該去掉。最后得出一組函數(shù)依賴表達式。用新得出的函數(shù)依賴表達式形成新 E-R圖。3.2.4侯選鍵(1) 候選建的定義與求法設(shè)有關(guān)系模式R(U),F(xiàn)是R上的函數(shù)依賴集,K是U的一個子集。如果F邏輯蘊涵KU,且不存在K的任何真子集Ki使得F邏輯蘊涵 U,則稱K是R的侯選鍵。該定義也可以用F的閉包形式表述如下:設(shè)R(A1,A2,,An)為一關(guān)系模式,F(xiàn)為R所滿足的一組函數(shù)依賴,K為{A1,A2,,An}的一個子集,如果K滿足下列2個條件,則稱K是關(guān)系模式R的候選鍵。KtA1,KtA2,,KtAn均?F+。不存在K的任何真子集Ki,使得K〔tA[、Kita?、,、KitAn?F+。上述定義實際上也就是求關(guān)系模式鍵的方法。侯選鍵常簡稱為鍵或碼。(2) 幾個重要相關(guān)概念主鍵他稱關(guān)鍵字),當侯選鍵多于1個時,可以選中其中的 1個作為主鍵。所有侯選鍵的屬性稱為主屬性。不包含在任何侯選鍵中的屬性稱為非主屬性。例3-5關(guān)系模式T(學(xué)號課程號,教師號,教師姓名,聯(lián)系電話)。在T中存在下列自然的函數(shù)依賴集:F={(學(xué)號,課程號)T教師號,教師號T教師姓名,教師號T聯(lián)系電話}確定侯選鍵、關(guān)鍵字、主屬性、非主屬性。分析:由函數(shù)依賴集F,根據(jù)傳遞規(guī)則可以推出:(學(xué)號,課程號)T教師姓名,(學(xué)號,課程號)T聯(lián)系電話。再根據(jù)自反律可以推出: (學(xué)號,課程號)t(學(xué)號,課程號)進一步根據(jù)增廣律推出:(學(xué)號,課程號)t(學(xué)號,課程號,教師號,教師姓名,聯(lián)系電話)因此(學(xué)號,課程號)是該關(guān)系模式的侯選鍵,并且在這個關(guān)系模式中沒有其他的侯選鍵 ,因此該關(guān)系模式的主屬性:學(xué)號,課程號;非主屬性:教師號,教師姓名。第03節(jié)范式理論第一范式如果關(guān)系模式R的每個屬性都是簡單屬性(不可再細分的簡單項,不是屬性組合或組屬性) ,則稱R屬于第一范式(FirstNormalForm,簡稱為1NF),記為:R?1NF。例3-6關(guān)系模式R(教師號,教師姓名,聯(lián)系方式,課程號,課程名)。其中的聯(lián)系方式由聯(lián)系電話和通訊地址兩列組成,不是簡單屬性,因此 R不屬于1NF,是非規(guī)范化關(guān)系。應(yīng)當把R中的聯(lián)系方式分解為聯(lián)系電話、通訊地址兩個屬性,使 R的每個屬性都是簡單屬性,從而使R屬于1NF。第一范式只要求關(guān)系模式的關(guān)系是標準的二維表,沒有論及關(guān)系模式中所存在的函數(shù)依賴關(guān)系。這種范式是規(guī)范化的關(guān)系模式最基本的要求,是所有范式的基礎(chǔ)。第二范式如果關(guān)系模式R?1NF,且每一個非主屬性完全函數(shù)依賴于 R的某個侯選鍵,則稱R屬于第二范式(簡稱為2NF),記為R?2NF。2NF就是不允許關(guān)系模式的非主屬性與侯選鍵之間的部分函數(shù)依賴。例3-7設(shè)關(guān)系模式R(教師號,教師姓名,聯(lián)系電話,課程號,課程名)中,每位教師只有1個教師號、1個姓名、1個聯(lián)系電話,1個教師號只能給一個教師使用, 1門課程可由多位教師授課。則 R的侯選鍵是(教師號,課程號),即:

(教師號,課程號)t教師姓名(教師號,課程號)t聯(lián)系電話(教師號,課程號)t課程名但教師號、課程號分別是(教師號,課程號)的子集,實際上:教師號t教師姓名教師號T聯(lián)系電話課程號T課程名也就是說在關(guān)系R中存在著非主屬性對侯選鍵的部分依賴。因此關(guān)系 R不是第二范式??紤]將關(guān)系R分解為:R1(教師號,教師姓名,聯(lián)系電話)R2(教師號,課程號,課程名)則由于R1的侯選鍵只有教師號,在R1中不存在非主屬性對侯選鍵的部分函數(shù)依賴 ,因此R1?2NF。第二范式如果關(guān)系模式R?2NF,且每一個非主屬性都不傳遞依賴于某個侯選鍵, 貝U稱R屬于第三范式(簡稱為3NF),記為:R?3NF。例3-8關(guān)系模式S(SNO,SNAME,SAGE,DNO,DNAME)。其中:SNO為學(xué)生學(xué)號,SNAME為學(xué)生姓名,SAGE為學(xué)生年齡,DNO為學(xué)生所在的系號, DNAME為學(xué)生所在系的系名;這個關(guān)系模式中存在的函數(shù)依賴集:F={SNOtNAME,SNOtSAGE,SNOtDNO,DNOtDNAME}在這個關(guān)系模式中,顯然SNOt(SNO,SNAME,SAGE,DNO,DNAME),即SNO是關(guān)系模式的侯選鍵,且是唯一的侯選鍵,并且非主屬性對侯選鍵是完全函數(shù)依賴,不存在非主屬性對侯選鍵的部分函鍵,且是唯一的侯選鍵,并且非主屬性對侯選鍵是完全函數(shù)依賴,不存在非主屬性對侯選鍵的部分函數(shù)依賴。因此,關(guān)系模式依賴推出的,我們稱系名我們考察關(guān)系模式S?2NF,然而SNOtDNAME是由SNOtDNO、DNOt數(shù)依賴。因此,關(guān)系模式依賴推出的,我們稱系名我們考察關(guān)系模式(DNAME)傳遞依賴于學(xué)號(SNO),因此S不屬于第三范式。S的關(guān)系實例,很容易發(fā)現(xiàn)這種關(guān)系中同樣存在著前面提到的數(shù)據(jù)存儲和數(shù)據(jù)操作的弊端。如果我們將上述關(guān)系分解成:S1=(SNO,SNAME,SAGE,DNO)S2=(DNO,DNAME)則S1?3NF,S2?3NF,它們各自的關(guān)系實例克服了存儲上的數(shù)據(jù)冗余,操作上的更新異常、刪除異常、插入異常等問題。說明:我們還可以從直觀的角度來判斷一個關(guān)系模式是否是 3NF。如果關(guān)系模式屬于3NF,那么,不允許關(guān)系模式的屬性之間存在這樣的非平凡函數(shù)依賴 XtY:X不包含侯選鍵,Y是非主屬性。對于例3-8的關(guān)系模式S(SNO,SNAME,SAGE,DNO,DNAME),侯選鍵是SNO,但在它的函數(shù)依賴集F中存在這樣的函數(shù)依賴, DNOtDNAME,而SNO不包含DNO,所以S不屬于3NF。BCNF范式BCNF由Boyce和Codd提出,通常認為是3NF的改進形式。設(shè)R(U,F)是一個關(guān)系模式,X?U,A?U,且X不包含A,如果R?1NF,且對于任意Xta,X都包含了R的一個候選鍵,則稱R滿足Boyce-Codd范式(BCNF),記為R?BCNF。由于BCNF排除了任何屬性對鍵的傳遞依賴和部分依賴, 所以,如果R?BCNF,則必定R?3NF;但是,如果R?3NF,不一定有R?BCNF成立。因此,BCNF比3NF更為嚴格。例3-9設(shè)關(guān)系模式STC(SNO,TNO,CNO)表達了學(xué)生選課信息。其中: SNO為學(xué)生學(xué)號,TNO為教師號,CNO為課程號。規(guī)定每位教師只教 1門課程,1門課程可由多位教師講授,每位學(xué)生的每一門課程只由1位教師授課。因此,對于STC有:TNOtCNO、(CNO,SNO)宀TNOSTC顯然滿足3NF。STC的候選鍵有兩種:①(TNO,SNO)?,②(CNO,SNO)。而函數(shù)依賴TNOtCNO中,TNO顯然沒有包含任何候選鍵。所以,STC不屬于BCNF。如果已經(jīng)設(shè)置了課程,并確定了任課教師,但是還沒有學(xué)生選修, 則教師與課程信息就不能插入,而刪除某個學(xué)生時,連同教師和課程的信息也刪除了??紤]把STC分解為SC(SNO,CNO)、ST(SNO,TNO)兩個關(guān)系模式,貝USC?BCNF、ST?BCNF。一個RDBMS模式中的關(guān)系模式如果都屬于 BCNF,則在函數(shù)依賴的范疇內(nèi), 已經(jīng)實現(xiàn)了徹底的分離,消除了插入、刪除和修改的異常。 3NF的“不徹底”表現(xiàn)在當關(guān)系模式具有多個候選鍵,且這些候選建具有公共屬性時,這些候選鍵可能存在部分函數(shù)依賴和傳遞函數(shù)依賴。3.3.5多值依賴與第四范式(1)多值依賴設(shè)有關(guān)系模式R(U),U是屬性集,X、Y、Z是U的子集,Z=U-X-Y。如果R的任一關(guān)系,對于X的一個確定值,都存在Y的一組值與之對應(yīng),且Y的這組值又與Z中的屬性值不相關(guān),則稱Y多值依賴于X,或稱X多值決定Y,記為XttY。為了說明多值函數(shù)依賴,請觀察下面這張表:公司產(chǎn)品銷售國家IBMPC中國IBMPC德國IBMPC美國IBMNOTEBOOK中國IBMNOTEBOOK德國IBMNOTEBOOK美國ASUSDVDROM中國ASUSDVDROM韓國ASUSNOTEBOOK中國ASUSNOTEBOOK韓國MSI主板日本MSI主板法國在關(guān)系模式R中,對于(公司,銷售國家)的一個值(IBM,中國),有一組產(chǎn)品值{PC,NOTEBOOK}與之對性,這組值僅僅函數(shù)依賴于公司,而與銷售國家無關(guān),于是產(chǎn)品多值函數(shù)依賴于公司, 而和銷售國家無關(guān),即公司tt產(chǎn)品。R的主鍵是(公司,產(chǎn)品,銷售國家),R是ALL-KEY鍵,但是也存在另一種冗余性, 例如ASUS公司新增了一種產(chǎn)品,則必須為 ASUS銷售的每一個國家增加一條記錄,同樣,如果 IBM新增了一個銷售國家,就必須為每個產(chǎn)品增加一條記錄。關(guān)于多值依賴的另一個等價的定義是:設(shè) R(U)是屬性集U上的一個關(guān)系模式,X、Y是U的子集,對于R(U)的任一關(guān)系r,設(shè)t和s是r中的兩個元組,有t[X]=s[X],貝Ur中也存在元組u和v,有①u[X]=v[X]=t[X]=s[X] :②u[Y]=t[Y],u[U-X-Y]=s[U-X-Y]:③v[Y]=s[Y],v[U-X-Y]=t[U-X-Y]則稱Y多值函數(shù)依賴于X,記作Xtt丫。意思是:如果r有兩個元組在屬性X上的值相等,則交換著兩個元組在與X無關(guān)的屬性Y上的值,得到的兩個新元組必定也在 r中。多值依賴具有以下性質(zhì):多值依賴具有對稱性:如果 XnY,貝UXnZ。(Z=U-X-Y)多值依賴中,若XnY且Z工^,則XnY為非平凡的多值依賴, 否則為平凡的多值依賴。函數(shù)依賴可以看作多值依賴的特例:如果 XtY,則XnY。多值依賴與函數(shù)依賴的之間存在以下基本區(qū)別:多值依賴的有效性與屬性集的范圍有關(guān):在關(guān)系模式 R中,函數(shù)依賴XtY的有效性僅僅決定于X、Y這兩個屬性集;在多值依賴中,XttY在U上是否成立,而且要檢查Z的值。因此,即使XttY在V上成立(VU),但在U上不一定成立。多值依賴沒有自反律:如果函數(shù)依賴 XtY在R上成立,則對于任何Y'Y,都有XtY'成立;對于多值依賴XttY,如果在R上成立,卻不一定對于任何 Y'Y都有XttY'成立。(2)第四范式設(shè)R?1NF,如果對于R的每個非平凡多值依賴Xt丫(丫二X),X都含有主屬性,則稱R屬于第四范式(簡稱為4NF),記為R?4NF。4NF限制關(guān)系模式的屬性之間不能有非平凡且非函數(shù)依賴的多值依賴。因為 4NF要求每個非平凡多值依賴XttY,X都含有主屬性,則必然有 XtY,所以4NF所允許的非平凡多值依賴實際上是函數(shù)依賴。顯然,如果 R?4NF,則R?BCNF。簡單來說,如果在關(guān)系數(shù)據(jù)庫的每一張表中, 對于任何一個非平凡多值依賴 Xtt丫(其中丫非空,也不是X的子集,X、Y并未包含該表的全部字段),X都包含了該表的一個候選鍵,則稱該數(shù)據(jù)庫滿足第四范式。例如,上例關(guān)系模式R(公司,產(chǎn)品,銷售國家)就存在非平凡多值依賴:公司tt產(chǎn)品,但是,R是All-Key的,即主屬性為(公司產(chǎn)品,銷售國家),這樣,屬性公司”未包含該模式的主屬性,故R不滿足4NF。如果將R分解為R1(公司產(chǎn)品),R2(公司,銷售國家),則分解后的關(guān)系滿足4NF。例3-10設(shè)關(guān)系模式SPW(SNO,SPN,SWN)表達了學(xué)生的娛樂愛好(如足球)和社會兼職(如家教)信息(其中SNO為學(xué)生學(xué)號,SPN為娛樂愛好,SWN為社會兼職)。由于每個學(xué)生可以有0或多個娛樂愛好和社會兼職,故SNO與SPN、SWN之間是一對多關(guān)系,且SPN與SWN無直接聯(lián)系(即設(shè)SU=(SNO,SPN,SWN),貝USWN=U-SNO-SPN),即有SNOttSPN、SNOttSWN,使得SPW表中可能有數(shù)據(jù)冗余,有大量空值存在。顯然,SPW不屬于4NF。考慮把SPW分解為SP(SNO,SPN)、SW(SNO,SWN)兩個關(guān)系模式,則SP?4NF、SW?4NF。336連接依賴與第五范式(1)連接依賴設(shè)R(U)是屬性集U上的關(guān)系模式,X2、…、Xn是U的子集,且X1UX2U…UXn=U,如果R=R(X1R(X2)I…?I,R(Xn)對R的一切關(guān)系均成立,則稱 R在X1、X2、…、Xn上具有n目依賴連接,記為1 [[Xi][X2]…[Xn]。連接依賴也是一種數(shù)據(jù)依賴,它不能直接從語義中推出,只能從連接運算中反映出來。例3-11設(shè)關(guān)系模式SPW(SNO,SPN,SWN)。設(shè)有關(guān)系SPW,如果將SPW模式分解為SP、PW、WS,并進行sPPW及sPpWWS的自然連接,其操作數(shù)據(jù)及連接結(jié)果如圖3-4。從圖中可以看出,SPW中存在連接依賴「[SP][PW][WS]。

SPWSPPWWSSNOSPNSWNs1p1w2s1p2:SPWSPPWWSSNOSPNSWNs1p1w2s1p2:w1s2p1w1s1p1w1splPWSNOSPNs1p1s1Pp2s2p1SPNSWNp1w2p2w1p1w1SWNSNOw2s1w1s1w1s2SPIPWIWSSNOSPNSWNs1p1w2s1p1w1Ps1p2:w2s1p2w1s2p1w2s2p1w1SNOSPNSWNs1p1w2s1p2w1s2p1w1s1p1w1圖3-4 連接依賴舉例(2)第五范式如果關(guān)系模式R中的每個連接依賴均由 R的候選鍵所隱含(即在連接時,所連接的屬性均為候選鍵),則稱R屬于第五范式(簡稱為5NF),記為R?5NF。例3-11中,因為SPW僅有的候選鍵(SNO,SPN,SWN)不是SPW是3個投影SP、PW、WS自然連接的公共屬性

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論