第四章關系型數(shù)據(jù)庫規(guī)范設計_第1頁
第四章關系型數(shù)據(jù)庫規(guī)范設計_第2頁
第四章關系型數(shù)據(jù)庫規(guī)范設計_第3頁
第四章關系型數(shù)據(jù)庫規(guī)范設計_第4頁
第四章關系型數(shù)據(jù)庫規(guī)范設計_第5頁
已閱讀5頁,還剩122頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四章

關系型數(shù)據(jù)庫規(guī)范設計本章主要內容4.1關系模式的設計問題4.2函數(shù)依賴4.3關系模式的分解特性4.4關系模式的范式SQL數(shù)據(jù)庫的體系結構SQL用戶BaseTableB1ViewV1ViewV2BaseTableB2BaseTableB3BaseTableB4StoredFileS1StoredFileS1StoredFileS1StoredFileS1外模式模式內模式SQL語言支持的關系數(shù)據(jù)庫的三級模式結構S#、SNAME、SDEPT、

C#、CNAME、TIME、

S#、C#、GRADES(S#、SNAME、SDEPT)C(C#、CNAME、TIME)SC(S#、C#、GRADE)……S#SNAMESDEPTC#CNAMETIMEGRADECNAME_SNAME_GRADE(C#,S#,GRADE)4.1關系模式的設計問題對于一個現(xiàn)實問題,它有一個屬性集U,其中每個屬性Ai對應一個值域DOM(Ai),它由屬性集U和U上成立的數(shù)據(jù)完整性約束集組成。關系r是關系模式R(U)的當前值,是一個元組的集合。這里的關系模式和關系一般稱為泛關系模式和泛關系。R(S#、SNAME、SDEPT、C#、CNAME、TIME、S#、C#、GRADE)但是對于許多現(xiàn)實問題,往往R(U)不是恰當?shù)男问剑仨氂靡粋€關系模式的集合p={R1,R2,……Rk}來代替R(U),這里的p稱為數(shù)據(jù)庫模式。對數(shù)據(jù)庫模式的每一個關系模式賦予一個當前值,就得到一個數(shù)據(jù)庫實例(數(shù)據(jù)庫)。S(S#、SNAME、SDEPT)

