數(shù)據(jù)庫(kù)系統(tǒng)原理第11章.ppt_第1頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理第11章.ppt_第2頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理第11章.ppt_第3頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理第11章.ppt_第4頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理第11章.ppt_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化設(shè)計(jì)是指面對(duì)一個(gè)現(xiàn)實(shí)問(wèn)題,如何選擇一個(gè)比較好的關(guān)系模式集合,即應(yīng)該構(gòu)造幾個(gè)關(guān)系模式,每個(gè)關(guān)系由哪些屬性組成。規(guī)范化設(shè)計(jì)理論主要包括三個(gè)方面的內(nèi)容:數(shù)據(jù)依賴、范式和模式設(shè)計(jì)方法。其中數(shù)據(jù)依賴起著核心的作用。數(shù)據(jù)依賴研究數(shù)據(jù)之間的聯(lián)系,范式是關(guān)系模式的標(biāo)準(zhǔn),模式設(shè)計(jì)方法是自動(dòng)化設(shè)計(jì)的基礎(chǔ)。規(guī)范化設(shè)計(jì)理論對(duì)關(guān)系數(shù)據(jù)庫(kù)結(jié)構(gòu)的設(shè)計(jì)起著重要的作用。,第11章 關(guān)系數(shù)據(jù)規(guī)范化理論P(yáng)250,2,例11-1 設(shè)有一個(gè)關(guān)系模式R(TNAME,ADDRESS,CNO,CNAME),其屬性分別表示教師姓名、教師地址、任教課程的編號(hào)和課程名。,在數(shù)據(jù)庫(kù)設(shè)計(jì)中,如果一個(gè)關(guān)系模式設(shè)計(jì)得不好,就會(huì)出現(xiàn)像

2、文件系統(tǒng)一樣的數(shù)據(jù)冗余、異常、不一致等問(wèn)題。,圖11.1,3,該模式出現(xiàn)的問(wèn)題有: (1) 數(shù)據(jù)冗余: 如果一個(gè)教師教幾門課程,那么這個(gè)教師的地址就要重復(fù)幾次存儲(chǔ)。 (2) 操作異常: 由于數(shù)據(jù)的冗余,在對(duì)數(shù)據(jù)操作時(shí)會(huì)引起各種異常: 修改異常。例如教師t1教三門課程,在關(guān)系中就會(huì)有三個(gè)元組。如果他的地址變了,這三個(gè)元組中的地址都要改變。若有一個(gè)元組中的地址未更改,就會(huì)造成這個(gè)教師的地址不惟一,產(chǎn)生不一致現(xiàn)象。,4, 插入異常。如果一個(gè)教師剛調(diào)來(lái),尚未分派教學(xué)任務(wù),那么要將教師的姓名和地址存儲(chǔ)到關(guān)系中去時(shí),在屬性CNO和CNAME上就沒(méi)有值(空值)。在數(shù)據(jù)庫(kù)技術(shù)中空值的語(yǔ)義是非常復(fù)雜的,對(duì)帶空值

3、元組的檢索和操作也十分麻煩。 刪除異常。如果在是上圖11.1中要取消教師t3的教學(xué)任務(wù),那么就要把這個(gè)教師的元組刪去,同時(shí)也把t3的地址信息從表中刪去了。這是一種不合適的現(xiàn)象。,5,可以說(shuō),關(guān)系模式R不是一個(gè)好的模式。一個(gè)“好”的模式應(yīng)當(dāng)不會(huì)發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡量少。 規(guī)范化原則:“關(guān)系模式有操作異?;蛉哂鄦?wèn)題,就分解它?!?是否算最佳分解? 那末,什么樣的關(guān)系模式是最優(yōu)的?標(biāo)準(zhǔn)是什么?如何實(shí)現(xiàn)?,6,如何構(gòu)造合適的關(guān)系模式?應(yīng)構(gòu)造幾個(gè)關(guān)模式?每個(gè)關(guān)系模式由哪些屬性組成? 這就關(guān)系到數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)問(wèn)題,7,X函數(shù)決定Y,或Y函數(shù)依賴于X可表示為: XY 如果有一個(gè)關(guān)

