版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章
關(guān)系型數(shù)據(jù)庫(kù)規(guī)范設(shè)計(jì)本章主要內(nèi)容4.1關(guān)系模式的設(shè)計(jì)問(wèn)題4.2函數(shù)依賴4.3關(guān)系模式的分解特性4.4關(guān)系模式的范式SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)SQL用戶BaseTableB1ViewV1ViewV2BaseTableB2BaseTableB3BaseTableB4StoredFileS1StoredFileS1StoredFileS1StoredFileS1外模式模式內(nèi)模式SQL語(yǔ)言支持的關(guān)系數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)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關(guān)系模式的設(shè)計(jì)問(wèn)題對(duì)于一個(gè)現(xiàn)實(shí)問(wèn)題,它有一個(gè)屬性集U,其中每個(gè)屬性Ai對(duì)應(yīng)一個(gè)值域DOM(Ai),它由屬性集U和U上成立的數(shù)據(jù)完整性約束集組成。關(guān)系r是關(guān)系模式R(U)的當(dāng)前值,是一個(gè)元組的集合。這里的關(guān)系模式和關(guān)系一般稱為泛關(guān)系模式和泛關(guān)系。R(S#、SNAME、SDEPT、C#、CNAME、TIME、S#、C#、GRADE)但是對(duì)于許多現(xiàn)實(shí)問(wèn)題,往往R(U)不是恰當(dāng)?shù)男问剑仨氂靡粋€(gè)關(guān)系模式的集合p={R1,R2,……Rk}來(lái)代替R(U),這里的p稱為數(shù)據(jù)庫(kù)模式。對(duì)數(shù)據(jù)庫(kù)模式的每一個(gè)關(guān)系模式賦予一個(gè)當(dāng)前值,就得到一個(gè)數(shù)據(jù)庫(kù)實(shí)例(數(shù)據(jù)庫(kù))。S(S#、SNAME、SDEPT)
C(C#、CNAME、TIME)
SC(S#、C#、GRADE)什么是好的數(shù)據(jù)庫(kù)設(shè)計(jì)體現(xiàn)客觀世界的信息無(wú)過(guò)度的冗余無(wú)插入異常無(wú)更新復(fù)雜無(wú)刪除異常4.1關(guān)系模式的設(shè)計(jì)問(wèn)題4.1關(guān)系模式的設(shè)計(jì)問(wèn)題TNAMEADDRESSC#CNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n4關(guān)系模式R(TNAME,ADDRESS,C#,CNAME)4.1關(guān)系模式的設(shè)計(jì)問(wèn)題對(duì)數(shù)據(jù)庫(kù)操作時(shí),會(huì)出現(xiàn)以下問(wèn)題1、數(shù)據(jù)冗余:(數(shù)據(jù)重復(fù)存儲(chǔ):浪費(fèi)存儲(chǔ)空間,數(shù)據(jù)庫(kù)維護(hù)困難)如一名教師教多門(mén)課程,他的地址要重復(fù)多次2、更新異常:如果一個(gè)教師教了三門(mén)課程,則如果他的地址變了,三個(gè)元組的地址信息都要變。若有一個(gè)沒(méi)變,就會(huì)造成地址不唯一,產(chǎn)生錯(cuò)誤信息。3、插入異常:主鍵為空的記錄不能存在于數(shù)據(jù)庫(kù),導(dǎo)致不能進(jìn)行插入操作如教師沒(méi)有分配教學(xué)任務(wù),就不能插入數(shù)據(jù)庫(kù)。4.刪除異常:刪除操作后,會(huì)引起一些信息的丟失。如一個(gè)原有教學(xué)任務(wù)的教師教師現(xiàn)在沒(méi)有教學(xué)任務(wù),要把這個(gè)教師的所有元組都刪去。這樣就把這個(gè)教師的姓名和地址也從數(shù)據(jù)庫(kù)中刪去了,不合理。TNAMEADDRESSC#CNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n44.1關(guān)系模式的設(shè)計(jì)問(wèn)題解決之道:分解!分解!!再分解!!!TNAMEADDRESSt1a1t2a2t3a3TNAMEC#CNAMEt1c1n1t1c2n2t1c3n3t2c4n4t2c5n2t3c6n4分解為兩個(gè)模式:R1(TNAME,ADDRESS)R2(TNAME,C#,CNAME)考慮為學(xué)生的選課信息而設(shè)計(jì)一個(gè)關(guān)系模式。過(guò)度冗余——數(shù)據(jù)重復(fù)更新異?!麓鷥r(jià)大、可能導(dǎo)致數(shù)據(jù)不一致刪除異?!糠中畔⒌膭h除可能導(dǎo)致信息的丟失插入異?!仨氂型暾畔⒃趺捶纸庾罴??4.1關(guān)系模式的設(shè)計(jì)問(wèn)題4.2函數(shù)依賴(FD,FunctionDependence)y=f(x)y=3x4.2.1函數(shù)依賴定義設(shè)有關(guān)系模式R(A1,A2,...An)或簡(jiǎn)記為R(U),X,Y是U的子集,r是R的任一具體關(guān)系,
如果對(duì)r的任意兩個(gè)元組t1,t2,由t1[X]=t2[X]導(dǎo)致t1[Y]=t2[Y],則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,
記為X→Y。X→Y為模式R的一個(gè)函數(shù)依賴。
如S#Sname,(S#,C#)Grade
該定義理解如下:有一張?jiān)O(shè)計(jì)好的二維表,X,Y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的X值相等,
那么必有t1行和t2行上的Y值也相等,這就是說(shuō)Y函數(shù)依賴于X。
比如,有如下二維表
在表中,凡成績(jī)相同的,對(duì)應(yīng)的“成績(jī)等級(jí)”也必是相同的,因此,“成績(jī)等級(jí)”函數(shù)依賴于"成績(jī)"。
但是反過(guò)來(lái)則不成立。
Notice:
(1)在這張表中,任何一行的關(guān)系均應(yīng)符合函數(shù)依賴的條件,如果有一行不符合函數(shù)依賴的條件,則函數(shù)依賴對(duì)于這個(gè)關(guān)系就不成立。
(2)函數(shù)依賴是否成立是不可證明的,只能通過(guò)屬性的含義來(lái)判斷.表例學(xué)號(hào)姓名成績(jī)成績(jī)等級(jí)00001李里77C00002丁力91A00003李小紅85B00004馬琳85B00005王佳怡66D00006胡林70C.....................舉例:
職工號(hào)(A) 基本工資(B) 獎(jiǎng)金(C) 051 390 50052420 5005339080ABACBACA 4.2.2函數(shù)依賴-幾點(diǎn)說(shuō)明1.函數(shù)依賴是語(yǔ)義范疇的概念.它反映了一種語(yǔ)義完整性約束,只能根據(jù)語(yǔ)義來(lái)確定一個(gè)函數(shù)依賴.例如,“姓名”-“年齡”這個(gè)函數(shù)依賴只有在沒(méi)有同名人的條件下成立,否則,此函數(shù)依賴不成立。2.函數(shù)依賴是指關(guān)系R模式的所有關(guān)系元組均應(yīng)滿足的約束條件,而不是關(guān)系模式中的某個(gè)或某些元組滿足的約束條件。4.2.2函數(shù)依賴-幾點(diǎn)說(shuō)明3.函數(shù)依賴與屬性間的聯(lián)系類型有關(guān)(1)若屬性X和Y之間有“一對(duì)一”的聯(lián)系,
則XY,YX,XY.(如不存在同名的學(xué)號(hào)和姓名)(2)若屬性X和Y之間有“多對(duì)一”的聯(lián)系,
則XY,但YX.(3)若屬性X和Y之間有“多對(duì)多”的聯(lián)系,
則X與Y之間不存在任何函數(shù)依賴.當(dāng)確定函數(shù)依賴關(guān)系時(shí),可從屬性間的聯(lián)系入手函數(shù)依賴(FD,FunctionDependence)
y=f(x)問(wèn):X、Y是誰(shuí)函數(shù)依賴誰(shuí)?是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問(wèn):X、Y是誰(shuí)函數(shù)依賴誰(shuí)?是X函數(shù)依賴Y?還是Y函數(shù)依賴X?答:沒(méi)有任何函數(shù)依賴關(guān)系4.2.2函數(shù)依賴-幾點(diǎn)說(shuō)明4.如果X→Y,并且Y不是X的子集,則稱X→Y是非平凡的函數(shù)依賴;如果Y是X的子集,則稱X→Y是平凡的函數(shù)依賴;
我們討論的是非平凡的函數(shù)依賴.例如:(S#,SN)
SN是平凡的函數(shù)依賴5.函數(shù)依賴的存在,決定了自然連接的特性設(shè)關(guān)系模式R(X,Y,Z),X,Y,Z為不相交的屬性集合,若X→Y,X→Z,
則有R(X,Y,Z)=R(X,Y)R(X,Z)
即用它們的自然連接可復(fù)員原關(guān)系模式舉例:關(guān)系模式S(S#,SN,C#,G,CN,TN,TA)主鍵:(S#,C#)函數(shù)依賴:S#SN(每個(gè)學(xué)生只能有一個(gè)姓名)C#CN(每個(gè)課程號(hào)只能對(duì)應(yīng)一門(mén)課程)TNTA(每個(gè)教師只能有一個(gè)年齡)(S#,C#)
G(每個(gè)學(xué)生學(xué)習(xí)一門(mén)課程只能有一個(gè)成績(jī))
4.2.2函數(shù)依賴ABC142356346738910說(shuō)明關(guān)系是否滿足下列函數(shù)依賴:ABACABCCAACB不滿足AB,因?yàn)椋?,5,6)和(3,4,6),t1(A)=t2(A)=3,但是t1(B)=5而t2(A)=4ACABCCA4.2.3鍵定義超鍵:設(shè)X為關(guān)系R的屬性或?qū)傩越M,U為R的元組若XU,則稱X為R的超鍵。候選鍵:設(shè)X為R的超鍵,若X中不含多余屬性,則稱X為R的候選鍵。主鍵:若關(guān)系R有多個(gè)候選鍵,則可以從中選定一個(gè)作為R的主鍵。主屬性:包含在任何一個(gè)候選鍵中的屬性,稱作主屬性,不包含在任何鍵中的屬性稱為非主屬性。全鍵:關(guān)系模式的鍵由整個(gè)屬性組構(gòu)成。 如(S#,C#,T#)4.2.3鍵候選鍵的兩個(gè)性質(zhì):1、標(biāo)識(shí)的唯一性:對(duì)于R(U)中的每一元組,X的值確定后,該元組就相應(yīng)確定了.即:X函數(shù)決定該關(guān)系的所有其他屬性(X→R)
XA1A2…An S#SD,SS,SBirthday2、無(wú)冗余性:X是屬性組的情況下,X的任何真子集都不能唯一標(biāo)識(shí)該元組
即:不存在X的真子集Y,使得YA1A2…An
(S#,C#)Grade4.2.3鍵舉例:設(shè)關(guān)系模式R(XYZ),已知FD是XY,YZ,那么可以推出XXYZ也在F+中,但X的真子集(此處是空值)不可能函數(shù)決定XYZ,所以X是模式R的鍵。職工關(guān)系模式ZG(工號(hào),姓名,年齡,性別,工資)工號(hào)(工號(hào),姓名,年齡,性別,工資),工號(hào)沒(méi)有真子集,所以工號(hào)是鍵。(工號(hào),姓名)(工號(hào),姓名,年齡,性別,工資)
,但不是鍵。4.3關(guān)系模式的分解特性我們可以通過(guò)把一個(gè)關(guān)系模式的分解成多個(gè)關(guān)系模式,以解決它的插入、刪除和更新操作所帶來(lái)的一些問(wèn)題。為了在分解要保證原來(lái)模式所滿足的特性,要求分解處理具有無(wú)損聯(lián)接和保持函數(shù)依賴。4.3.1模式分解中存在的問(wèn)題設(shè)有關(guān)系R=A1A2…An,R1,R2…Rn是R的子集,R=R1UR2U…Rk,設(shè)有關(guān)系模式R1,R2…Rk的集合用p表示,p={R1,R2…Rk}。用p代替R的過(guò)程稱為關(guān)系模式的分解。P稱為R的一個(gè)分解,也稱為數(shù)據(jù)庫(kù)模式。R稱為泛關(guān)系模式,R對(duì)應(yīng)的當(dāng)前值稱為泛關(guān)系。數(shù)據(jù)庫(kù)對(duì)應(yīng)的當(dāng)前值σ稱為數(shù)據(jù)庫(kù)實(shí)例,它是由數(shù)據(jù)庫(kù)模式中的每一個(gè)關(guān)系模式的當(dāng)前值組成,σ={r1,r2…rk}來(lái)表示。4.3.1模式分解中存在的問(wèn)題實(shí)際上,關(guān)系模式的分解,不僅僅是屬性集合的分解,它是對(duì)關(guān)系模式上的函數(shù)依賴集,以及關(guān)系模式的當(dāng)前值的分解的具體表現(xiàn)。4.3.1模式分解中存在的問(wèn)題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)有損分解無(wú)損分解4.3.1模式分解中存在的問(wèn)題關(guān)系模式的分解有幾個(gè)衡量標(biāo)準(zhǔn):分解具有無(wú)損連接分解保持函數(shù)依賴分解既要保持依賴,又要具有無(wú)損聯(lián)接達(dá)到更高級(jí)范式4.3.2無(wú)損聯(lián)接無(wú)損連接分解定義
關(guān)系模式R,分解成關(guān)系模式p={R1,R2…Rk},F是R上的一個(gè)函數(shù)依賴集。如果對(duì)R中滿足F的每一個(gè)關(guān)系r都有:r=∏R1(r)∏R2(r)∏Rk(r)則稱此分解p是相對(duì)于F是“無(wú)損連接分解”。即r為它在Ri上的投影的自然聯(lián)接?!荝i(r)表示關(guān)系r在模式Ri的屬性上的投影。4.3.2無(wú)損聯(lián)接的測(cè)試將R(A,B,C)分解為兩個(gè)模式R1(A,B)和R2(B,C)ABCa1b1c1a2b1c2a7b3c3a8b4c4a9b5c5ABa1b1a2b1a7b3a8b4a9b5BCb1c1b1c2b3c3b4c4b5c5R(A,B,C)關(guān)系r1關(guān)系r2關(guān)系4.3.2無(wú)損聯(lián)接的測(cè)試ABCa1b1c1a2b1c2a7b3c3a8b4c4a9b5c5R(A,B,C)關(guān)系A(chǔ)BCa1b1c1a1b1c2a2b1c1a2b1c2a7b3c3a8b4c4a9b5c5R1(A,B)R2(B,C)所以把R(A,B,C)分解為兩個(gè)模式R1(A,B)和R2(B,C)不是具有無(wú)損聯(lián)接性的分解。4.3.2無(wú)損聯(lián)接的測(cè)試如果一個(gè)模式分解不是無(wú)損聯(lián)接分解,那么分解不能通過(guò)自然聯(lián)接運(yùn)算恢復(fù),因此要求分解時(shí)利用屬性間的函數(shù)依賴的性質(zhì),才能保證此分解具有無(wú)損聯(lián)接性。
問(wèn)題提出:在關(guān)系模式的規(guī)范化處理過(guò)程中,不僅要知道一個(gè)給定的函數(shù)依賴集合,還要知道由給定的函數(shù)依賴集合所蘊(yùn)涵(或推導(dǎo)出)的所有函數(shù)依賴的集合。為此,需要一個(gè)有效而完備的公理系統(tǒng),Armstrong公理系統(tǒng)即是這樣的一個(gè)系統(tǒng)。Armstrong公理系統(tǒng)
蘊(yùn)含定義:設(shè)F是R上的函數(shù)依賴集合,X→Y是R的一個(gè)函數(shù)依賴。如果R的一個(gè)關(guān)系實(shí)例滿足F,則必然滿足X→Y,則稱F邏輯蘊(yùn)含(Imply)X→Y。
Armstrong公理:為從已知的函數(shù)依賴推導(dǎo)出其他的函數(shù)依賴,Armstrong提出了一套推理規(guī)則,稱為Armstrong公理(Armstrong’sAxioms)。
閉包定義:函數(shù)依賴集合F所邏輯蘊(yùn)含的函數(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公理所推導(dǎo)的函數(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。或:如X→YZ,則X→Y,X→Z。F的閉包F+
F={XY,YZ},F+計(jì)算是NP完全問(wèn)題,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(學(xué)號(hào),系號(hào),宿舍樓號(hào))F={學(xué)號(hào)→系號(hào),系號(hào)→宿舍樓號(hào)}顯然,S不屬于3NF。分解0:S01(學(xué)號(hào)),S02(系號(hào),宿舍樓號(hào))S(學(xué)號(hào),系號(hào),宿舍樓號(hào))F={學(xué)號(hào)→系號(hào),系號(hào)→宿舍樓號(hào)}顯然,S不屬于3NF。顯然分解0是不可行的。分解0: S01(學(xué)號(hào)),S02(系號(hào),宿舍樓號(hào))
分解1:S11(學(xué)號(hào),宿舍樓號(hào)),S12(系號(hào),宿舍樓號(hào))分解2:S21(學(xué)號(hào),系號(hào)),S22(學(xué)號(hào),宿舍樓號(hào))分解3:S31(學(xué)號(hào),系號(hào)),S32(系號(hào),宿舍樓號(hào))顯然,都屬于3NF(事實(shí)上,都屬于BCNF、4NF)。學(xué)號(hào)系號(hào)宿舍樓號(hào)S1D1AS2D2BS3D2BS4D3A學(xué)號(hào)宿舍樓號(hào)S1AS2BS3BS4A系號(hào)宿舍樓號(hào)D1AD2BD3A投影操作(分解1:S11,S12)S學(xué)號(hào)宿舍樓號(hào)系號(hào)宿舍樓號(hào)S1AD1AS1AD2BS1AD3AS2BD1AS2BD2BS2BD3AS3BD1AS3BD2BS3BD3AS4AD1AS4AD2BS4AD3A學(xué)號(hào)系號(hào)宿舍樓號(hào)S1D1AS1D3AS2D2BS3D2BS4D1AS4D3A學(xué)號(hào)系號(hào)宿舍樓號(hào)S1D1AS2D2BS3D2BS4D3ASS’S≠S’結(jié)論:分解1不是好的分解3個(gè)或更多的關(guān)系模式的情況下要判別分解是否具有無(wú)損連接性要比較復(fù)雜的算法。2個(gè)則很容易。定理1 U1∩U2→U1-U2∈F+ 或 U1∩U2→U2-U1∈F+定理2如果FDX→Y在模式R上成立,且X∩Y=?,那么R分解成ρ
={R-Y,XY}是無(wú)損分解,例如:S(學(xué)號(hào),系號(hào),宿舍樓號(hào))F={學(xué)號(hào)→系號(hào),系號(hào)→宿舍樓號(hào)}X→Y,ρ
={R-Y,XY}S1(學(xué)號(hào),宿舍樓號(hào))S2(學(xué)號(hào),系號(hào))分解1:S11(學(xué)號(hào),宿舍樓號(hào)),S12(系號(hào),宿舍樓號(hào))U1∩U2=宿舍樓號(hào),U1-U2=學(xué)號(hào)(不成立)或U1∩U2=宿舍樓號(hào),U1-U2=系號(hào)(不成立)(F={學(xué)號(hào)→系號(hào),系號(hào)→宿舍樓號(hào)},F(xiàn)+)分解2:S21(學(xué)號(hào),系號(hào)),S22(學(xué)號(hào),宿舍樓號(hào))U1∩U2=學(xué)號(hào),U1-U2=系號(hào)。 顯然,U1∩U2→U1-U2。結(jié)論:分解2具有無(wú)損連接性. 但是分解2也不是好的方案。假設(shè)學(xué)生S3從D2系轉(zhuǎn)到D3系,要修改兩個(gè)關(guān)系,否則數(shù)據(jù)庫(kù)中的信息會(huì)不一致。這是由于分解得到的兩個(gè)關(guān)系模式不是互相獨(dú)立造成的。系號(hào)→宿舍樓號(hào)沒(méi)投影在同一個(gè)關(guān)系中。于是我們有要求模式分解保持函數(shù)依賴這條等價(jià)標(biāo)準(zhǔn)。結(jié)論:分解2雖然是無(wú)損分解,但丟失了函數(shù)依賴系號(hào)→宿舍樓號(hào)學(xué)號(hào)宿舍樓號(hào)S1AS2BS3BS4A學(xué)號(hào)系號(hào)S1D1S2D2S3D2S4D3分解3:S31(學(xué)號(hào),系號(hào)),S32(系號(hào),宿舍樓號(hào))F={學(xué)號(hào)→系號(hào),系號(hào)→宿舍樓號(hào)}1:保持函數(shù)依賴的。2:根據(jù) U1∩U2→U1-U2∈F+ 或 U1∩U2→U2-U1∈F+U1∩U2=系號(hào),U2-U1=宿舍樓號(hào)這一分解也具有無(wú)損連接性結(jié)論:分解3是一個(gè)好的分解4.3.3保持函數(shù)依賴的分解保持關(guān)系模式分解等價(jià)的另一個(gè)重要條件是關(guān)系模式的函數(shù)依賴集在分解后仍在數(shù)據(jù)庫(kù)模式中保持不變。即關(guān)系模式R到={R1,R2…Rk}的分解,應(yīng)使函數(shù)依賴集F,被F在這些Ri上的投影蘊(yùn)涵。F在AB,AC,DB,CD上的投影分別為{A→B},{A→C},?,{D→C}丟失了B→C,A→D,所以此分解不保持FD設(shè)關(guān)系模式R(A,B,C,D)F是R上成立的FD集,F(xiàn)={A→B,B→C,A→D,D→C},
={AB,AC,BD,CD}是R的一個(gè)分解。4.3.3保持函數(shù)依賴的分解4.3.4模式分解與模式等價(jià)問(wèn)題模式分解的兩個(gè)特性實(shí)際上涉及兩個(gè)數(shù)據(jù)庫(kù)模式的等價(jià)問(wèn)題,這種等價(jià)數(shù)據(jù)等價(jià)和依賴等價(jià)兩個(gè)方面。數(shù)據(jù)等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)實(shí)例應(yīng)表示同樣的信息內(nèi)容,用無(wú)損分解衡量。依賴等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)模式應(yīng)有相同的依賴集閉包。在依賴集閉包相等的情況下,數(shù)據(jù)的語(yǔ)義是不會(huì)出差錯(cuò)的。違反數(shù)據(jù)等價(jià)或語(yǔ)義等價(jià)的分解很難說(shuō)是一個(gè)好的分解。 但同時(shí)達(dá)到也不是簡(jiǎn)單的事情。4.3.4關(guān)于模式分解的幾個(gè)事實(shí)分解具有無(wú)損連接性和分解保持函數(shù)依賴是兩個(gè)相互獨(dú)立的標(biāo)準(zhǔn)。1.具有無(wú)損連接性性的分解不一定保持函數(shù)依賴?yán)绶纸?.2保持函數(shù)依賴的分解不一定具有無(wú)損連接性如SC(SNO,DNO,CNO,CREDIT)F={SNO→DNO,CNO→CREDIT}分解為兩個(gè)關(guān)系模式:SC1(SNO,DNO)SC2(CNO,CREDIT)這個(gè)分解保持函數(shù)依賴的分解不具有無(wú)損連接性結(jié)論:關(guān)系模式的一個(gè)分解可能具有無(wú)損連接性,可能是保持函數(shù)依賴,有可能是即具有無(wú)損連接性也保持函數(shù)依賴4.3.4關(guān)于模式分解的幾個(gè)事實(shí)若要求分解具有無(wú)損連接性,那么模式分解可以達(dá)到BCNF;若要求分解保持函數(shù)依賴,那么模式分解可以達(dá)到3NF,但不一定達(dá)到BCNF;若要求分解即具有無(wú)損連接性,又保持函數(shù)依賴,那么模式分解可以達(dá)到3NF,但不一定達(dá)到BCNF;4.4關(guān)系模式的范式
(NF,NormalForm)
第一范式(1NF)
第二范式(2NF)第三范式(3NF)
BCNF第四范式(4NF)第五范式(5NF)考核要求:了解考核要求:領(lǐng)會(huì)為什么要關(guān)系規(guī)范化?
關(guān)系模式的存儲(chǔ)異常:數(shù)據(jù)冗余、更新異常、插入異常和刪除異常
關(guān)系模式的設(shè)計(jì):把泛關(guān)系模式分解成規(guī)范化的數(shù)據(jù)庫(kù)模式。二維表的例子學(xué)號(hào)姓名專業(yè)課程號(hào)課程名教師系辦公室電話教室成績(jī)01張計(jì)算機(jī)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)13025894024940989張計(jì)算機(jī)CS02數(shù)學(xué)趙數(shù)學(xué)30235890323882376張計(jì)算機(jī)CS03英語(yǔ)陳外語(yǔ)5034589403050207102王網(wǎng)絡(luò)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)13025894024940973王網(wǎng)絡(luò)CS02數(shù)學(xué)趙數(shù)學(xué)30235890323882388王網(wǎng)絡(luò)CS03英語(yǔ)陳外語(yǔ)50345894030502003李通訊CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)130258940249409李通訊CS04C++周計(jì)算機(jī)303358903338832李通訊CS03英語(yǔ)陳外語(yǔ)503458940305020###########需要的知識(shí) 理解“非主屬性”、“完全函數(shù)依賴”、“候選鍵”、“部分函數(shù)依賴”、“傳遞函數(shù)依賴”這五個(gè)名詞的含義。
(1)候選鍵:可以唯一決定關(guān)系模式R中某元組值且不含有多余屬性的屬性集。
(2)非主屬性:即非鍵屬性,指關(guān)系模式R中不包含在任何建中的屬性。
(3)完全函數(shù)依賴:設(shè)R為任意給定關(guān)系,x、y其屬性集,若x→y,且對(duì)x中的任何真子集,x’都有x’→y。則稱y完全函數(shù)依賴于x。
(4)部分函數(shù)依賴:設(shè)R為任意給定關(guān)系,x、y其屬性集,若x→y,且x中存在一個(gè)真子集x’,x’滿足x’→y。則稱y部分函數(shù)依賴于x。
(5)傳遞函數(shù)依賴:設(shè)R為任意給定關(guān)系,x、y、z其屬性集,若x→y,y→x,y→z,則有x→z,則稱z傳遞函數(shù)依賴于x。1NF:第一范式1NF:第一范式——即關(guān)系模式中的屬性的值域中每一個(gè)值都是不可再分解的值。
如果某個(gè)數(shù)據(jù)庫(kù)模式都是第一范式的,則稱該數(shù)據(jù)庫(kù)模式是屬于第一范式的數(shù)據(jù)庫(kù)模式。
第二范式
如果關(guān)系模式R為第一范式,并且R中每一個(gè)非主屬性完全函數(shù)依賴于R的某個(gè)候選鍵,
則稱為第二范式模式。
在分析是否為第2范式時(shí),應(yīng)首先確定候選鍵,然后把關(guān)系模式中的非主屬性與鍵的依賴關(guān)系進(jìn)行考察,
是否都為完全函數(shù)依賴,如是,則此關(guān)系模式為2NF。
如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是2NF的,則此數(shù)據(jù)庫(kù)模式屬于2NF的數(shù)據(jù)庫(kù)模式。
第三范式3NF如果關(guān)系模式R是第二范式,且每個(gè)非主屬性都不傳遞依賴于R的候選鍵,則稱R為第三范式模式。
傳遞依賴的含義:在關(guān)系模式中,如果Y→X,X→A,且XY(X不決定Y)和AX(A不屬于X),那么Y→A是傳遞依賴。
Notice: 要求非主屬性都不傳遞依賴于候選鍵。
把泛關(guān)系模式R用一組關(guān)系模式的集合ρ={R1,R2,...,Rk}來(lái)表示(R1,R2,...,Rk都是R的子集,ρ就是數(shù)據(jù)庫(kù)模式)。
以ρ代替R的過(guò)程稱為關(guān)系模式的分解。
實(shí)際上,關(guān)系模式的分解不僅僅是屬性集合的分解,
它是對(duì)關(guān)系模式上的函數(shù)依賴集、以及關(guān)系模式的當(dāng)前值分解的具體表現(xiàn)。
第一范式消去非主屬性對(duì)鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對(duì)鍵的傳遞函數(shù)依賴消去主屬性對(duì)鍵的傳遞函數(shù)依賴普通二維表消去重復(fù)疊代不合理的分解會(huì)出現(xiàn)以下情況:失去函數(shù)依賴、或出現(xiàn)插入、刪除異常等情況。
模式分解的衡量標(biāo)準(zhǔn)有三種:
(1)分解具有無(wú)損聯(lián)接;
(2)分解要保持函數(shù)依賴;
(3)分解既要保持依賴,又要具有無(wú)損 聯(lián)接。
學(xué)院具體情況:一種課由一位老師任教,每種課在一個(gè)教室上,每位老師有一獨(dú)立的辦公室。學(xué)生選課表數(shù)據(jù)資料初步統(tǒng)計(jì)如下:?jiǎn)栴}:這是一個(gè)關(guān)系表嗎?不是學(xué)號(hào)姓名專業(yè)課程號(hào)課程名教師系辦公室電話教室成績(jī)01張計(jì)算機(jī)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)13025894024940989張計(jì)算機(jī)CS02數(shù)學(xué)趙數(shù)學(xué)30235890323882376張計(jì)算機(jī)CS03英語(yǔ)陳外語(yǔ)5034589403050207102王網(wǎng)絡(luò)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)13025894024940973王網(wǎng)絡(luò)CS02數(shù)學(xué)趙數(shù)學(xué)30235890323882388王網(wǎng)絡(luò)CS03英語(yǔ)陳外語(yǔ)50345894030502003李通訊CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)130258940249409李通訊CS04C++周計(jì)算機(jī)303358903338832李通訊CS03英語(yǔ)陳外語(yǔ)503458940305020###########第一范式消去非主屬性對(duì)鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對(duì)鍵的傳遞函數(shù)依賴消去主屬性對(duì)鍵的傳遞函數(shù)依賴普通二維表消去重復(fù)疊代學(xué)號(hào)姓名專業(yè)課程號(hào)課程名教師系辦公室電話教室成績(jī)01張計(jì)算機(jī)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)1302589402494098901張計(jì)算機(jī)CS02數(shù)學(xué)趙數(shù)學(xué)3023589032388237601張計(jì)算機(jī)CS03英語(yǔ)陳外語(yǔ)5034589403050207102王網(wǎng)絡(luò)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)1302589402494097302王網(wǎng)絡(luò)CS02數(shù)學(xué)趙數(shù)學(xué)3023589032388238802王網(wǎng)絡(luò)CS03英語(yǔ)陳外語(yǔ)50345894030502003李通訊CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)13025894024940903李通訊CS04C++周計(jì)算機(jī)30335890333883203李通訊CS03英語(yǔ)陳外語(yǔ)503458940305020###########去掉重復(fù)疊代部分得到如下表:?jiǎn)栴}:1、這是一個(gè)關(guān)系表嗎?3、還存在問(wèn)題嗎?2、這是第幾范式?是是第一范式問(wèn)題很多:1、插入問(wèn)題,新同學(xué)小趙不能被插入表中,因?yàn)樗€沒(méi)有選課,課程號(hào)不能為空(實(shí)體完整性的要求)。2、刪除問(wèn)題,小李不能被刪除,因?yàn)橹芾蠋煂⒈粍h除。3、更新問(wèn)題,修改陳老師相關(guān)信息很困難。如何結(jié)決這些問(wèn)題呢?第一范式消去非主屬性對(duì)鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對(duì)鍵的傳遞函數(shù)依賴消去主屬性對(duì)鍵的傳遞函數(shù)依賴普通二維表消去重復(fù)疊代方法:對(duì)關(guān)系進(jìn)行分解!
學(xué)號(hào)課程號(hào)成績(jī)姓名專業(yè)系辦公室教師課程名教室電話學(xué)號(hào)姓名專業(yè)01張計(jì)算機(jī)02王網(wǎng)絡(luò)03李通訊課程號(hào)課程名教室教師系辦公室電話CS01數(shù)據(jù)庫(kù)9409陳計(jì)算S02數(shù)學(xué)8823趙數(shù)學(xué)30235890323CS03英語(yǔ)5020陳計(jì)算S04C++3033周計(jì)算機(jī)88325890333學(xué)號(hào)課程號(hào)成績(jī)01CS018901CS027601CS037102CS017302CS028802CS0303CS0103CS0403CS02問(wèn)題:1、這是一個(gè)關(guān)系表嗎?是第二范式是2、這是第幾范式?3、還存在問(wèn)題嗎?存在,冗余、更新、刪除問(wèn)題如何結(jié)決這一問(wèn)題呢?學(xué)號(hào)課程號(hào)成績(jī)姓名專業(yè)系辦公室教師課程名教室電話學(xué)號(hào)課程號(hào)學(xué)號(hào)課程號(hào)成績(jī)姓名專業(yè)系辦公室教師課程名教室電話學(xué)號(hào)課程號(hào)第一范式消去非主屬性對(duì)鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對(duì)鍵的傳遞函數(shù)依賴消去主屬性對(duì)鍵的傳遞函數(shù)依賴普通二維表消去重復(fù)疊代方法:對(duì)關(guān)系進(jìn)行進(jìn)一步的分解!
學(xué)號(hào)姓名專業(yè)01張計(jì)算機(jī)02王網(wǎng)絡(luò)03李通訊教師系辦公室電話陳計(jì)算計(jì)算機(jī)88325890333趙數(shù)學(xué)30235890323課程號(hào)課程名教師教室CS01數(shù)據(jù)庫(kù)陳9409CS02數(shù)學(xué)趙8823CS03英語(yǔ)陳5020CS04C++周3033學(xué)號(hào)課程號(hào)成績(jī)01CS018901CS027601CS037102CS017302CS028802CS0303CS0103CS0403CS02問(wèn)題:這一關(guān)系還有問(wèn)題嗎? 這一關(guān)系與原關(guān)系等價(jià)嗎?與原關(guān)系的信息仍然一致嗎?學(xué)號(hào)姓名專業(yè)01張計(jì)算機(jī)02王網(wǎng)絡(luò)03李通訊教師系辦公室電話陳計(jì)算計(jì)算機(jī)88325890333趙數(shù)學(xué)30235890323學(xué)號(hào)課程號(hào)成績(jī)01CS018901CS027601CS037102CS017302CS028802CS0303CS0103CS0403CS02學(xué)號(hào)姓名專業(yè)課程號(hào)課程名教師系辦公室電話教室成績(jī)01張計(jì)算機(jī)CS01數(shù)據(jù)庫(kù)陳計(jì)算機(jī)1302589402494098903李通訊CS03英語(yǔ)陳外語(yǔ)503458940305020###########我們得到了可行的關(guān)系集!課程號(hào)課程名教師教室CS01數(shù)據(jù)庫(kù)陳9409CS02數(shù)學(xué)趙8823CS03英語(yǔ)陳5020CS04C++周3033BCNFBCNF范式是第三范式的改進(jìn)形式,建立在第一范式的基礎(chǔ)上。如果關(guān)系模式R是第一范式,且所有的函數(shù)依賴X→Y(Y不屬于X),決定因素X都包含了R的一個(gè)候選鍵,那么稱R是BCNF范式。BCNF從BCNF的定義中可以明顯得出如下結(jié)論:1、所有非主屬性對(duì)鍵是完全依賴。2、所有主屬性對(duì)不包含它的鍵是完全函數(shù)依賴。3、沒(méi)有屬性完全函數(shù)依賴于非鍵的任何的屬性組。BCNFsct(s,c,t)//學(xué)生,課程,教師t→c//每位教師只上一門(mén)課s,c→t//某學(xué)生選定一門(mén)課,就對(duì)應(yīng)一位老師s,t→c //每門(mén)課有若干位教師sctstcsct∈3NF,sct∈BCNF(S,t),(S,C)為候選鍵。t→cSCT張數(shù)據(jù)庫(kù)陳張數(shù)學(xué)趙張英語(yǔ)錢(qián)王數(shù)據(jù)庫(kù)陳王數(shù)學(xué)鄭王英語(yǔ)孫李數(shù)據(jù)庫(kù)吳李英語(yǔ)錢(qián)###SCT張數(shù)據(jù)庫(kù)陳張數(shù)學(xué)趙張英語(yǔ)錢(qián)王數(shù)據(jù)庫(kù)陳王數(shù)學(xué)鄭王英語(yǔ)孫李數(shù)據(jù)庫(kù)吳李英語(yǔ)錢(qián)###從BCNF的定義中可以明顯得出如下結(jié)論:1、所有非主屬性對(duì)鍵是完全依賴。2、所有主屬性對(duì)不包含它的鍵是完全函數(shù)依賴。課程號(hào)課程名教室教師系辦公室電話CS01數(shù)據(jù)庫(kù)9409陳計(jì)算S02數(shù)學(xué)8823趙數(shù)學(xué)30235890323CS03英語(yǔ)5020陳計(jì)算S04C++3033周計(jì)算機(jī)883258903333、沒(méi)有屬性完全函數(shù)依賴于非鍵的任何的屬性組。stcBCNF非BCNF的不良特性插入異常:如果沒(méi)有學(xué)生選修某位老師的任課,則該老師擔(dān)任課程的信息就無(wú)法插入。刪除異常:刪除學(xué)生選課信息,會(huì)刪除掉老師的任課信息。更新異常:如果老師所教授的課程有所改動(dòng),則所有選修該老師課程的學(xué)生元組都要做改動(dòng)。數(shù)據(jù)冗余:每位學(xué)生都存儲(chǔ)了有關(guān)老師所教授的課程的信息。癥由:
主屬性對(duì)鍵的傳遞(不良)依賴。sct(s,c,t)
BCNF如sctBCNF,因?yàn)閠C,而t不含有鍵。改造 將sct分解為(S,t),(t,c)。TC陳數(shù)據(jù)庫(kù)趙數(shù)學(xué)錢(qián)英語(yǔ)鄭數(shù)學(xué)孫英語(yǔ)吳數(shù)據(jù)庫(kù)##sct(s,c,t)ST張陳張趙張錢(qián)王陳王鄭王孫李吳李錢(qián)##思考
(S#,C#,ORDER),表示學(xué)生選修課程的名次,有函數(shù)依賴(S#,C#)ORDER,(C#,ORDER)S#,它屬于BCNF嗎?
???(S#,ORDER)C#
學(xué)號(hào)課程號(hào)單科排名01CS01101CS02201CS0302CS01202CS02302CS0303CS01303CS0403CS0212、所有主屬性對(duì)不包含它的鍵是完全函數(shù)依賴。SCT張數(shù)據(jù)庫(kù)陳張數(shù)學(xué)趙張英語(yǔ)錢(qián)王數(shù)據(jù)庫(kù)陳王數(shù)學(xué)鄭王英語(yǔ)孫李數(shù)據(jù)庫(kù)吳李英語(yǔ)錢(qián)###BCNF最高范式BCNF是基于函數(shù)依賴的最高范式但不是數(shù)據(jù)庫(kù)模式設(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ī)范化小結(jié)6.2.7多值依賴[例9]學(xué)校中某一門(mén)課程由多個(gè)教師講授,他們使用相同的一套參考書(shū)。每個(gè)教員可以講授多門(mén)課程,每種參考書(shū)可以供多門(mén)課程使用。
………課程C教員T參考書(shū)B(niǎo)
物理
數(shù)學(xué)
計(jì)算數(shù)學(xué)李勇王軍
李勇張平
張平周峰
普通物理學(xué)光學(xué)原理物理習(xí)題集
數(shù)學(xué)分析微分方程高等代數(shù)
數(shù)學(xué)分析...…
多值依賴(續(xù))非規(guī)范化關(guān)系普通物理學(xué)光學(xué)原理物理習(xí)題集普通物理學(xué)光學(xué)原理物理習(xí)題集數(shù)學(xué)分析微分方程高等代數(shù)數(shù)學(xué)分析微分方程高等代數(shù)…李勇李勇李勇王軍王軍王軍李勇李勇李勇張平張平張平
…物理物理物理物理物理物理數(shù)學(xué)數(shù)學(xué)數(shù)學(xué)數(shù)學(xué)數(shù)學(xué)數(shù)學(xué)…
參考書(shū)B(niǎo)教員T課程C多值依賴(續(xù))用二維表表示Teaching多值依賴(續(xù))Teaching∈BCNFTeaching具有唯一候選碼(C,T,B),即全碼
多值依賴(續(xù))
Teaching模式中存在的問(wèn)題(1)數(shù)據(jù)冗余度大(2)插入操作復(fù)雜(3)刪除操作復(fù)雜(4)修改操作復(fù)雜存在多值依賴多值依賴(續(xù))定義6.9
設(shè)R(U)是一個(gè)屬性集U上的一個(gè)關(guān)系模式,X、Y和Z是U的子集,并且Z=U-X-Y。關(guān)系模式R(U)中多值依賴
X→→Y成立,當(dāng)且僅當(dāng)對(duì)R(U)的任一關(guān)系r,給定的一對(duì)(x,z)值,有一組Y的值,這組值僅僅決定于x值而與z值無(wú)關(guān)例Teaching(C,T,B)
(X,Z,Y)給定的一對(duì)(x,z)有一組y的值,這組值僅僅決定于x值而與z值無(wú)關(guān),X→→Y(C,T,B)給定的一對(duì)(c,t)有一組b的值,這組值僅僅決定于c值而與t值無(wú)關(guān),C→→B給定一對(duì)(c,b)有一組t的值
?C→→T問(wèn)題:還有那些多值依賴?多值依賴(續(xù))多值依賴的另一個(gè)等價(jià)的形式化的定義:在R(U)的任一關(guān)系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值所得的兩個(gè)新元組必在r中),則Y多值依賴于X,記為X→→Y。這里,X,Y是U的子集,Z=U-X-Y。多值依賴(續(xù))平凡多值依賴和非平凡的多值依賴
若X→→Y,而Z=φ,則稱
X→→Y為平凡的多值依賴 否則稱X→→Y為非平凡的多值依賴多值依賴的性質(zhì)(1)多值依賴具有對(duì)稱性 若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)多值依賴的有效性與屬性集的范圍有關(guān)(2)
若函數(shù)依賴X→Y在R(U)上成立,則對(duì)于任何Y'Y均有X→Y'成立多值依賴X→→Y若在R(U)上成立,不能斷言對(duì)于任何Y'Y有X→→Y'成立多值依賴(續(xù))[例10]關(guān)系模式WSC(W,S,C)W表示倉(cāng)庫(kù),S表示保管員,C表示商品假設(shè)每個(gè)倉(cāng)庫(kù)有若干個(gè)保管員,有若干種商品每個(gè)保管員保管所在的倉(cāng)庫(kù)的所有商品每種商品被所有保管員保管
多值依賴(續(xù))WSCW1S1C1W1S1C2W1S1C3W1S2C1W1S2C2W1S2C3W2S3C4W2S3C5W2S4C4W2S4C5多值依賴(續(xù))W→→S且W→→C用下圖表示這種對(duì)應(yīng)
6.2.84NF定義6.10關(guān)系模式R<U,F(xiàn)>∈1NF,如果對(duì)于R的每個(gè)非平凡多值依賴X→→Y(YX),X都含有碼,則R∈4NF。如果R∈4NF,則R∈BCNF不允許有非平凡且非函數(shù)依賴的多值依賴允許的非平凡多值依賴是函數(shù)依賴4NF(續(xù))例:Teaching(C,T,B)∈4NF
存在非平凡的多值依賴C→→T,且C不是碼用投影分解法把Teaching分解為如下兩個(gè)關(guān)系模式:
CT(C,T)∈4NF CB(C,B)∈4NFC→→T,C→→B是平凡多值依賴
4NF(續(xù))例:關(guān)系模式WSC(W,S,C)∈4NF
存在非平凡的多值依賴W→→C,W→→S用投影分解法把WSC分解為如下兩個(gè)關(guān)系模式:
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ī)范化小結(jié)6.2.9規(guī)范化小結(jié)關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化理論是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的工具目的:盡量消除插入、刪除異常,修改復(fù)雜,數(shù)據(jù)冗余基本思想:逐步消除數(shù)據(jù)依賴中不合適的部分實(shí)質(zhì):概念的單一化規(guī)范化小結(jié)(續(xù))不能說(shuō)規(guī)范化程度越高的關(guān)系模式就越好在設(shè)計(jì)數(shù)據(jù)庫(kù)模式結(jié)構(gòu)時(shí),必須對(duì)現(xiàn)實(shí)世界的實(shí)際情況和用戶應(yīng)用需求作進(jìn)一步分析,確定一個(gè)合適的、能夠反映現(xiàn)實(shí)世界的模式上面的規(guī)范化步驟可以在其中任何一步終止范式之間的關(guān)系5NF
4NF
BCNF3NF2NF1NF
第一范式消去非主屬性對(duì)鍵的部分函數(shù)依賴BCNF第二范式第三范式消去非主屬性對(duì)鍵的傳遞函數(shù)依賴消去主屬性對(duì)鍵的傳遞函數(shù)依賴
出現(xiàn)問(wèn)題的可能性逐步減少第四范式消除非平凡且非函數(shù)依賴的多值依賴關(guān)系范式的優(yōu)點(diǎn)及缺點(diǎn)優(yōu)點(diǎn):隨著級(jí)別的提高,出現(xiàn)問(wèn)題(數(shù)據(jù)冗余、 更新異常、插入異常和刪除異常)的可能性減少,甚至杜絕。表現(xiàn)方式直觀和靈活。缺點(diǎn):運(yùn)行速度(相對(duì))較慢。規(guī)范化基本步驟:
2.關(guān)系模式的分解及其指標(biāo)
投影分解法:一個(gè)關(guān)系模式R<U,F>,其中,U為該關(guān)系R的屬性集,F(xiàn)為該關(guān)系R上的數(shù)據(jù)依賴,分解為若干個(gè)關(guān)系模式R1<U1,F1>,R2<U2,F2>…,Rn<Un,Fn>,其中,U=U1∪U2∪…∪Un,且UiUj,Ri為R在Ui上的投影,此即意味著將存儲(chǔ)于一張表T中的數(shù)據(jù)分散到若干張表T1,T2,…,Tn中去,其中,Ti是T在屬性集Ui上的投影。關(guān)系模式分解的一般要求:關(guān)系模式經(jīng)分解后,應(yīng)與原來(lái)的關(guān)系等價(jià)。等價(jià)是指兩者對(duì)數(shù)據(jù)的使用者來(lái)說(shuō)是等價(jià)的,即:對(duì)分解前后的數(shù)據(jù),做同樣內(nèi)容的查詢,會(huì)產(chǎn)生同樣的結(jié)果。分解的兩個(gè)指標(biāo):無(wú)損分解和函數(shù)依賴保持性。分解不能丟失任何信息,否則就沒(méi)有意義。無(wú)損分解:若R與R1,R2,…,Rn自然連接的結(jié)果相等,則稱關(guān)系模式R的這個(gè)分解具有無(wú)損連接性(Loss-lessJoin)。只有具有無(wú)損連接性的分解才能夠保證不丟失信息,無(wú)損連接性的分解即為無(wú)損分解。
保持函數(shù)依賴:若F所邏輯蘊(yùn)含的函數(shù)依賴一定也由分解得到的某個(gè)關(guān)系模式中的函數(shù)依賴Fi所邏輯蘊(yùn)含,則稱關(guān)系模式R的這個(gè)分解是保持函數(shù)依賴(PreserveDependency)的。關(guān)系模式的分解準(zhǔn)則:①
只滿足無(wú)損分解要求;
②
既滿足無(wú)損分解要求,又滿足保持依賴要求。BCNF、第四范式、第五范式不是考試內(nèi)容4.4.7模式設(shè)計(jì)方法的原則關(guān)系模式R相對(duì)于函數(shù)依賴集F分解成數(shù)據(jù)庫(kù)模式={R1,R2,…Rk},一般應(yīng)具有下面四項(xiàng)特性:1、中每個(gè)關(guān)系模式Ri上應(yīng)有某種范式性質(zhì)2、無(wú)損聯(lián)接3、保持函數(shù)依賴集4、最小性,指中模式個(gè)數(shù)應(yīng)最少和模式中屬性總數(shù)應(yīng)最少。第四章主要內(nèi)容1、函數(shù)依賴的定義2、鍵(候選鍵)的定義和判定3、最小函數(shù)依賴集的求法4、關(guān)系模式的分解(無(wú)損聯(lián)接和保持函數(shù)依賴)5、關(guān)系模式的范式及范式級(jí)別判定的依據(jù)6、分解成BCNF和3NF的算法7、多值依賴補(bǔ)充材料FINISH實(shí)例
建立關(guān)于系、學(xué)生、班級(jí)、社團(tuán)等信息的一個(gè)關(guān)系數(shù)據(jù)庫(kù),一個(gè)系有若干個(gè)專業(yè),每個(gè)專業(yè)每年只招一個(gè)班,每個(gè)班有若干個(gè)學(xué)生,一個(gè)系的學(xué)生住在同一宿舍區(qū),每個(gè)學(xué)生可以參加若干個(gè)社團(tuán),每個(gè)社團(tuán)有若干學(xué)生。
描述學(xué)生的屬性有:學(xué)號(hào)、姓名、出生年月、系名、班級(jí)號(hào)、宿舍區(qū)。
描述班級(jí)的屬性有:班級(jí)號(hào)、專業(yè)名、系名、人數(shù)、入校年份。
描述系的屬性有:系名、系號(hào)、系辦公地點(diǎn)、人數(shù)。
描述社團(tuán)的屬性有:社團(tuán)名、成立年份、地點(diǎn)、人數(shù)、學(xué)生參加某社團(tuán)的年份。請(qǐng)給出關(guān)系模式,寫(xiě)出每個(gè)關(guān)系模式的最小函數(shù)依賴集,指出是否存在傳遞函數(shù)依賴,對(duì)于函數(shù)依賴左部是多屬性的情況,討論函數(shù)依賴是完全函數(shù)依賴還是部分函數(shù)依賴。指出各關(guān)系的候選鍵、外部鍵?
各關(guān)系模式如下:
學(xué)生(學(xué)號(hào),姓名,出生年月,系名,班級(jí)號(hào),宿舍區(qū))
班級(jí)(班級(jí)號(hào),專業(yè)名,系號(hào),人數(shù),入校年份)
系(系名,系號(hào),系辦公地點(diǎn),人數(shù))
社團(tuán)(社團(tuán)名,成立年份,地點(diǎn),人數(shù))
加入社團(tuán)(社團(tuán)名,學(xué)號(hào),學(xué)生參加社團(tuán)的年份)
學(xué)生(學(xué)號(hào),姓名,出生年月,系名,班級(jí)號(hào),宿舍區(qū))
“學(xué)生”關(guān)系的最小函數(shù)依賴集為:
Fmin={學(xué)號(hào)→姓名,學(xué)號(hào)→班級(jí)號(hào),學(xué)號(hào)→出生年月,notice:在關(guān)系模式中,如果Y→X,X→A,且X→
Y(X不決定Y),A不屬于X,那么稱Y→A是傳遞依賴。系名,系名學(xué)號(hào)→→宿舍區(qū)}以上關(guān)系模式中存在傳遞函數(shù)依賴,如:學(xué)號(hào)→系名,系名→宿舍區(qū)候選鍵是?學(xué)號(hào)。外部鍵是?班級(jí)號(hào),系名。班級(jí)(班級(jí)號(hào),專業(yè)名,系名,人數(shù),入校年份)
“班級(jí)”關(guān)系的最小函數(shù)依賴集為:
Fmin={(系名,專業(yè)名)→班級(jí)號(hào),班級(jí)號(hào)→人數(shù),班級(jí)號(hào)→入校年份,班級(jí)號(hào)→系名,班級(jí)號(hào)→專業(yè)名}(假設(shè)沒(méi)有相同的系,不同系中專業(yè)名可以相同)
以上關(guān)系模式中是否存在傳遞函數(shù)依賴?不存在傳遞函數(shù)依賴。
“(系名,專業(yè)名)→班級(jí)號(hào)”是完全函數(shù)依賴。候選鍵是?(系名,專業(yè)名),班級(jí)號(hào)。外部鍵是?系名。系(系名,系號(hào),系辦公地點(diǎn),人數(shù))
“系”關(guān)系的最小函數(shù)依賴集為:Fmi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024漆工施工合同范本-高速公路護(hù)欄涂裝工程3篇
- 2024年著作權(quán)使用許可合同標(biāo)準(zhǔn)模板
- 2024年版建筑包工協(xié)議模板集錦版B版
- 二零二五年創(chuàng)意市集彩繪墻體素材采購(gòu)協(xié)議2篇
- 2024年物業(yè)管理公司保安服務(wù)合同
- 2024年甲乙雙方關(guān)于文化旅游景區(qū)開(kāi)發(fā)與合作合同
- 2024年紡織品交易標(biāo)準(zhǔn)協(xié)議稿版B版
- 2024年物流倉(cāng)儲(chǔ)服務(wù)合同具體條款
- 2025年度白酒新品研發(fā)與生產(chǎn)合作協(xié)議3篇
- 2024年私人汽車(chē)品牌授權(quán)銷售合同范本3篇
- 職業(yè)健康檢查管理制度
- 電梯維保管理體系手冊(cè)
- 2024年國(guó)家電網(wǎng)招聘之通信類題庫(kù)及參考答案(考試直接用)
- 第12課《詞四首》課件+2023-2024學(xué)年統(tǒng)編版語(yǔ)文九年級(jí)下冊(cè)
- 2024年R1快開(kāi)門(mén)式壓力容器操作證考試題庫(kù)及答案
- 《數(shù)學(xué)物理方法》期末測(cè)試卷及答案
- 《上帝擲骰子嗎:量子物理史話》導(dǎo)讀學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 鐵路工務(wù)勞動(dòng)安全
- 滬科版九年級(jí)物理下冊(cè)教案全冊(cè)
- 歷史期中復(fù)習(xí)課件八年級(jí)上冊(cè)復(fù)習(xí)課件(統(tǒng)編版)
- 幕墻作業(yè)安全技術(shù)交底
評(píng)論
0/150
提交評(píng)論