C(C#、CNAME、TIME)

SC(S#、C#、GRADE)什么是好的數(shù)據(jù)庫設計體現(xiàn)客觀世界的信息無過度的冗余無插入異常無更新復雜無刪除異常4.1關系模式的設計問題4.1關系模式的設計問題TNAMEADDRESSC#CNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n4關系模式R(TNAME,ADDRESS,C#,CNAME)4.1關系模式的設計問題對數(shù)據(jù)庫操作時,會出現(xiàn)以下問題1、數(shù)據(jù)冗余:(數(shù)據(jù)重復存儲:浪費存儲空間,數(shù)據(jù)庫維護困難)如一名教師教多門課程,他的地址要重復多次2、更新異常:如果一個教師教了三門課程,則如果他的地址變了,三個元組的地址信息都要變。若有一個沒變,就會造成地址不唯一,產生錯誤信息。3、插入異常:主鍵為空的記錄不能存在于數(shù)據(jù)庫,導致不能進行插入操作如教師沒有分配教學任務,就不能插入數(shù)據(jù)庫。4.刪除異常:刪除操作后,會引起一些信息的丟失。如一個原有教學任務的教師教師現(xiàn)在沒有教學任務,要把這個教師的所有元組都刪去。這樣就把這個教師的姓名和地址也從數(shù)據(jù)庫中刪去了,不合理。TNAMEADDRESSC#CNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n44.1關系模式的設計問題解決之道:分解!分解!!再分解!!!TNAMEADDRESSt1a1t2a2t3a3TNAMEC#CNAMEt1c1n1t1c2n2t1c3n3t2c4n4t2c5n2t3c6n4分解為兩個模式:R1(TNAME,ADDRESS)R2(TNAME,C#,CNAME)考慮為學生的選課信息而設計一個關系模式。過度冗余——數(shù)據(jù)重復更新異常——更新代價大、可能導致數(shù)據(jù)不一致刪除異?!糠中畔⒌膭h除可能導致信息的丟失插入異常——必須有完整信息怎么分解最佳?4.1關系模式的設計問題4.2函數(shù)依賴(FD,FunctionDependence)y=f(x)y=3x4.2.1函數(shù)依賴定義設有關系模式R(A1,A2,...An)或簡記為R(U),X,Y是U的子集,r是R的任一具體關系,

如果對r的任意兩個元組t1,t2,由t1[X]=t2[X]導致t1[Y]=t2[Y],則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,

記為X→Y。X→Y為模式R的一個函數(shù)依賴。

如S#Sname,(S#,C#)Grade

該定義理解如下:有一張設計好的二維表,X,Y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的X值相等,

那么必有t1行和t2行上的Y值也相等,這就是說Y函數(shù)依賴于X。

比如,有如下二維表

在表中,凡成績相同的,對應的“成績等級”也必是相同的,因此,“成績等級”函數(shù)依賴于"成績"。

但是反過來則不成立。

Notice:

(1)在這張表中,任何一行的關系均應符合函數(shù)依賴的條件,如果有一行不符合函數(shù)依賴的條件,則函數(shù)依賴對于這個關系就不成立。

(2)函數(shù)依賴是否成立是不可證明的,只能通過屬性的含義來判斷.表例學號姓名成績成績等級00001李里77C00002丁力91A00003李小紅85B00004馬琳85B00005王佳怡66D00006胡林70C.....................舉例:

職工號(A) 基本工資(B) 獎金(C) 051 390 50052420 5005339080ABACBACA 4.2.2函數(shù)依賴-幾點說明1.函數(shù)依賴是語義范疇的概念.它反映了一種語義完整性約束,只能根據(jù)語義來確定一個函數(shù)依賴.例如,“姓名”-“年齡”這個函數(shù)依賴只有在沒有同名人的條件下成立,否則,此函數(shù)依賴不成立。2.函數(shù)依賴是指關系R模式的所有關系元組均應滿足的約束條件,而不是關系模式中的某個或某些元組滿足的約束條件。4.2.2函數(shù)依賴-幾點說明3.函數(shù)依賴與屬性間的聯(lián)系類型有關(1)若屬性X和Y之間有“一對一”的聯(lián)系,

則XY,YX,XY.(如不存在同名的學號和姓名)(2)若屬性X和Y之間有“多對一”的聯(lián)系,

則XY,但YX.(3)若屬性X和Y之間有“多對多”的聯(lián)系,

則X與Y之間不存在任何函數(shù)依賴.當確定函數(shù)依賴關系時,可從屬性間的聯(lián)系入手函數(shù)依賴(FD,FunctionDependence)

y=f(x)問:X、Y是誰函數(shù)依賴誰?是X函數(shù)依賴Y?還是Y函數(shù)依賴X?答:Y函數(shù)依賴X(X函數(shù)決定Y)X=1y=3;X=2y=6;y=3x=1;y=6x=2;y=x2X=1y=1;X=-2y=4;y=1x=1orx=-1;y2=x2y=1x=1orx=-1;x=1y=1ory=-1;y=3x問:X、Y是誰函數(shù)依賴誰?是X函數(shù)依賴Y?還是Y函數(shù)依賴X?答:沒有任何函數(shù)依賴關系4.2.2函數(shù)依賴-幾點說明4.如果X→Y,并且Y不是X的子集,則稱X→Y是非平凡的函數(shù)依賴;如果Y是X的子集,則稱X→Y是平凡的函數(shù)依賴;

我們討論的是非平凡的函數(shù)依賴.例如:(S#,SN)

SN是平凡的函數(shù)依賴5.函數(shù)依賴的存在,決定了自然連接的特性設關系模式R(X,Y,Z),X,Y,Z為不相交的屬性集合,若X→Y,X→Z,

則有R(X,Y,Z)=R(X,Y)R(X,Z)

即用它們的自然連接可復員原關系模式舉例:關系模式S(S#,SN,C#,G,CN,TN,TA)主鍵:(S#,C#)函數(shù)依賴:S#SN(每個學生只能有一個姓名)C#CN(每個課程號只能對應一門課程)TNTA(每個教師只能有一個年齡)(S#,C#)

G(每個學生學習一門課程只能有一個成績)

4.2.2函數(shù)依賴ABC142356346738910說明關系是否滿足下列函數(shù)依賴:ABACABCCAACB不滿足AB,因為(3,5,6)和(3,4,6),t1(A)=t2(A)=3,但是t1(B)=5而t2(A)=4ACABCCA4.2.3鍵定義超鍵:設X為關系R的屬性或屬性組,U為R的元組若XU,則稱X為R的超鍵。候選鍵:設X為R的超鍵,若X中不含多余屬性,則稱X為R的候選鍵。主鍵:若關系R有多個候選鍵,則可以從中選定一個作為R的主鍵。主屬性:包含在任何一個候選鍵中的屬性,稱作主屬性,不包含在任何鍵中的屬性稱為非主屬性。全鍵:關系模式的鍵由整個屬性組構成。 如(S#,C#,T#)4.2.3鍵候選鍵的兩個性質:1、標識的唯一性:對于R(U)中的每一元組,X的值確定后,該元組就相應確定了.即:X函數(shù)決定該關系的所有其他屬性(X→R)

XA1A2…An S#SD,SS,SBirthday2、無冗余性:X是屬性組的情況下,X的任何真子集都不能唯一標識該元組

即:不存在X的真子集Y,使得YA1A2…An

(S#,C#)Grade4.2.3鍵舉例:設關系模式R(XYZ),已知FD是XY,YZ,那么可以推出XXYZ也在F+中,但X的真子集(此處是空值)不可能函數(shù)決定XYZ,所以X是模式R的鍵。職工關系模式ZG(工號,姓名,年齡,性別,工資)工號(工號,姓名,年齡,性別,工資),工號沒有真子集,所以工號是鍵。(工號,姓名)(工號,姓名,年齡,性別,工資)

,但不是鍵。4.3關系模式的分解特性我們可以通過把一個關系模式的分解成多個關系模式,以解決它的插入、刪除和更新操作所帶來的一些問題。為了在分解要保證原來模式所滿足的特性,要求分解處理具有無損聯(lián)接和保持函數(shù)依賴。4.3.1模式分解中存在的問題設有關系R=A1A2…An,R1,R2…Rn是R的子集,R=R1UR2U…Rk,設有關系模式R1,R2…Rk的集合用p表示,p={R1,R2…Rk}。用p代替R的過程稱為關系模式的分解。P稱為R的一個分解,也稱為數(shù)據(jù)庫模式。R稱為泛關系模式,R對應的當前值稱為泛關系。數(shù)據(jù)庫對應的當前值σ稱為數(shù)據(jù)庫實例,它是由數(shù)據(jù)庫模式中的每一個關系模式的當前值組成,σ={r1,r2…rk}來表示。4.3.1模式分解中存在的問題實際上,關系模式的分解,不僅僅是屬性集合的分解,它是對關系模式上的函數(shù)依賴集,以及關系模式的當前值的分解的具體表現(xiàn)。4.3.1模式分解中存在的問題R(A,B,C)ABC112221AB1122BC1221ABC112221∏AB(R)∏BC(R)∏AB(R)∏BC(R)R(A,B,C)ABC111212AB1121BC1112ABC111112211212∏AB(R)∏BC(R)∏AB(R)∏BC(R)有損分解無損分解4.3.1模式分解中存在的問題關系模式的分解有幾個衡量標準:分解具有無損連接分解保持函數(shù)依賴分解既要保持依賴,又要具有無損聯(lián)接達到更高級范式4.3.2無損聯(lián)接無損連接分解定義

關系模式R,分解成關系模式p={R1,R2…Rk},F是R上的一個函數(shù)依賴集。如果對R中滿足F的每一個關系r都有:r=∏R1(r)∏R2(r)∏Rk(r)則稱此分解p是相對于F是“無損連接分解”。即r為它在Ri上的投影的自然聯(lián)接?!荝i(r)表示關系r在模式Ri的屬性上的投影。4.3.2無損聯(lián)接的測試將R(A,B,C)分解為兩個模式R1(A,B)和R2(B,C)ABCa1b1c1a2b1c2a7b3c3a8b4c4a9b5c5ABa1b1a2b1a7b3a8b4a9b5BCb1c1b1c2b3c3b4c4b5c5R(A,B,C)關系r1關系r2關系4.3.2無損聯(lián)接的測試ABCa1b1c1a2b1c2a7b3c3a8b4c4a9b5c5R(A,B,C)關系ABCa1b1c1a1b1c2a2b1c1a2b1c2a7b3c3a8b4c4a9b5c5R1(A,B)R2(B,C)所以把R(A,B,C)分解為兩個模式R1(A,B)和R2(B,C)不是具有無損聯(lián)接性的分解。4.3.2無損聯(lián)接的測試如果一個模式分解不是無損聯(lián)接分解,那么分解不能通過自然聯(lián)接運算恢復,因此要求分解時利用屬性間的函數(shù)依賴的性質,才能保證此分解具有無損聯(lián)接性。

問題提出:在關系模式的規(guī)范化處理過程中,不僅要知道一個給定的函數(shù)依賴集合,還要知道由給定的函數(shù)依賴集合所蘊涵(或推導出)的所有函數(shù)依賴的集合。為此,需要一個有效而完備的公理系統(tǒng),Armstrong公理系統(tǒng)即是這樣的一個系統(tǒng)。Armstrong公理系統(tǒng)

蘊含定義:設F是R上的函數(shù)依賴集合,X→Y是R的一個函數(shù)依賴。如果R的一個關系實例滿足F,則必然滿足X→Y,則稱F邏輯蘊含(Imply)X→Y。

Armstrong公理:為從已知的函數(shù)依賴推導出其他的函數(shù)依賴,Armstrong提出了一套推理規(guī)則,稱為Armstrong公理(Armstrong’sAxioms)。

閉包定義:函數(shù)依賴集合F所邏輯蘊含的函數(shù)依賴的全體,稱為F的閉包(Closure),記為F+。

(2)增廣律(Augmentation)

:若X→Y,ZU,則XZ→YZ。

(1)自反律(Reflexivity)

:若YXU,則X→Y。

(3)傳遞律(Transitivity)

:若X→Y和Y→Z,則X→Z。引理1:Armstrong公理是正確的,即:如F成立,則由F根據(jù)Armstrong公理所推導的函數(shù)依賴總是成立的。引理2:如下三條推理規(guī)則是正確的:公理包含如下三條推理規(guī)則:

(2)

偽傳遞規(guī)則(PseudoTransitivity):如果X→Y,YW→Z,則XW→Z。

(1)

合并規(guī)則(Union):如果X→Y,X→Z,則X→YZ。

(3)

分解規(guī)則(Decomposition):如果X→Y,ZY,則X→Z?;颍喝鏧→YZ,則X→Y,X→Z。F的閉包F+

F={XY,YZ},F+計算是NP完全問題,XA1A2...An

F+={Xφ,Yφ,Zφ,XYφ,XZφ,YZφ,XYZφ,XX,YY,ZZ,XYX,XZX,YZY,XYZX,XY,YZ,XYY,XZY,YZZ,XYZY,XZ,YYZ,XYZ,XZZ,YZYZ,XYZZ,XXY, XYXY,XZXY,XYZXY,XXZ,XYYZ,XZXZ,XYZYZXYZ,XYXZ,XZXY,XYZXZ,XZYZ,XYXYZ,XZXYZ,XYZXYZ}S(學號,系號,宿舍樓號)F={學號→系號,系號→宿舍樓號}顯然,S不屬于3NF。分解0:S01(學號),S02(系號,宿舍樓號)S(學號,系號,宿舍樓號)F={學號→系號,系號→宿舍樓號}顯然,S不屬于3NF。顯然分解0是不可行的。分解0: S01(學號),S02(系號,宿舍樓號)

分解1:S11(學號,宿舍樓號),S12(系號,宿舍樓號)分解2:S21(學號,系號),S22(學號,宿舍樓號)分解3:S31(學號,系號),S32(系號,宿舍樓號)顯然,都屬于3NF(事實上,都屬于BCNF、4NF)。學號系號宿舍樓號S1D1AS2D2BS3D2BS4D3A學號宿舍樓號S1AS2BS3BS4A系號宿舍樓號D1AD2BD3A投影操作(分解1:S11,S12)S學號宿舍樓號系號宿舍樓號S1AD1AS1AD2BS1AD3AS2BD1AS2BD2BS2BD3AS3BD1AS3BD2BS3BD3AS4AD1AS4AD2BS4AD3A學號系號宿舍樓號S1D1AS1D3AS2D2BS3D2BS4D1AS4D3A學號系號宿舍樓號S1D1AS2D2BS3D2BS4D3ASS’S≠S’結論:分解1不是好的分解3個或更多的關系模式的情況下要判別分解是否具有無損連接性要比較復雜的算法。2個則很容易。定理1 U1∩U2→U1-U2∈F+ 或 U1∩U2→U2-U1∈F+定理2如果FDX→Y在模式R上成立,且X∩Y=?,那么R分解成ρ

={R-Y,XY}是無損分解,例如:S(學號,系號,宿舍樓號)F={學號→系號,系號→宿舍樓號}X→Y,ρ

={R-Y,XY}S1(學號,宿舍樓號)S2(學號,系號)分解1:S11(學號,宿舍樓號),S12(系號,宿舍樓號)U1∩U2=宿舍樓號,U1-U2=學號(不成立)或U1∩U2=宿舍樓號,U1-U2=系號(不成立)(F={學號→系號,系號→宿舍樓號},F(xiàn)+)分解2:S21(學號,系號),S22(學號,宿舍樓號)U1∩U2=學號,U1-U2=系號。 顯然,U1∩U2→U1-U2。結論:分解2具有無損連接性. 但是分解2也不是好的方案。假設學生S3從D2系轉到D3系,要修改兩個關系,否則數(shù)據(jù)庫中的信息會不一致。這是由于分解得到的兩個關系模式不是互相獨立造成的。系號→宿舍樓號沒投影在同一個關系中。于是我們有要求模式分解保持函數(shù)依賴這條等價標準。結論:分解2雖然是無損分解,但丟失了函數(shù)依賴系號→宿舍樓號學號宿舍樓號S1AS2BS3BS4A學號系號S1D1S2D2S3D2S4D3分解3:S31(學號,系號),S32(系號,宿舍樓號)F={學號→系號,系號→宿舍樓號}1:保持函數(shù)依賴的。2:根據(jù) U1∩U2→U1-U2∈F+ 或 U1∩U2→U2-U1∈F+U1∩U2=系號,U2-U1=宿舍樓號這一分解也具有無損連接性結論:分解3是一個好的分解4.3.3保持函數(shù)依賴的分解保持關系模式分解等價的另一個重要條件是關系模式的函數(shù)依賴集在分解后仍在數(shù)據(jù)庫模式中保持不變。即關系模式R到={R1,R2…Rk}的分解,應使函數(shù)依賴集F,被F在這些Ri上的投影蘊涵。F在AB,AC,DB,CD上的投影分別為{A→B},{A→C},?,{D→C}丟失了B→C,A→D,所以此分解不保持FD設關系模式R(A,B,C,D)F是R上成立的FD集,F(xiàn)={A→B,B→C,A→D,D→C},

={AB,AC,BD,CD}是R的一個分解。4.3.3保持函數(shù)依賴的分解4.3.4模式分解與模式等價問題模式分解的兩個特性實際上涉及兩個數(shù)據(jù)庫模式的等價問題,這種等價數(shù)據(jù)等價和依賴等價兩個方面。數(shù)據(jù)等價是指兩個數(shù)據(jù)庫實例應表示同樣的信息內容,用無損分解衡量。依賴等價是指兩個數(shù)據(jù)庫模式應有相同的依賴集閉包。在依賴集閉包相等的情況下,數(shù)據(jù)的語義是不會出差錯的。違反數(shù)據(jù)等價或語義等價的分解很難說是一個好的分解。 但同時達到也不是簡單的事情。4.3.4關于模式分解的幾個事實分解具有無損連接性和分解保持函數(shù)依賴是兩個相互獨立的標準。1.具有無損連接性性的分解不一定保持函數(shù)依賴例如分解2.2保持函數(shù)依賴的分解不一定具有無損連接性如SC(SNO,DNO,CNO,CREDIT)F={SNO→DNO,CNO→CREDIT}分解為兩個關系模式:SC1(SNO,DNO)SC2(CNO,CREDIT)這個分解保持函數(shù)依賴的分解不具有無損連接性結論:關系模式的一個分解可能具有無損連接性,可能是保持函數(shù)依賴,有可能是即具有無損連接性也保持函數(shù)依賴4.3.4關于模式分解的幾個事實若要求分解具有無損連接性,那么模式分解可以達到BCNF;若要求分解保持函數(shù)依賴,那么模式分解可以達到3NF,但不一定達到BCNF;若要求分解即具有無損連接性,又保持函數(shù)依賴,那么模式分解可以達到3NF,但不一定達到BCNF;4.4關系模式的范式

(NF,NormalForm)

第一范式(1NF)

第二范式(2NF)第三范式(3NF)

BCNF第四范式(4NF)第五范式(5NF)考核要求:了解考核要求:領會為什么要關系規(guī)范化?

關系模式的存儲異常:數(shù)據(jù)冗余、更新異常、插入異常和刪除異常

關系模式的設計:把泛關系模式分解成規(guī)范化的數(shù)據(jù)庫模式。二維表的例子學號姓名專業(yè)課程號課程名教師系辦公室電話教室成績01張計算機CS01數(shù)據(jù)庫陳計算機13025894024940989張計算機CS02數(shù)學趙數(shù)學30235890323882376張計算機CS03英語陳外語5034589403050207102王網(wǎng)絡CS01數(shù)據(jù)庫陳計算機13025894024940973王網(wǎng)絡CS02數(shù)學趙數(shù)學30235890323882388王網(wǎng)絡CS03英語陳外語50345894030502003李通訊CS01數(shù)據(jù)庫陳計算機130258940249409李通訊CS04C++周計算機303358903338832李通訊CS03英語陳外語503458940305020###########需要的知識 理解“非主屬性”、“完全函數(shù)依賴”、“候選鍵”、“部分函數(shù)依賴”、“傳遞函數(shù)依賴”這五個名詞的含義。

(1)候選鍵:可以唯一決定關系模式R中某元組值且不含有多余屬性的屬性集。

(2)非主屬性:即非鍵屬性,指關系模式R中不包含在任何建中的屬性。

(3)完全函數(shù)依賴:設R為任意給定關系,x、y其屬性集,若x→y,且對x中的任何真子集,x’都有x’→y。則稱y完全函數(shù)依賴于x。

(4)部分函數(shù)依賴:設R為任意給定關系,x、y其屬性集,若x→y,且x中存在一個真子集x’,x’滿足x’→y。則稱y部分函數(shù)依賴于x。

(5)傳遞函數(shù)依賴:設R為任意給定關系,x、y、z其屬性集,若x→y,y→x,y→z,則有x→z,則稱z傳遞函數(shù)依賴于x。1NF:第一范式1NF:第一范式——即關系模式中的屬性的值域中每一個值都是不可再分解的值。

如果某個數(shù)據(jù)庫模式都是第一范式的,則稱該數(shù)據(jù)庫模式是屬于第一范式的數(shù)據(jù)庫模式。

第二范式

如果關系模式R為第一范式,并且R中每一個非主屬性完全函數(shù)依賴于R的某個候選鍵,

則稱為第二范式模式。

在分析是否為第2范式時,應首先確定候選鍵,然后把關系模式中的非主屬性與鍵的依賴關系進行考察,

是否都為完全函數(shù)依賴,如是,則此關系模式為2NF。

如果數(shù)據(jù)庫模式中每個關系模式都是2NF的,則此數(shù)據(jù)庫模式屬于2NF的數(shù)據(jù)庫模式。

第三范式3NF如果關系模式R是第二范式,且每個非主屬性都不傳遞依賴于R的候選鍵,則稱R為第三范式模式。

傳遞依賴的含義:在關系模式中,如果Y→X,X→A,且XY(X不決定Y)和AX(A不屬于X),那么Y→A是傳遞依賴。

Notice: 要求非主屬性都不傳遞依賴于候選鍵。

把泛關系模式R用一組關系模式的集合ρ={R1,R2,...,Rk}來表示(R1,R2,...,Rk都是R的子集,ρ就是數(shù)據(jù)庫模式)。

以ρ代替R的過程稱為關系模式的分解。

實際上,關系模式的分解不僅僅是屬性集合的分解,

它是對關系模式上的函數(shù)依賴集、以及關系模式的當前值分解的具體表現(xiàn)。

第一范式消去非主屬性對鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對鍵的傳遞函數(shù)依賴消去主屬性對鍵的傳遞函數(shù)依賴普通二維表消去重復疊代不合理的分解會出現(xiàn)以下情況:失去函數(shù)依賴、或出現(xiàn)插入、刪除異常等情況。

模式分解的衡量標準有三種:

(1)分解具有無損聯(lián)接;

(2)分解要保持函數(shù)依賴;

(3)分解既要保持依賴,又要具有無損 聯(lián)接。

學院具體情況:一種課由一位老師任教,每種課在一個教室上,每位老師有一獨立的辦公室。學生選課表數(shù)據(jù)資料初步統(tǒng)計如下:問題:這是一個關系表嗎?不是學號姓名專業(yè)課程號課程名教師系辦公室電話教室成績01張計算機CS01數(shù)據(jù)庫陳計算機13025894024940989張計算機CS02數(shù)學趙數(shù)學30235890323882376張計算機CS03英語陳外語5034589403050207102王網(wǎng)絡CS01數(shù)據(jù)庫陳計算機13025894024940973王網(wǎng)絡CS02數(shù)學趙數(shù)學30235890323882388王網(wǎng)絡CS03英語陳外語50345894030502003李通訊CS01數(shù)據(jù)庫陳計算機130258940249409李通訊CS04C++周計算機303358903338832李通訊CS03英語陳外語503458940305020###########第一范式消去非主屬性對鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對鍵的傳遞函數(shù)依賴消去主屬性對鍵的傳遞函數(shù)依賴普通二維表消去重復疊代學號姓名專業(yè)課程號課程名教師系辦公室電話教室成績01張計算機CS01數(shù)據(jù)庫陳計算機1302589402494098901張計算機CS02數(shù)學趙數(shù)學3023589032388237601張計算機CS03英語陳外語5034589403050207102王網(wǎng)絡CS01數(shù)據(jù)庫陳計算機1302589402494097302王網(wǎng)絡CS02數(shù)學趙數(shù)學3023589032388238802王網(wǎng)絡CS03英語陳外語50345894030502003李通訊CS01數(shù)據(jù)庫陳計算機13025894024940903李通訊CS04C++周計算機30335890333883203李通訊CS03英語陳外語503458940305020###########去掉重復疊代部分得到如下表:問題:1、這是一個關系表嗎?3、還存在問題嗎?2、這是第幾范式?是是第一范式問題很多:1、插入問題,新同學小趙不能被插入表中,因為他還沒有選課,課程號不能為空(實體完整性的要求)。2、刪除問題,小李不能被刪除,因為周老師將被刪除。3、更新問題,修改陳老師相關信息很困難。如何結決這些問題呢?第一范式消去非主屬性對鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對鍵的傳遞函數(shù)依賴消去主屬性對鍵的傳遞函數(shù)依賴普通二維表消去重復疊代方法:對關系進行分解!

學號課程號成績姓名專業(yè)系辦公室教師課程名教室電話學號姓名專業(yè)01張計算機02王網(wǎng)絡03李通訊課程號課程名教室教師系辦公室電話CS01數(shù)據(jù)庫9409陳計算S02數(shù)學8823趙數(shù)學30235890323CS03英語5020陳計算S04C++3033周計算機88325890333學號課程號成績01CS018901CS027601CS037102CS017302CS028802CS0303CS0103CS0403CS02問題:1、這是一個關系表嗎?是第二范式是2、這是第幾范式?3、還存在問題嗎?存在,冗余、更新、刪除問題如何結決這一問題呢?學號課程號成績姓名專業(yè)系辦公室教師課程名教室電話學號課程號學號課程號成績姓名專業(yè)系辦公室教師課程名教室電話學號課程號第一范式消去非主屬性對鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對鍵的傳遞函數(shù)依賴消去主屬性對鍵的傳遞函數(shù)依賴普通二維表消去重復疊代方法:對關系進行進一步的分解!

學號姓名專業(yè)01張計算機02王網(wǎng)絡03李通訊教師系辦公室電話陳計算計算機88325890333趙數(shù)學30235890323課程號課程名教師教室CS01數(shù)據(jù)庫陳9409CS02數(shù)學趙8823CS03英語陳5020CS04C++周3033學號課程號成績01CS018901CS027601CS037102CS017302CS028802CS0303CS0103CS0403CS02問題:這一關系還有問題嗎? 這一關系與原關系等價嗎?與原關系的信息仍然一致嗎?學號姓名專業(yè)01張計算機02王網(wǎng)絡03李通訊教師系辦公室電話陳計算計算機88325890333趙數(shù)學30235890323學號課程號成績01CS018901CS027601CS037102CS017302CS028802CS0303CS0103CS0403CS02學號姓名專業(yè)課程號課程名教師系辦公室電話教室成績01張計算機CS01數(shù)據(jù)庫陳計算機1302589402494098903李通訊CS03英語陳外語503458940305020###########我們得到了可行的關系集!課程號課程名教師教室CS01數(shù)據(jù)庫陳9409CS02數(shù)學趙8823CS03英語陳5020CS04C++周3033BCNFBCNF范式是第三范式的改進形式,建立在第一范式的基礎上。如果關系模式R是第一范式,且所有的函數(shù)依賴X→Y(Y不屬于X),決定因素X都包含了R的一個候選鍵,那么稱R是BCNF范式。BCNF從BCNF的定義中可以明顯得出如下結論:1、所有非主屬性對鍵是完全依賴。2、所有主屬性對不包含它的鍵是完全函數(shù)依賴。3、沒有屬性完全函數(shù)依賴于非鍵的任何的屬性組。BCNFsct(s,c,t)//學生,課程,教師t→c//每位教師只上一門課s,c→t//某學生選定一門課,就對應一位老師s,t→c //每門課有若干位教師sctstcsct∈3NF,sct∈BCNF(S,t),(S,C)為候選鍵。t→cSCT張數(shù)據(jù)庫陳張數(shù)學趙張英語錢王數(shù)據(jù)庫陳王數(shù)學鄭王英語孫李數(shù)據(jù)庫吳李英語錢###SCT張數(shù)據(jù)庫陳張數(shù)學趙張英語錢王數(shù)據(jù)庫陳王數(shù)學鄭王英語孫李數(shù)據(jù)庫吳李英語錢###從BCNF的定義中可以明顯得出如下結論:1、所有非主屬性對鍵是完全依賴。2、所有主屬性對不包含它的鍵是完全函數(shù)依賴。課程號課程名教室教師系辦公室電話CS01數(shù)據(jù)庫9409陳計算S02數(shù)學8823趙數(shù)學30235890323CS03英語5020陳計算S04C++3033周計算機883258903333、沒有屬性完全函數(shù)依賴于非鍵的任何的屬性組。stcBCNF非BCNF的不良特性插入異常:如果沒有學生選修某位老師的任課,則該老師擔任課程的信息就無法插入。刪除異常:刪除學生選課信息,會刪除掉老師的任課信息。更新異常:如果老師所教授的課程有所改動,則所有選修該老師課程的學生元組都要做改動。數(shù)據(jù)冗余:每位學生都存儲了有關老師所教授的課程的信息。癥由:

主屬性對鍵的傳遞(不良)依賴。sct(s,c,t)

BCNF如sctBCNF,因為tC,而t不含有鍵。改造 將sct分解為(S,t),(t,c)。TC陳數(shù)據(jù)庫趙數(shù)學錢英語鄭數(shù)學孫英語吳數(shù)據(jù)庫##sct(s,c,t)ST張陳張趙張錢王陳王鄭王孫李吳李錢##思考

(S#,C#,ORDER),表示學生選修課程的名次,有函數(shù)依賴(S#,C#)ORDER,(C#,ORDER)S#,它屬于BCNF嗎?

???(S#,ORDER)C#

學號課程號單科排名01CS01101CS02201CS0302CS01202CS02302CS0303CS01303CS0403CS0212、所有主屬性對不包含它的鍵是完全函數(shù)依賴。SCT張數(shù)據(jù)庫陳張數(shù)學趙張英語錢王數(shù)據(jù)庫陳王數(shù)學鄭王英語孫李數(shù)據(jù)庫吳李英語錢###BCNF最高范式BCNF是基于函數(shù)依賴的最高范式但不是數(shù)據(jù)庫模式設計的最高范式6.2規(guī)范化6.2.1函數(shù)依賴6.2.2碼6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依賴6.2.84NF6.2.9規(guī)范化小結6.2.7多值依賴[例9]學校中某一門課程由多個教師講授,他們使用相同的一套參考書。每個教員可以講授多門課程,每種參考書可以供多門課程使用。

………課程C教員T參考書B

物理

數(shù)學

計算數(shù)學李勇王軍

李勇張平

張平周峰

普通物理學光學原理物理習題集

數(shù)學分析微分方程高等代數(shù)

數(shù)學分析...…

多值依賴(續(xù))非規(guī)范化關系普通物理學光學原理物理習題集普通物理學光學原理物理習題集數(shù)學分析微分方程高等代數(shù)數(shù)學分析微分方程高等代數(shù)…李勇李勇李勇王軍王軍王軍李勇李勇李勇張平張平張平

…物理物理物理物理物理物理數(shù)學數(shù)學數(shù)學數(shù)學數(shù)學數(shù)學…

參考書B教員T課程C多值依賴(續(xù))用二維表表示Teaching多值依賴(續(xù))Teaching∈BCNFTeaching具有唯一候選碼(C,T,B),即全碼

多值依賴(續(xù))

Teaching模式中存在的問題(1)數(shù)據(jù)冗余度大(2)插入操作復雜(3)刪除操作復雜(4)修改操作復雜存在多值依賴多值依賴(續(xù))定義6.9

設R(U)是一個屬性集U上的一個關系模式,X、Y和Z是U的子集,并且Z=U-X-Y。關系模式R(U)中多值依賴

X→→Y成立,當且僅當對R(U)的任一關系r,給定的一對(x,z)值,有一組Y的值,這組值僅僅決定于x值而與z值無關例Teaching(C,T,B)

(X,Z,Y)給定的一對(x,z)有一組y的值,這組值僅僅決定于x值而與z值無關,X→→Y(C,T,B)給定的一對(c,t)有一組b的值,這組值僅僅決定于c值而與t值無關,C→→B給定一對(c,b)有一組t的值

?C→→T問題:還有那些多值依賴?多值依賴(續(xù))多值依賴的另一個等價的形式化的定義:在R(U)的任一關系r中,如果存在元組t,s使得t[X]=s[X],那么就必然存在元組w,vr,(w,v可以與s,t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交換s,t元組的Y值所得的兩個新元組必在r中),則Y多值依賴于X,記為X→→Y。這里,X,Y是U的子集,Z=U-X-Y。多值依賴(續(xù))平凡多值依賴和非平凡的多值依賴

若X→→Y,而Z=φ,則稱

X→→Y為平凡的多值依賴 否則稱X→→Y為非平凡的多值依賴多值依賴的性質(1)多值依賴具有對稱性 若X→→Y,則X→→Z,其中Z=U-X-Y(2)多值依賴具有傳遞性 若X→→Y,Y→→Z,則X→→Z–Y(3)函數(shù)依賴是多值依賴的特殊情況。 若X→Y,則X→→Y。(4)若X→→Y,X→→Z,則X→→YZ。(5)若X→→Y,X→→Z,則X→→Y∩Z。(6)若X→→Y,X→→Z,則X→→Y-Z,X→→Z-Y。多值依賴與函數(shù)依賴的區(qū)別(1)多值依賴的有效性與屬性集的范圍有關(2)

若函數(shù)依賴X→Y在R(U)上成立,則對于任何Y'Y均有X→Y'成立多值依賴X→→Y若在R(U)上成立,不能斷言對于任何Y'Y有X→→Y'成立多值依賴(續(xù))[例10]關系模式WSC(W,S,C)W表示倉庫,S表示保管員,C表示商品假設每個倉庫有若干個保管員,有若干種商品每個保管員保管所在的倉庫的所有商品每種商品被所有保管員保管

多值依賴(續(xù))WSCW1S1C1W1S1C2W1S1C3W1S2C1W1S2C2W1S2C3W2S3C4W2S3C5W2S4C4W2S4C5多值依賴(續(xù))W→→S且W→→C用下圖表示這種對應

6.2.84NF定義6.10關系模式R<U,F(xiàn)>∈1NF,如果對于R的每個非平凡多值依賴X→→Y(YX),X都含有碼,則R∈4NF。如果R∈4NF,則R∈BCNF不允許有非平凡且非函數(shù)依賴的多值依賴允許的非平凡多值依賴是函數(shù)依賴4NF(續(xù))例:Teaching(C,T,B)∈4NF

存在非平凡的多值依賴C→→T,且C不是碼用投影分解法把Teaching分解為如下兩個關系模式:

CT(C,T)∈4NF CB(C,B)∈4NFC→→T,C→→B是平凡多值依賴

4NF(續(xù))例:關系模式WSC(W,S,C)∈4NF

存在非平凡的多值依賴W→→C,W→→S用投影分解法把WSC分解為如下兩個關系模式:

CT(W,S)∈4NF CB(W,C)∈4NFW→→S,W→→C是平凡多值依賴

6.2規(guī)范化6.2.1函數(shù)依賴6.2.2碼6.2.3范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依賴6.2.84NF6.2.9規(guī)范化小結6.2.9規(guī)范化小結關系數(shù)據(jù)庫的規(guī)范化理論是數(shù)據(jù)庫邏輯設計的工具目的:盡量消除插入、刪除異常,修改復雜,數(shù)據(jù)冗余基本思想:逐步消除數(shù)據(jù)依賴中不合適的部分實質:概念的單一化規(guī)范化小結(續(xù))不能說規(guī)范化程度越高的關系模式就越好在設計數(shù)據(jù)庫模式結構時,必須對現(xiàn)實世界的實際情況和用戶應用需求作進一步分析,確定一個合適的、能夠反映現(xiàn)實世界的模式上面的規(guī)范化步驟可以在其中任何一步終止范式之間的關系5NF

4NF

BCNF3NF2NF1NF

第一范式消去非主屬性對鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對鍵的傳遞函數(shù)依賴消去主屬性對鍵的傳遞函數(shù)依賴

出現(xiàn)問題的可能性逐步減少第四范式消除非平凡且非函數(shù)依賴的多值依賴關系范式的優(yōu)點及缺點優(yōu)點:隨著級別的提高,出現(xiàn)問題(數(shù)據(jù)冗余、 更新異常、插入異常和刪除異常)的可能性減少,甚至杜絕。表現(xiàn)方式直觀和靈活。缺點:運行速度(相對)較慢。規(guī)范化基本步驟:

2.關系模式的分解及其指標

投影分解法:一個關系模式R<U,F>,其中,U為該關系R的屬性集,F(xiàn)為該關系R上的數(shù)據(jù)依賴,分解為若干個關系模式R1<U1,F1>,R2<U2,F2>…,Rn<Un,Fn>,其中,U=U1∪U2∪…∪Un,且UiUj,Ri為R在Ui上的投影,此即意味著將存儲于一張表T中的數(shù)據(jù)分散到若干張表T1,T2,…,Tn中去,其中,Ti是T在屬性集Ui上的投影。關系模式分解的一般要求:關系模式經分解后,應與原來的關系等價。等價是指兩者對數(shù)據(jù)的使用者來說是等價的,即:對分解前后的數(shù)據(jù),做同樣內容的查詢,會產生同樣的結果。分解的兩個指標:無損分解和函數(shù)依賴保持性。分解不能丟失任何信息,否則就沒有意義。無損分解:若R與R1,R2,…,Rn自然連接的結果相等,則稱關系模式R的這個分解具有無損連接性(Loss-lessJoin)。只有具有無損連接性的分解才能夠保證不丟失信息,無損連接性的分解即為無損分解。

保持函數(shù)依賴:若F所邏輯蘊含的函數(shù)依賴一定也由分解得到的某個關系模式中的函數(shù)依賴Fi所邏輯蘊含,則稱關系模式R的這個分解是保持函數(shù)依賴(PreserveDependency)的。關系模式的分解準則:①

只滿足無損分解要求;

既滿足無損分解要求,又滿足保持依賴要求。BCNF、第四范式、第五范式不是考試內容4.4.7模式設計方法的原則關系模式R相對于函數(shù)依賴集F分解成數(shù)據(jù)庫模式={R1,R2,…Rk},一般應具有下面四項特性:1、中每個關系模式Ri上應有某種范式性質2、無損聯(lián)接3、保持函數(shù)依賴集4、最小性,指中模式個數(shù)應最少和模式中屬性總數(shù)應最少。第四章主要內容1、函數(shù)依賴的定義2、鍵(候選鍵)的定義和判定3、最小函數(shù)依賴集的求法4、關系模式的分解(無損聯(lián)接和保持函數(shù)依賴)5、關系模式的范式及范式級別判定的依據(jù)6、分解成BCNF和3NF的算法7、多值依賴補充材料FINISH實例

建立關于系、學生、班級、社團等信息的一個關系數(shù)據(jù)庫,一個系有若干個專業(yè),每個專業(yè)每年只招一個班,每個班有若干個學生,一個系的學生住在同一宿舍區(qū),每個學生可以參加若干個社團,每個社團有若干學生。

描述學生的屬性有:學號、姓名、出生年月、系名、班級號、宿舍區(qū)。

描述班級的屬性有:班級號、專業(yè)名、系名、人數(shù)、入校年份。

描述系的屬性有:系名、系號、系辦公地點、人數(shù)。

描述社團的屬性有:社團名、成立年份、地點、人數(shù)、學生參加某社團的年份。請給出關系模式,寫出每個關系模式的最小函數(shù)依賴集,指出是否存在傳遞函數(shù)依賴,對于函數(shù)依賴左部是多屬性的情況,討論函數(shù)依賴是完全函數(shù)依賴還是部分函數(shù)依賴。指出各關系的候選鍵、外部鍵?

各關系模式如下:

學生(學號,姓名,出生年月,系名,班級號,宿舍區(qū))

班級(班級號,專業(yè)名,系號,人數(shù),入校年份)

系(系名,系號,系辦公地點,人數(shù))

社團(社團名,成立年份,地點,人數(shù))

加入社團(社團名,學號,學生參加社團的年份)

學生(學號,姓名,出生年月,系名,班級號,宿舍區(qū))

“學生”關系的最小函數(shù)依賴集為:

Fmin={學號→姓名,學號→班級號,學號→出生年月,notice:在關系模式中,如果Y→X,X→A,且X→

Y(X不決定Y),A不屬于X,那么稱Y→A是傳遞依賴。系名,系名學號→→宿舍區(qū)}以上關系模式中存在傳遞函數(shù)依賴,如:學號→系名,系名→宿舍區(qū)候選鍵是?學號。外部鍵是?班級號,系名。班級(班級號,專業(yè)名,系名,人數(shù),入校年份)

“班級”關系的最小函數(shù)依賴集為:

Fmin={(系名,專業(yè)名)→班級號,班級號→人數(shù),班級號→入校年份,班級號→系名,班級號→專業(yè)名}(假設沒有相同的系,不同系中專業(yè)名可以相同)

以上關系模式中是否存在傳遞函數(shù)依賴?不存在傳遞函數(shù)依賴。

“(系名,專業(yè)名)→班級號”是完全函數(shù)依賴。候選鍵是?(系名,專業(yè)名),班級號。外部鍵是?系名。系(系名,系號,系辦公地點,人數(shù))

“系”關系的最小函數(shù)依賴集為:Fmi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論