4、系模式R(A1,A2,,An),X和Y為A1,A2,,An的子集,那么對(duì)于關(guān)系R中的任意一個(gè)x值,都只有一個(gè)y值與之對(duì)應(yīng),則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,11.1.1函數(shù)依賴的基本概念,11.1 函數(shù)依賴 P248,8,函數(shù)依賴是屬性間基本的一種依賴,它是關(guān)鍵碼概念的推廣。 定義1 設(shè)有關(guān)系模式R(U),X和Y是屬性集U的子集,若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴(Functional Dependency,簡(jiǎn)記為FD)于X,記作XY。 FD是對(duì)關(guān)系模式R的一切可能的關(guān)系r定義的。對(duì)于r的任意兩個(gè)

5、元組,如果X值相同,則要求Y值也相同,即對(duì)一個(gè)X值有唯一個(gè)Y值與之對(duì)應(yīng)。該定義類似于數(shù)學(xué)中的單值函數(shù)定義。,9,例11-2: 有一個(gè)關(guān)于學(xué)生選課、教師任課的關(guān)系模式: R(SNO,SNAME,CNO,GRADE,CNAME,TNAME,TAGE) 屬性分別表示學(xué)生學(xué)號(hào)、姓名、選修課程的課程號(hào)、成績(jī)、課程名、任課教師姓名和年齡等意義。 如果規(guī)定,每個(gè)學(xué)號(hào)只能有一個(gè)學(xué)生姓名,每個(gè)課程號(hào)只能決定一門課程,那么可寫成下列FD形式: SNOSNAME CNOCNAME 每個(gè)學(xué)生每學(xué)一門課程,有一個(gè)成績(jī),那么可寫出下列FD: (SNO,CNO)GRADE 還可以寫出其他一些FD: CNOCNAME,TNA

6、ME,TAGE) TNAMETAGE,注意:函數(shù)依賴不是指關(guān)系R的某個(gè)或某些關(guān)系滿足的約束條件, 而是指R的一切關(guān)系均要滿足的約束條件。,10,對(duì)于函數(shù)依賴的定義注意以下三點(diǎn): 函數(shù)依賴是一個(gè)基于關(guān)系模式(不是一個(gè)關(guān)系模式的特定實(shí)例)的函數(shù)概念,即如果一個(gè)關(guān)系模式R中存在函數(shù)依賴XY,則要求該模式的所有具體關(guān)系都滿足XY。 函數(shù)依賴不取決于屬性構(gòu)成關(guān)系的方式(即關(guān)系結(jié)構(gòu)),而是關(guān)系所表達(dá)的信息本身的語(yǔ)義特性,我們只能根據(jù)這種語(yǔ)義信息確定函數(shù)依賴,沒(méi)有其他途徑。 函數(shù)依賴是數(shù)據(jù)庫(kù)設(shè)計(jì)者對(duì)于關(guān)系模式的一種斷言或決策,即在設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)時(shí)不僅要設(shè)計(jì)關(guān)系結(jié)構(gòu),而且要定義數(shù)據(jù)依賴的條件,限制進(jìn)入關(guān)系的

7、所有元組都必須符合所定義的條件,否則拒絕接受輸入。,11,11.1.2 一些術(shù)語(yǔ)和符號(hào) P249,設(shè)有關(guān)系模式R(A1,A2,An),X和Y為(A1,A2,An)的子集,則有以下結(jié)論: (1)如果XY,但Y不包含于X,則稱XY是非平凡的函數(shù)依賴。 (2)如果Y函數(shù)不依賴于X,則記為X Y。 (3)如果XY ,則稱X為決定因子。 (4)如果XY ,并且,則Y X,記X Y (5)如果XY ,并且對(duì)于X的任意一個(gè)真子集X都有 X Y,則稱Y完全函數(shù)依賴于X,記為X f Y。如果 X Y成立,則稱Y部分依賴于X,記為X p Y,12,(6)如果XY (非平凡的函數(shù)依賴,并且Y X)、Y Z,則稱Z傳

8、遞函數(shù)依賴于X。 例11-3:P249例11.1 11.2,13,11.2 關(guān)系規(guī)范化 P251,設(shè)用U表示關(guān)系模式R的屬性全集,即U=A1,A2,An,用F表示關(guān)系模式R上的函數(shù)依賴集,則關(guān)系模式R可表示為R(U,F(xiàn))。 1、候選碼 設(shè)K為R(U,F(xiàn))中的屬性,若K f U,則K為R的候選碼(K為決定R全部屬性值的最小屬性組)。,11.2 .1 關(guān)系模式中的碼,14,主碼:關(guān)系R(U,F)中可能有多個(gè)候選碼,則選其中一個(gè)作為主碼 全碼:候選碼為整個(gè)屬性組 主屬性:在R(U,F)中,包含在任一候選碼中的屬性 非主屬性:在R(U,F)中,不包含在任一候選碼中的屬性 例11-4: P251例11.

9、3和11.4,15,2、外碼 用于在關(guān)系表之間建立關(guān)聯(lián)的屬性(組)稱為外碼。,16,關(guān)系模式的好與壞,用什么標(biāo)準(zhǔn)衡量?這個(gè)標(biāo)準(zhǔn)就模式的范式(Normal Forms,簡(jiǎn)記為NF)。范式的種類與數(shù)據(jù)依賴有著直接的聯(lián)系,基于FD的范式有1NF、2NF、3NF、BCNF等多種。 在不提及FD時(shí),關(guān)系中是不可能有冗余的問(wèn)題,但是當(dāng)存在FD時(shí),關(guān)系中就有可能存在數(shù)據(jù)冗余問(wèn)題。 1NF是關(guān)系模式的基礎(chǔ);2NF已成為歷史,一般不再提及;在數(shù)據(jù)庫(kù)設(shè)計(jì)中最常用的是3NF和BCNF。,11.2 .2 范式 P251,17,對(duì)于各種范式之間的聯(lián)系有:,5NF,4NF,2NF,BCNF,3NF,1NF,范式越高、規(guī)范

10、化的程度越高,關(guān)系模式就越好。,18,1、第一范式,定義: 如果關(guān)系模式R的每個(gè)關(guān)系r的屬性值都是不可分的原子值,那么稱R是第一范式(first normal form,簡(jiǎn)記為1NF)的模式。 滿足1NF的關(guān)系稱為規(guī)范化的關(guān)系,否則稱為非規(guī)范化的關(guān)系。關(guān)系數(shù)據(jù)庫(kù)研究的關(guān)系都是規(guī)范化的關(guān)系。例如關(guān)系模式R(NAME, ADDRESS,PHONE),如果一個(gè)人有兩個(gè)電話號(hào)碼(PHONE),那么在關(guān)系中至少要出現(xiàn)兩個(gè)元組,以便存儲(chǔ)這兩個(gè)號(hào)碼。 1NF是關(guān)系模式應(yīng)具備的最起碼的條件。,非規(guī)范模式變?yōu)?NF: (1) 把不含單純值的屬性分解為多個(gè)原子值。 (2) 把關(guān)系模式分解。,19,2、第二范式,定

11、義 如果關(guān)系模式R是1NF,且每個(gè)非主屬性完全函數(shù)依賴于候選鍵(主碼),那么稱R是第二范式(2NF)的模式。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是2NF,則稱數(shù)據(jù)庫(kù)模式為2NF的數(shù)據(jù)庫(kù)模式。,20,例11-5: 設(shè)關(guān)系模式R(SNO,CNO,GRADE,TNAME,TADDR)的屬性分別表示學(xué)生學(xué)號(hào)、選修課程的編號(hào)、成績(jī)、任課教師姓名和教師地址等意義。(SNO,CNO)是R的候選鍵。 R上有兩個(gè)FD:(SNO,CNO)(TNAME,TADDR)和CNO(TNAME,TADDR),因此前一個(gè)FD是局部依賴,R不是2NF模式。此時(shí)R的關(guān)系就會(huì)出現(xiàn)冗余和異常現(xiàn)象。譬如某一門課程有100個(gè)學(xué)生選修,那么在關(guān)

12、系中就會(huì)存在100個(gè)元組,因而教師的姓名和地址就會(huì)重復(fù)100次。 如果把R分解成R1(CNO,TNAME,TADDR)和R2(SNO,CNO,GRADE)后,局部依賴(SNO,CNO)(TNAME,TADDR)就消失了。 R1和R2都是2NF模式。,21,算法: 分解成2NF模式集的算法 設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD XZ,并且Z是非主屬性和XW,那么WZ就是一個(gè)局部依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式R1(XZ),主鍵是X;R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCES R1)。 利用外鍵和主鍵的聯(lián)接可以從R1和R2重新得到R。 如果R1和R2還不是2NF,

13、則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是2NF為止。 如:在關(guān)系模式R(SNO,CNO,GRADE,TNAME,TADDR)中,W=SNO,CNO Z=TNAME,TADDR,X=CNO,Y=SNO,CNO,GRADE,22,3、第三范式,定義 如果XY,YA,且YX和 AY,那么稱XA是傳遞依賴(A傳遞依賴于X)。 定義 如果關(guān)系模式R是2NF,且每個(gè)非主屬性都不傳遞依賴于R的主碼,那么稱R是第三范式(3NF)的模式。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是3NF,則稱其為3NF的數(shù)據(jù)庫(kù)模式 。,23,例11-6: 在上例中,R2是2NF模式,而且也已是3NF模式。但R1(CNO,TNA

14、ME,TADDR)是2NF模式,卻不一定是3NF模式。如果R1中存在函數(shù)依賴CNOTNAME和TNAMETADDR,那么CNOTADDR就是一個(gè)傳遞依賴,即R1不是3NF模式。此時(shí)R1的關(guān)系中也會(huì)出現(xiàn)冗余和異常操作。譬如一個(gè)教師開設(shè)五門課程,那么關(guān)系中就會(huì)出現(xiàn)五個(gè)元組,教師的地址就會(huì)重復(fù)五次。 如果把R2分解成R21(TNAME,TADDR)和R22(CNO,TNAME)后,CNOTADDR就不會(huì)出現(xiàn)在R21和R22中。這樣R21和R22都是3NF模式。,24,算法 分解成3NF模式集的算法 設(shè)關(guān)系模式R(U),主鍵是W,R上還存在FD XZ。并且Z是非主屬性,ZX,且X不是候選鍵,這樣WZ就

15、是一個(gè)傳遞依賴。此時(shí)應(yīng)把R分解成兩個(gè)模式: R1(XZ),主鍵是X; R2(Y),其中Y=U-Z,主鍵仍是W,外鍵是X(REFERENCES R1)。 利用外鍵和主鍵相匹配機(jī)制,R1和R2通過(guò)聯(lián)接可以重新得到R。 如果R1和R2還不是3NF,則重復(fù)上述過(guò)程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是3NF為止。,25,違反3NF的傳遞依賴的三種情況,部分依賴,鍵是超鍵,傳遞依賴,26,4、BCNF,定義 如果關(guān)系模式R是1NF,且每個(gè)屬性都不傳遞依賴于R的候選鍵,那么稱R是BCNF的模式。如果數(shù)據(jù)庫(kù)模式中每個(gè)關(guān)系模式都是BCNF,則稱為BCNF的數(shù)據(jù)庫(kù)模式。 如果R是BCNF模式,那么R也是3NF模

16、式。 設(shè)F是關(guān)系模式R的FD集,如果對(duì)F中每個(gè)非平凡的FD XY,都有X是R的超鍵,那么稱R是BCNF的模式。,一個(gè)滿足BCNF的關(guān)系模式有: 所有非主屬性對(duì)每一個(gè)碼都是完全函數(shù)依賴; 所有的主屬性對(duì)每一個(gè)不包含它的碼,也是完全函數(shù)依賴; 沒(méi)有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。,27,Boyce-Codd范式(BCNF)是根據(jù)Ray Boyce(SQL的創(chuàng)建者之一)以及Edgar Codd(關(guān)系數(shù)據(jù)庫(kù)之父)的名字來(lái)命名的。它是第二范式和第三范式的替代品,并且構(gòu)建得更好,它包含了第二范式和第三范式的內(nèi)在意義,但使用了一種更普通的方式進(jìn)行重新表述。要注意的是,滿足BCNF時(shí),不會(huì)提到第二范

17、式或第三范式。BCNF覆蓋了這兩個(gè)范式 實(shí)體滿足第一范式。 所有屬性完全依賴于某個(gè)鍵。 如果所有的判定都是一個(gè)鍵,則實(shí)體滿足BCNF。 讓我們逐個(gè)看看后兩條規(guī)則。,28,例11-7: 關(guān)系模式S(SNO,SNAME,SDEPT,AGE),假定SNAME也具有唯一性,那么S就有兩個(gè)鍵,這兩個(gè)鍵都由單個(gè)屬性組成,彼此不相交。其他屬性不存在對(duì)鍵的傳遞依賴與部分依賴,所以S是3NF。同時(shí)S中除SNO,SNAME外沒(méi)有其他決定因素,所以S也是BCNF。,29,例11-8: 關(guān)系模式STJ(S,T,J)中,S表示學(xué)生,T表示教師,J表示課程。每一教師只教一門課。每門課有若干教師,某一學(xué)生選定某門課,就對(duì)應(yīng)

18、一個(gè)固定的教師。由語(yǔ)義可得到如下的函數(shù)依賴。 (S,J)T;(S,T)J;TJ。 這里(S,J)、(S,T)都是候選鍵。 STJ是3NF,因?yàn)闆](méi)有任何非主屬性對(duì)鍵函數(shù)傳遞依賴或部分函數(shù)依賴。但STJ不是BCNF模式,是因?yàn)門是決定因素,而T不包含鍵。 3NF和BCNF是在函數(shù)依賴的條件下對(duì)模式分解所能達(dá)到的分離程度的測(cè)度。一個(gè)數(shù)據(jù)庫(kù)中的關(guān)系模式如果都是BCNF,那么在函數(shù)依賴范疇內(nèi),它已經(jīng)實(shí)現(xiàn)徹底的分離,已消除了插入和刪除異常。,30,對(duì)于存在數(shù)據(jù)冗余、插入異常、刪除異常問(wèn)題的關(guān)系模式,應(yīng)采取將一個(gè)關(guān)系模式分解為多個(gè)關(guān)系模式的方法進(jìn)行處理,但是這種分解過(guò)程必須是“可逆”的,即模式分解的結(jié)果應(yīng)該

19、能重新映像到分解前的關(guān)系模式。 模式分解的準(zhǔn)則: ()模式分解必須具有無(wú)損連接性。 ()模式分解能夠保持函數(shù)依賴,11. 關(guān)系模式分解的準(zhǔn)則 P254,31,定義 設(shè)F是在關(guān)系模式R上成立的函數(shù)依賴的集合,XY是一個(gè)函數(shù)依賴。如果對(duì)于R的每個(gè)滿足F的關(guān)系r也滿足XY,那么稱F邏輯蘊(yùn)涵XY,記為F XY。 定義 設(shè)F是函數(shù)依賴集,被F邏輯蘊(yùn)涵的函數(shù)依賴全體構(gòu)成的集合,稱為函數(shù)依賴集F的閉包(closure),記為F+。即 F+= XY |記為 FXY。 說(shuō)明:即使一個(gè)小的函數(shù)依賴集F,其閉包F+也是很大的,一般情況下總有 。,研究邏輯蘊(yùn)涵的目的是利用推理的方法,從一組已知的函數(shù)依賴推導(dǎo)出另一 組

20、函數(shù)依賴,從而找出所有函數(shù)依賴F+。,32,定義 F是關(guān)系模式R(U)的一個(gè)函數(shù)依賴集,記為R(F,U)。如果若干個(gè)關(guān)系模式的集合 =R1(U1,F1),R2(U2,F2),Rk(Uk,Fk) 其中: / * 關(guān)系模式R的屬性全集U是分解后所有小關(guān)系模式的屬性集Ui的并集 */ 對(duì)于每個(gè)i,j(1i,jk),有Ui Uj /* 分解的小屬性集間不會(huì)相互為子集 */ Fi=XY| XYF+XYUi /* Fi(i=1,2,k)是F在Ui上的投影 */ 則稱是關(guān)系模式R(F,U)的一個(gè)分解。 定義實(shí)際上僅給出了模式分解必須滿足的基本條件,有時(shí)也會(huì)出現(xiàn)將原模式存儲(chǔ)信息丟失的現(xiàn)象。,33,無(wú)損分解,例

21、11-8: 設(shè)關(guān)系模式R(ABC),分解成=AB,AC。 見下頁(yè)圖,34,上 圖分解后的關(guān)系可以通過(guò)自然連接還原。而下圖分解后的關(guān)系通過(guò)自然連接后不能還原。,稱比r多出來(lái)的元組為”噪音”,35,定義 設(shè)R是一個(gè)關(guān)系模式,F(xiàn)是R上的一個(gè)FD集。R分解成數(shù)據(jù)庫(kù)模式= R1,Rk 。如果對(duì)R中滿足F的每一個(gè)關(guān)系r,都有 r=R1(r)R2(r) Rk(r) 那么稱分解相對(duì)于F是“無(wú)損聯(lián)接分解”(lossless join decomposition ),簡(jiǎn)稱為“無(wú)損分解”,否則稱為“損失分解”(lossy decomposition)。 上例中給出了“無(wú)損分解”和“損失分解”的例子。,36,例11-

22、9: 設(shè)關(guān)系模式R(ABC)分解成= AB,BC 。(a)和(b)分別是模式AB和BC上的值r1和r2,(c)是r1 r2的值。顯然BC(r1 r2)r2。這里r2中元組(b2c2)就是一個(gè)懸掛元組,由于它的存在,使得r1和r2不存在泛關(guān)系r。,模式分解的目的就是為了消除冗余和操作異常現(xiàn)象,但有時(shí)會(huì) 產(chǎn)生存儲(chǔ)泛關(guān)系中無(wú)法存儲(chǔ)的信息(懸掛元組)。,37,算法 無(wú)損分解的測(cè)試 構(gòu)造一張k行n列的表格,每列對(duì)應(yīng)一個(gè)屬性Aj(1jn),每行對(duì)應(yīng)一個(gè)模式Ri(1ik)。如果Aj在Ri中,那么在表格的第i行第j列處填上符號(hào)aj,否則填上bij。 把表格看成模式R的一個(gè)關(guān)系,反復(fù)檢查F中每個(gè)FD在表格中是否

23、成立,若不成立,則修改表格中的值。修改方法如下: 對(duì)于F中一個(gè)FD XY,如果表格中有兩行在X值上相等,在Y值上不相等,那么把這兩行在Y值上也改成相等的值。如果Y值中有一個(gè)是aj,那么另一個(gè)也改成aj;如果沒(méi)有aj,那么用其中一個(gè)bij替換另一個(gè)值(盡量把下標(biāo)ij改成較小的數(shù))。一直到表格不能修改為止。(這個(gè)過(guò)程稱為chase過(guò)程) 若修改的最后一張表格中有一行是全a,即a1a2an,那么稱相對(duì)于F是無(wú)損分解,否則稱損失分解。,38,(F1) 初始表格,(F1) 修改后的表格,例11-10: 設(shè)關(guān)系R(ABCD),R分解成=AB,BC,CD,如果R上成立的函數(shù)依賴集F1=BA,CD,則對(duì)F1是

24、否為無(wú)損分解?如果F1換為F2=AB,CD呢?,本行全是a, 是無(wú)損連接,無(wú)a行, 是有損連接,(F2) 初始表格,(F2) 修改后的表格,39,對(duì)于分解為兩個(gè)模式的情況,可根據(jù)下列定理分解: 定理 設(shè)= R1,R2 是關(guān)系模式R的一個(gè)分解,F(xiàn)是R上成立的 FD集,那么分解相對(duì)于F是無(wú)損分解的充分必要條件是: (R1R2)(R1R2)或(R1R2)(R2R1)。 說(shuō)明:該定理中的兩個(gè)函數(shù)依賴不一定屬于F,只要屬于F+即可。 例11-11:設(shè)有關(guān)系模式R(SNO,Sname,CNO,Grade, SNOSname,(SNO,CNO)Grade) 的一個(gè)分解為: =R1(SNO,Sname,SNO

25、Sname), R2(SNO,CNO,Grade ,(SNO,CNO)Grade) 因?yàn)镽1R2=SNO,R1-R2=Sname,所以R1 R2R1-R2,即SNOSname,它屬于F,由定理可知,分解具有無(wú)損性連接。,如果兩個(gè)關(guān)系模式間的公共屬性集至少包含其中一個(gè)關(guān)系模式的主健, 則此分解是無(wú)損分解。,40,保持函數(shù)依賴分解,保持函數(shù)依賴分解的意義:在作任何數(shù)據(jù)輸入和修改時(shí),只要每個(gè)關(guān)系模式本身的函數(shù)依賴約束可滿足,就可以確保整個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù)的語(yǔ)義完整性不受破壞。,41,定義 設(shè)F是屬性集U上的FD集,Z是U的子集,F(xiàn)在Z上的投影用Z(F)表示,定義為Z(F)= XY | XYF+,且XYZ

26、 定義 設(shè)= R1,RK 是R的一個(gè)分解,F(xiàn)是R上的FD集, 如果有 Ri(F)=F,那么稱分解保持函數(shù)依賴集F。 定理 保持函數(shù)依賴分解的充要條件是,42,例11-12: 設(shè)關(guān)系模式R(WNO,WS,WG)的屬性分別表示職工的工號(hào)、工資級(jí)別和工資數(shù)目。如果規(guī)定每個(gè)職工只有一個(gè)工資級(jí)別,并且一個(gè)工資級(jí)別只有一個(gè)工資數(shù)目,那么R上的FD有WNOWS和WSWG。,R1上FD是F1=WNOWS,R2上的FD是F2=WNOWG。但從這兩個(gè)FD推導(dǎo)不出在R上成立的FD WSWG,因此分解把WSWG丟失了,即不保持F。,如果R分解成=R1,R2,其中R1=WNO,WS,R2=WNO,WG,可以驗(yàn)證這個(gè)分解

27、是無(wú)損分解。,43,一個(gè)無(wú)損連接不一定具有函數(shù)依賴保持性,反之一個(gè)具有函數(shù)依賴保持性的分解也不一定是無(wú)損連接。 例11-13: 設(shè)R(ABCD),F(xiàn)=AB,CD,=R1(A,B,AB),R2(C,D,CD)。 因?yàn)?F=AB,CD F1F2=AB,CD 所以 F+=(F1F2)+ 即分解具有依賴保持性,易驗(yàn)證不具有無(wú)損性。,44,例11-14: 設(shè)R(ABC),F(xiàn)=AB,CB,=R1(A,B,F(xiàn)1),R2(A,C,F(xiàn)2),其中F1=AB,F(xiàn)2=AC。 因?yàn)?R1R2=A,R1-R2=B,R2-R1=C 所以 R1R2R1-R2 因?yàn)?ABF,但F+(F1F2)+ 可見具有無(wú)損分解,但不具有保持

28、函數(shù)依賴分解。,45,數(shù)據(jù)庫(kù)設(shè)計(jì)者在進(jìn)行關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),一般盡可能設(shè)計(jì)成BCNF模式集。如果設(shè)計(jì)成BCNF模式集時(shí)達(dá)不到保持函數(shù)依賴和無(wú)損分解的特點(diǎn),那么只能降低要求,設(shè)計(jì)成3NF模式集,以求達(dá)到保持函數(shù)依賴和無(wú)損分解的特點(diǎn)。,46,一個(gè)好的數(shù)據(jù)庫(kù)模式設(shè)計(jì)方法應(yīng)符合三條原則: 表達(dá)性涉及到數(shù)據(jù)庫(kù)模式的等價(jià)問(wèn)題,即數(shù)據(jù)等價(jià)和語(yǔ)義等價(jià),分別用無(wú)損分解和保持函數(shù)依賴分解來(lái)衡量。 分離性是指在關(guān)系中只存儲(chǔ)有直接聯(lián)系的屬性值,而不要把有間接聯(lián)系的屬性值放在一張表中。應(yīng)該把有間接聯(lián)系的屬性值放在不同的表中。實(shí)際上“分離”就是清除冗余和異?,F(xiàn)象。如能達(dá)到這個(gè)目的,就分離。分離的基準(zhǔn)是一系列范式。在分解成B

29、CNF模式集時(shí),分離與依賴等價(jià)有時(shí)是不兼容的。 最小冗余性要求分解后的模式個(gè)數(shù)和模式中屬性總數(shù)應(yīng)最少。目的是節(jié)省存儲(chǔ)空間,提高操作效率,消除不必要的冗余。但要注意,實(shí)際使用時(shí)并不一定要達(dá)到最小冗余,因?yàn)橛袝r(shí)帶點(diǎn)冗余對(duì)提高查詢速度是有好處的。,47,本章小結(jié),本章討論如何設(shè)計(jì)關(guān)系模式問(wèn)題。關(guān)系模式設(shè)計(jì)得好與壞,直接影響到數(shù)據(jù)冗余度、數(shù)據(jù)一致性等問(wèn)題。要設(shè)計(jì)好的數(shù)據(jù)庫(kù)模式,必須有一定的理論為基礎(chǔ)。這就是模式規(guī)范化理論。,在數(shù)據(jù)庫(kù)中,數(shù)據(jù)冗余是指同一個(gè)數(shù)據(jù)存儲(chǔ)了多次,由數(shù)據(jù)冗余將會(huì)引起各種操作異常。通過(guò)把模式分解成若干比較小的關(guān)系模式可以消除冗余。,函數(shù)依賴XY是數(shù)據(jù)之間最基本的一種聯(lián)系,在關(guān)系中有兩個(gè)元組,如果X值相等那么要求Y值也相等。FD有

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論