access_規(guī)范化設(shè)計_第1頁
access_規(guī)范化設(shè)計_第2頁
access_規(guī)范化設(shè)計_第3頁
access_規(guī)范化設(shè)計_第4頁
access_規(guī)范化設(shè)計_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第第5章章規(guī)范化設(shè)計規(guī)范化設(shè)計重點(diǎn)概念:重點(diǎn)概念:u關(guān)系模式的設(shè)計問題關(guān)系模式的設(shè)計問題 u函數(shù)依賴函數(shù)依賴u關(guān)系模式的范式關(guān)系模式的范式25.1關(guān)系模式設(shè)計問題關(guān)系模式設(shè)計問題u數(shù)據(jù)庫的一個主要任務(wù)就是如果將一組數(shù)據(jù)存數(shù)據(jù)庫的一個主要任務(wù)就是如果將一組數(shù)據(jù)存儲在數(shù)據(jù)庫中,這就需要考慮如何為這些數(shù)據(jù)儲在數(shù)據(jù)庫中,這就需要考慮如何為這些數(shù)據(jù)設(shè)計一個合適的邏輯結(jié)構(gòu)。設(shè)計一個合適的邏輯結(jié)構(gòu)。u存儲所占用的空間存儲所占用的空間“最小最小”,消除數(shù)據(jù)冗余及,消除數(shù)據(jù)冗余及由此帶來的各種操作異?,F(xiàn)象。由此帶來的各種操作異?,F(xiàn)象。u在數(shù)據(jù)庫中構(gòu)造一個在數(shù)據(jù)庫中構(gòu)造一個“好的好的”、“合適的合適的”的的關(guān)系

2、模式,涉及到一系列的理論和方法,形成關(guān)系模式,涉及到一系列的理論和方法,形成了關(guān)系數(shù)據(jù)庫的設(shè)計理論和技術(shù)。了關(guān)系數(shù)據(jù)庫的設(shè)計理論和技術(shù)。u由于合適的關(guān)系模式要符合一定的規(guī)范化要求,由于合適的關(guān)系模式要符合一定的規(guī)范化要求,所以又稱其為關(guān)系數(shù)據(jù)庫的規(guī)范化理論。所以又稱其為關(guān)系數(shù)據(jù)庫的規(guī)范化理論。3一、一、問題的提出問題的提出 如果數(shù)據(jù)模式設(shè)計不當(dāng),就會出現(xiàn)數(shù)據(jù)冗如果數(shù)據(jù)模式設(shè)計不當(dāng),就會出現(xiàn)數(shù)據(jù)冗余;有了數(shù)據(jù)冗余,就可能出現(xiàn)操作異常;為余;有了數(shù)據(jù)冗余,就可能出現(xiàn)操作異常;為了解決這些問題,需要討論數(shù)據(jù)依賴中的某些了解決這些問題,需要討論數(shù)據(jù)依賴中的某些重要問題,例如函數(shù)依賴、多值依賴和連接依重

3、要問題,例如函數(shù)依賴、多值依賴和連接依賴等。賴等。4二、數(shù)據(jù)冗余及其操作異常二、數(shù)據(jù)冗余及其操作異常uData Redundancyu問題問題大量占用和消耗系統(tǒng)資源,造成不必要的開大量占用和消耗系統(tǒng)資源,造成不必要的開銷銷更嚴(yán)重的是帶來各種操作異常更嚴(yán)重的是帶來各種操作異常5冗余問題實(shí)例冗余問題實(shí)例例:描述學(xué)校的數(shù)據(jù)庫:例:描述學(xué)校的數(shù)據(jù)庫:學(xué)生的學(xué)號(學(xué)生的學(xué)號(Sno)、所在系()、所在系(Sdept)系主任姓名(系主任姓名(Mname)、課程名()、課程名(Cname)成績成績(Grade)單一的關(guān)系模式單一的關(guān)系模式 : Student U Sno, Sdept, Mname, Cna

4、me, Grade 學(xué)校數(shù)據(jù)庫的語義:學(xué)校數(shù)據(jù)庫的語義:1、一個系有若干學(xué)生,、一個系有若干學(xué)生, 一個學(xué)生只屬于一個系;一個學(xué)生只屬于一個系;2、一個系只有一名主任;、一個系只有一名主任;3、一個學(xué)生可以選修多門課程,、一個學(xué)生可以選修多門課程, 每門課程有若干學(xué)生選修;每門課程有若干學(xué)生選修;4、每個學(xué)生所學(xué)的每門課程都有一個成績。、每個學(xué)生所學(xué)的每門課程都有一個成績。6冗余問題實(shí)例冗余問題實(shí)例(續(xù))(續(xù))屬性組屬性組U上的關(guān)系:上的關(guān)系: F Sno Sdept, Sdept Mname, (Sno, Cname) Grade SnoCnameSdeptMnameGrade7關(guān)系模式關(guān)系

5、模式Student中存在的問題中存在的問題1、 數(shù)據(jù)冗余太大數(shù)據(jù)冗余太大浪費(fèi)大量的存儲空間浪費(fèi)大量的存儲空間 例:每一個系主任的姓名重復(fù)出現(xiàn)例:每一個系主任的姓名重復(fù)出現(xiàn)2、 更新異常(更新異常(Update Anomalies)數(shù)據(jù)冗余數(shù)據(jù)冗余 ,更新數(shù)據(jù)時,維護(hù)數(shù)據(jù)完整性代更新數(shù)據(jù)時,維護(hù)數(shù)據(jù)完整性代價大。價大。例:某系更換系主任后,系統(tǒng)必須修改與該系學(xué)例:某系更換系主任后,系統(tǒng)必須修改與該系學(xué)生有關(guān)的每一個元組生有關(guān)的每一個元組8關(guān)系模式關(guān)系模式Student中存在的問題中存在的問題3、插入異常(、插入異常(Insertion Anomalies)該插的數(shù)據(jù)插不進(jìn)去該插的數(shù)據(jù)插不進(jìn)去 例

6、,如果一個系剛成立,尚無學(xué)生,我們就無法把這例,如果一個系剛成立,尚無學(xué)生,我們就無法把這個系及其系主任的信息存入數(shù)據(jù)庫。個系及其系主任的信息存入數(shù)據(jù)庫。4、刪除異常(、刪除異常(Deletion Anomalies)不該刪除的數(shù)據(jù)不得不刪不該刪除的數(shù)據(jù)不得不刪例,如果某個系的學(xué)生全部畢業(yè)了,例,如果某個系的學(xué)生全部畢業(yè)了, 我們在刪除該系我們在刪除該系學(xué)生信息的同時,把系及其系主任的信息也丟掉了。學(xué)生信息的同時,把系及其系主任的信息也丟掉了。9冗余問題實(shí)例冗余問題實(shí)例(續(xù))(續(xù))結(jié)論:結(jié)論:Student關(guān)系模式不是一個好的模式。關(guān)系模式不是一個好的模式。“好好”的模式:的模式:不會發(fā)生插入

7、異常、刪除異常、更新異常,不會發(fā)生插入異常、刪除異常、更新異常,數(shù)據(jù)冗余應(yīng)盡可能少。數(shù)據(jù)冗余應(yīng)盡可能少。原因:原因:由存在于學(xué)生數(shù)據(jù)庫中的某些特定聯(lián)系引起由存在于學(xué)生數(shù)據(jù)庫中的某些特定聯(lián)系引起10三、冗余產(chǎn)生的原因分析三、冗余產(chǎn)生的原因分析u從數(shù)據(jù)結(jié)構(gòu)角度考察,如果對從數(shù)據(jù)結(jié)構(gòu)角度考察,如果對多個文件多個文件和和同一同一文件中數(shù)據(jù)之間文件中數(shù)據(jù)之間的聯(lián)系考慮不周或處理不當(dāng),的聯(lián)系考慮不周或處理不當(dāng),就可能導(dǎo)致數(shù)據(jù)冗余產(chǎn)生就可能導(dǎo)致數(shù)據(jù)冗余產(chǎn)生u在在RDB中,數(shù)據(jù)之間的聯(lián)系表現(xiàn)為同一關(guān)系模中,數(shù)據(jù)之間的聯(lián)系表現(xiàn)為同一關(guān)系模式中各個屬性之間的依賴關(guān)系,通常稱為數(shù)據(jù)式中各個屬性之間的依賴關(guān)系,通常稱

8、為數(shù)據(jù)依賴。依賴。u關(guān)系系統(tǒng)中數(shù)據(jù)冗余產(chǎn)生的重要原因就在于對關(guān)系系統(tǒng)中數(shù)據(jù)冗余產(chǎn)生的重要原因就在于對數(shù)據(jù)依賴的處理,也就是關(guān)系模式本身的結(jié)構(gòu)數(shù)據(jù)依賴的處理,也就是關(guān)系模式本身的結(jié)構(gòu)設(shè)計設(shè)計11三、冗余產(chǎn)生的原因分析(續(xù))三、冗余產(chǎn)生的原因分析(續(xù))u關(guān)系數(shù)據(jù)庫中數(shù)據(jù)依賴來源于關(guān)系結(jié)構(gòu)本身。關(guān)系數(shù)據(jù)庫中數(shù)據(jù)依賴來源于關(guān)系結(jié)構(gòu)本身。在關(guān)系模式中,各個屬性一般說來是有聯(lián)系的,在關(guān)系模式中,各個屬性一般說來是有聯(lián)系的,但這些聯(lián)系有著不同的表現(xiàn)形式:但這些聯(lián)系有著不同的表現(xiàn)形式:一部分屬性的取值能夠決定這個表中所有其他屬性一部分屬性的取值能夠決定這個表中所有其他屬性的取值(候選健、主?。┑娜≈担ê蜻x健、

9、主?。┮徊糠謱傩缘娜≈禌Q定表中其他部分屬性的取值一部分屬性的取值決定表中其他部分屬性的取值(數(shù)據(jù)依賴,候選健的推廣)(數(shù)據(jù)依賴,候選健的推廣)12四、問題的解決思路四、問題的解決思路u在在RDB設(shè)計中,不是隨便一種關(guān)系模式設(shè)計方設(shè)計中,不是隨便一種關(guān)系模式設(shè)計方案都案都“合適合適”,更不是任何一種關(guān)系模式都可,更不是任何一種關(guān)系模式都可以投入使用的以投入使用的uRDB中關(guān)系模式的屬性之間需要滿足某種內(nèi)在中關(guān)系模式的屬性之間需要滿足某種內(nèi)在的必然聯(lián)系,設(shè)計一個好的數(shù)據(jù)庫的根本方法的必然聯(lián)系,設(shè)計一個好的數(shù)據(jù)庫的根本方法是先要分析和掌握屬性間的語義關(guān)聯(lián),然后再是先要分析和掌握屬性間的語義關(guān)聯(lián),然后

10、再依據(jù)這些關(guān)聯(lián)得到相應(yīng)的設(shè)計方案依據(jù)這些關(guān)聯(lián)得到相應(yīng)的設(shè)計方案13四、問題的解決思路(續(xù))四、問題的解決思路(續(xù))u屬性間的關(guān)聯(lián)表現(xiàn)為一個屬性子集對另一個屬屬性間的關(guān)聯(lián)表現(xiàn)為一個屬性子集對另一個屬性子集的性子集的“依賴依賴”關(guān)系關(guān)系多對一依賴:常見,函數(shù)依賴多對一依賴:常見,函數(shù)依賴一對多依賴:復(fù)雜,目前主要研究多值依賴一對多依賴:復(fù)雜,目前主要研究多值依賴和連接依賴和連接依賴u基于這三種依賴在不同層面上的具體要求,人基于這三種依賴在不同層面上的具體要求,人們把屬性之間的這些關(guān)聯(lián)分為若干等級,這就們把屬性之間的這些關(guān)聯(lián)分為若干等級,這就形成所謂的關(guān)系的規(guī)范化形成所謂的關(guān)系的規(guī)范化14四、問題的

11、解決思路(續(xù))四、問題的解決思路(續(xù))u解決解決RDB冗余問題的基本方案就是分析研究屬冗余問題的基本方案就是分析研究屬性之間的聯(lián)系,按照每個關(guān)系中屬性間滿足某性之間的聯(lián)系,按照每個關(guān)系中屬性間滿足某種內(nèi)在語義條件和屬性間聯(lián)系所處的規(guī)范等級種內(nèi)在語義條件和屬性間聯(lián)系所處的規(guī)范等級來構(gòu)造關(guān)系。來構(gòu)造關(guān)系。u由此產(chǎn)生的一整套有關(guān)理論稱為關(guān)系數(shù)據(jù)庫規(guī)由此產(chǎn)生的一整套有關(guān)理論稱為關(guān)系數(shù)據(jù)庫規(guī)范化理論范化理論u這是這是RDB設(shè)計中最重要的問題設(shè)計中最重要的問題15一、函數(shù)依賴的基本概念一、函數(shù)依賴的基本概念定義定義5.1 設(shè)設(shè)R(U)是一個屬性集是一個屬性集U上的關(guān)系模式,上的關(guān)系模式,X和和Y是是U的子

12、集,的子集, r 是是R(U) 中中任意任意一個可能的關(guān)系。一個可能的關(guān)系。 若對于若對于r中任意兩個元組中任意兩個元組s和和t,當(dāng),當(dāng)sX=tX時,都有時,都有sY=tY , 則稱則稱 “屬性子集屬性子集X函數(shù)確定屬性子集函數(shù)確定屬性子集Y” 或或 “Y函數(shù)依賴于函數(shù)依賴于X”,記作,記作XY,否則就稱,否則就稱X不函數(shù)不函數(shù)決定決定Y,記作,記作XY X稱為這個函數(shù)依賴的稱為這個函數(shù)依賴的決定屬性集決定屬性集(Determinant)。5.2.1 函數(shù)依賴函數(shù)依賴16說明:說明: 1. 函數(shù)依賴不是指關(guān)系模式函數(shù)依賴不是指關(guān)系模式R的某個或某些關(guān)系實(shí)例滿足的約的某個或某些關(guān)系實(shí)例滿足的約束

13、條件,而是指束條件,而是指R的的所有關(guān)系實(shí)例所有關(guān)系實(shí)例均要滿足的約束條件。均要滿足的約束條件。2. 函數(shù)依賴是函數(shù)依賴是語義范疇語義范疇的概念。只能根據(jù)數(shù)據(jù)的語義來確定函的概念。只能根據(jù)數(shù)據(jù)的語義來確定函數(shù)依賴。數(shù)依賴。 例如例如“姓名姓名年齡年齡”這個函數(shù)依賴只有在不允許有同名人的這個函數(shù)依賴只有在不允許有同名人的條件下成立條件下成立3. 數(shù)據(jù)庫設(shè)計者可以對現(xiàn)實(shí)世界作強(qiáng)制的規(guī)定。例如規(guī)定不允數(shù)據(jù)庫設(shè)計者可以對現(xiàn)實(shí)世界作強(qiáng)制的規(guī)定。例如規(guī)定不允許同名人出現(xiàn),函數(shù)依賴許同名人出現(xiàn),函數(shù)依賴“姓名姓名年齡年齡”成立。所插入的成立。所插入的元組必須滿足規(guī)定的函數(shù)依賴,若發(fā)現(xiàn)有同名人存在,元組必須滿

14、足規(guī)定的函數(shù)依賴,若發(fā)現(xiàn)有同名人存在, 則則拒絕插入該元組。拒絕插入該元組。17函數(shù)依賴(續(xù))函數(shù)依賴(續(xù))例例: Student(Sno, Sname, Ssex, Sage, Sdept) 假設(shè)不允許重名,則有假設(shè)不允許重名,則有:Sno Ssex, Sno Sage , Sno Sdept, Sno Sname, Sname Ssex, Sname SageSname Sdept但但Ssex Sage18二、函數(shù)依賴的分類二、函數(shù)依賴的分類u平凡和非平凡的函數(shù)依賴平凡和非平凡的函數(shù)依賴u部分與完全函數(shù)依賴部分與完全函數(shù)依賴u傳遞與直接函數(shù)依賴傳遞與直接函數(shù)依賴19平凡函數(shù)依賴與非平凡函數(shù)

15、依賴平凡函數(shù)依賴與非平凡函數(shù)依賴在關(guān)系模式在關(guān)系模式R(U)中,對于中,對于U的子集的子集X和和Y,如果如果XY,但,但Y X,則稱,則稱XY是是非平凡的函數(shù)依賴非平凡的函數(shù)依賴若若XY,但,但Y X, 則稱則稱XY是是平凡的函數(shù)依賴平凡的函數(shù)依賴?yán)涸陉P(guān)系例:在關(guān)系SC(Sno, Cno, Grade)中,中, 非平凡函數(shù)依賴:非平凡函數(shù)依賴: (Sno, Cno) Grade 平凡函數(shù)依賴:平凡函數(shù)依賴: (Sno, Cno) Sno (Sno, Cno) Cno20平凡函數(shù)依賴與非平凡函數(shù)依賴(續(xù))平凡函數(shù)依賴與非平凡函數(shù)依賴(續(xù))對于任一關(guān)系模式,平凡函數(shù)依賴都是必然對于任一關(guān)系模式,

16、平凡函數(shù)依賴都是必然成立的,它不反映新的語義,因此若不特別成立的,它不反映新的語義,因此若不特別聲明,聲明, 我們總是討論非平凡函數(shù)依賴。我們總是討論非平凡函數(shù)依賴。只有非平凡的函數(shù)依賴才和只有非平凡的函數(shù)依賴才和“真正的真正的”約束約束條件相關(guān)條件相關(guān)21完全函數(shù)依賴與部分函數(shù)依賴完全函數(shù)依賴與部分函數(shù)依賴定義定義5.2 在關(guān)系模式在關(guān)系模式R(U)中,如果中,如果XY,并且,并且對于對于X的任何一個真子集的任何一個真子集X,都有,都有 X Y,則,則稱稱Y完全函數(shù)依賴于完全函數(shù)依賴于X,記作,記作X Y。 若若XY,但,但Y不完全函數(shù)依賴于不完全函數(shù)依賴于X,則稱,則稱Y部分部分函數(shù)依賴函

17、數(shù)依賴于于X,記作,記作X P Y。部分依賴中必然存在冗余屬性定義部分依賴中必然存在冗余屬性定義 22完全函數(shù)依賴與部分函數(shù)依賴(續(xù))完全函數(shù)依賴與部分函數(shù)依賴(續(xù))例例: 在關(guān)系在關(guān)系SC(Sno, Cno, Grade)中,中, 由于:由于:Sno Grade,Cno Grade, 因此:因此:(Sno, Cno) Grade說明:說明:u1:1為完全函數(shù)依賴為完全函數(shù)依賴u多:多:1為部分函數(shù)依賴為部分函數(shù)依賴 23傳遞函數(shù)依賴與直接函數(shù)依賴傳遞函數(shù)依賴與直接函數(shù)依賴定義定義5.3 在關(guān)系模式在關(guān)系模式R(U)中,如果中,如果XY,YZ,且且Y X,YX,則稱,則稱Z傳遞函數(shù)依賴傳遞函數(shù)

18、依賴于于X。注注: 如果如果YX, 即即XY,則,則Z直接函數(shù)依賴直接函數(shù)依賴于于X例例: 在關(guān)系在關(guān)系Std(Sno, Sdept, Mname)中,有:中,有:Sno Sdept,Sdept Mname Mname傳遞函數(shù)依賴于傳遞函數(shù)依賴于Sno24傳遞函數(shù)依賴與直接函數(shù)依賴傳遞函數(shù)依賴與直接函數(shù)依賴u如果如果Z傳遞依賴于傳遞依賴于X,則,則Z必然函數(shù)依賴于必然函數(shù)依賴于Xu如果如果Z傳遞依賴于傳遞依賴于X,說明,說明Z是間接依賴于是間接依賴于X,從而表明從而表明X和和Z間的關(guān)聯(lián)較弱間的關(guān)聯(lián)較弱u部分依賴存在部分依賴存在“冗余屬性冗余屬性”,傳遞依賴表現(xiàn)出,傳遞依賴表現(xiàn)出“間接間接”的弱

19、數(shù)據(jù)依賴,是產(chǎn)生數(shù)據(jù)冗余的主的弱數(shù)據(jù)依賴,是產(chǎn)生數(shù)據(jù)冗余的主要原因要原因25三、函數(shù)依賴的邏輯蘊(yùn)涵三、函數(shù)依賴的邏輯蘊(yùn)涵u研究函數(shù)依賴是解決數(shù)據(jù)冗余問題。研究函數(shù)依賴是解決數(shù)據(jù)冗余問題。u首要的問題是在一個給定的關(guān)系模式中,如何首要的問題是在一個給定的關(guān)系模式中,如何找出其中的各種函數(shù)依賴。找出其中的各種函數(shù)依賴。u關(guān)系模式理論上總有函數(shù)依賴存在(如平凡依關(guān)系模式理論上總有函數(shù)依賴存在(如平凡依賴或候選健確定的依賴);在實(shí)際應(yīng)用中,人賴或候選健確定的依賴);在實(shí)際應(yīng)用中,人們也會制定一些語義明顯的依賴。這樣,就會們也會制定一些語義明顯的依賴。這樣,就會有一個初始的函數(shù)依賴集有一個初始的函數(shù)依賴

20、集Fu我們要討論如何通過已知的我們要討論如何通過已知的F得到大量未知的得到大量未知的函數(shù)依賴,這就是函數(shù)依賴的閉包的概念函數(shù)依賴,這就是函數(shù)依賴的閉包的概念26函數(shù)依賴的邏輯蘊(yùn)涵的概念函數(shù)依賴的邏輯蘊(yùn)涵的概念uAB,BC,AC?u根據(jù)已知的函數(shù)依賴能否根據(jù)已知的函數(shù)依賴能否“推導(dǎo)推導(dǎo)”出某個未知出某個未知的的函數(shù)依賴?這就是函數(shù)依賴的邏輯蘊(yùn)涵問的的函數(shù)依賴?這就是函數(shù)依賴的邏輯蘊(yùn)涵問題題定義定義5.2 設(shè)設(shè)F是在關(guān)系模式是在關(guān)系模式R(U)上成立的函數(shù)依賴,上成立的函數(shù)依賴,X和和Y是屬性集是屬性集U的子集,如果對的子集,如果對R中每個滿足中每個滿足F的關(guān)系的關(guān)系r也滿足也滿足XY,則稱,則稱

21、F邏輯蘊(yùn)含邏輯蘊(yùn)含XY。27函數(shù)依賴的閉包的概念函數(shù)依賴的閉包的概念u如果要找出如果要找出F所蘊(yùn)含(推導(dǎo))的所有函數(shù)依賴,所蘊(yùn)含(推導(dǎo))的所有函數(shù)依賴,就用到了函數(shù)依賴集和閉包的概念就用到了函數(shù)依賴集和閉包的概念u設(shè)設(shè)F是函數(shù)依賴集,是由被是函數(shù)依賴集,是由被F邏輯蘊(yùn)含的函數(shù)依邏輯蘊(yùn)含的函數(shù)依賴的全體構(gòu)成的集合,稱為函數(shù)依賴集賴的全體構(gòu)成的集合,稱為函數(shù)依賴集F的閉的閉包包(closure),記作,記作F+28四、函數(shù)依賴的推理規(guī)則四、函數(shù)依賴的推理規(guī)則u為從關(guān)系模式為從關(guān)系模式R上已知的函數(shù)依賴上已知的函數(shù)依賴F得到其閉得到其閉包包F+, Armstrong于于1974年提出一套推理規(guī)則。年

22、提出一套推理規(guī)則。使用這套規(guī)則,可以從已有的函數(shù)依賴推導(dǎo)出使用這套規(guī)則,可以從已有的函數(shù)依賴推導(dǎo)出新的函數(shù)依賴。后來又經(jīng)過不斷完善,形成了新的函數(shù)依賴。后來又經(jīng)過不斷完善,形成了著名的著名的“Armstrong公理系統(tǒng)公理系統(tǒng)”,為計算,為計算F+提提供了一個有效并且完備的理論基礎(chǔ)。供了一個有效并且完備的理論基礎(chǔ)。291. Armstrong公理公理 設(shè)有關(guān)系模式設(shè)有關(guān)系模式R ,則有下列推理規(guī)則:則有下列推理規(guī)則:自反律自反律(Reflexivity):): 若若Y X U,則,則X Y 為為F 所蘊(yùn)含。所蘊(yùn)含。增廣律增廣律(Augmentation):若):若XY 為為F 所蘊(yùn)含,所蘊(yùn)含,

23、且且Z U,則,則XZYZ 為為F 所蘊(yùn)含。所蘊(yùn)含。傳遞律傳遞律(Transitivity):若):若XY 及及YZ 為為F 所蘊(yùn)所蘊(yùn)含,則含,則XZ 為為F 所蘊(yùn)含。所蘊(yùn)含。注意:由自反律所得到的函數(shù)依賴均是平凡的函數(shù)依注意:由自反律所得到的函數(shù)依賴均是平凡的函數(shù)依賴,自反律的使用并不依賴于賴,自反律的使用并不依賴于F301. Armstrong公理公理(l)自反律:若)自反律:若Y X U,則,則X Y為為F 所蘊(yùn)含所蘊(yùn)含證明:設(shè)證明:設(shè)U是關(guān)系模式是關(guān)系模式R的屬性集,的屬性集,F(xiàn)是是R上成立上成立的只涉及的只涉及U中屬性的函數(shù)依賴集,則對中屬性的函數(shù)依賴集,則對R 的任一關(guān)系的任一關(guān)系

24、r中的任意兩個元組中的任意兩個元組t,s:若若tX=sX,由于,由于Y X,有,有ty=sy,所以所以XY成立。成立。311. Armstrong公理公理(2)增廣律增廣律: 若若XY 為為F 所蘊(yùn)含,且所蘊(yùn)含,且Z U,則,則XZYZ 為為F 所蘊(yùn)含。所蘊(yùn)含。 證明:設(shè)證明:設(shè)R 的任一關(guān)系的任一關(guān)系r中任意的兩個元中任意的兩個元組組t,s;若若tXZ=sXZ,則有,則有tX=sX和和tZ=sZ;由由XY,于是有,于是有tY=sY,所以,所以tYZ=sYZ,所以所以XZYZ為為F所蘊(yùn)含。所蘊(yùn)含。321. Armstrong公理公理(3) 傳遞律:若傳遞律:若XY及及YZ為為F 所蘊(yùn)含,則所蘊(yùn)

25、含,則 XZ為為 F 所蘊(yùn)含。所蘊(yùn)含。證:設(shè)對證:設(shè)對R 的任一關(guān)系的任一關(guān)系 r中的任意兩個元中的任意兩個元組組 t,s。若若tX=sX,由于,由于XY,有,有 tY=sY;再由再由YZ,有,有t Z=sZ,所以,所以XZ為為F所蘊(yùn)所蘊(yùn)含。含。332. 導(dǎo)出規(guī)則導(dǎo)出規(guī)則為了方便進(jìn)行推導(dǎo),在此基礎(chǔ)上導(dǎo)出另外為了方便進(jìn)行推導(dǎo),在此基礎(chǔ)上導(dǎo)出另外3條規(guī)則:條規(guī)則:1、合并律:合并律:由由XY,XZ,有,有XYZ。2、分解律:分解律:由由XY 及及 Z Y,有,有XZ。3、偽傳遞律:偽傳遞律:由由XY,WYZ,有,有XWZ。34五、函數(shù)依賴和關(guān)鍵碼的聯(lián)系五、函數(shù)依賴和關(guān)鍵碼的聯(lián)系定義定義5.4 設(shè)關(guān)

26、系模式設(shè)關(guān)系模式R的屬性集是的屬性集是U,X是是U的一的一個子集,如果個子集,如果XU在在R上成立,則稱上成立,則稱X是是R的的一個超鍵。如果一個超鍵。如果XU在在R上成立,但對于上成立,但對于X的的任一真子集任一真子集X都有都有X U,則稱,則稱X是是R的一個的一個候選鍵。候選鍵。35六、屬性集的閉包六、屬性集的閉包u在實(shí)際應(yīng)用中,經(jīng)常要判斷能否從已知的在實(shí)際應(yīng)用中,經(jīng)常要判斷能否從已知的F集集推出該函數(shù)依賴是否蘊(yùn)含推出該函數(shù)依賴是否蘊(yùn)含XY的問題。理論的問題。理論上,只要反復(fù)使用上,只要反復(fù)使用Armstrong公理,求出公理,求出F+,即可判斷即可判斷XY是否被蘊(yùn)涵。是否被蘊(yùn)涵。u求函數(shù)

27、依賴集閉包是個復(fù)雜且困難的問題,而求函數(shù)依賴集閉包是個復(fù)雜且困難的問題,而且會產(chǎn)生大量且會產(chǎn)生大量“無意義無意義”或意義不大的函數(shù)依或意義不大的函數(shù)依賴賴u實(shí)際上,所感興趣的通常是實(shí)際上,所感興趣的通常是F+的子集,沒有必的子集,沒有必要計算要計算F+ ,為此引入了屬性閉包的概念,為此引入了屬性閉包的概念361.屬性集的閉包的概念屬性集的閉包的概念u設(shè)設(shè)F是屬性集合是屬性集合U上的一個函數(shù)依賴集,上的一個函數(shù)依賴集,X是是U的子集,則相對于的子集,則相對于F屬性集屬性集X的閉包的閉包X+為一個為一個從從F集使用集使用Armstrong規(guī)則推出的所有滿足規(guī)則推出的所有滿足XA的屬性的屬性A的集合

28、的集合uX+ =屬性屬性A| XA在在F +中中uX+ =A| XA能由能由Armstrong公理推出公理推出372.函數(shù)依賴閉包函數(shù)依賴閉包例例1 已知關(guān)系模式已知關(guān)系模式R,其中,其中U=A,B,C,D,E;F=ABC,BD,CE,ECB,ACB。求(求(AB)F+ 。解解 設(shè)設(shè)X(0)=AB;(1)計算計算X(1): 逐一的掃描逐一的掃描F集合中各個函數(shù)依賴,集合中各個函數(shù)依賴, 找左部為找左部為A,B或或AB的函數(shù)依賴。得到兩個:的函數(shù)依賴。得到兩個: ABC,BD。 于是于是X(1)=ABCD=ABCD。382.函數(shù)依賴閉包函數(shù)依賴閉包(2)因?yàn)橐驗(yàn)閄(0) X(1) ,所以再找出左

29、部為,所以再找出左部為ABCD子集的那子集的那些函數(shù)依賴,又得到些函數(shù)依賴,又得到ABC,BD, CE,ACB, 于是于是X(2)=X(1)BCDE=ABCDE。(3)因?yàn)橐驗(yàn)閄(2)=U,算法終止,算法終止所以(所以(AB)F+ =ABCDE。393.F邏輯蘊(yùn)含的充要條件邏輯蘊(yùn)含的充要條件u函數(shù)依賴閉包復(fù)雜,屬性依賴閉包簡單函數(shù)依賴閉包復(fù)雜,屬性依賴閉包簡單u一般而言,屬性依賴集閉包只涉及到函數(shù)依賴一般而言,屬性依賴集閉包只涉及到函數(shù)依賴集閉包中部分的函數(shù)依賴集閉包中部分的函數(shù)依賴u能否將能否將“XY屬于屬于F+”的判斷問題和的判斷問題和“Y屬于屬于X+”的問題聯(lián)系起來已簡化判斷過程?的問題

30、聯(lián)系起來已簡化判斷過程?u下面的定理給出了回答下面的定理給出了回答404.關(guān)于閉包的定理關(guān)于閉包的定理u定理定理5.3 設(shè)設(shè)F 為屬性集為屬性集U上的一組函數(shù)依賴,上的一組函數(shù)依賴,X,Y U,XY 能由能由F 根據(jù)根據(jù)Armstrong公理導(dǎo)出的充分必公理導(dǎo)出的充分必要條件是要條件是Y XF+u用途用途 將判定將判定XY是否能由是否能由F根據(jù)根據(jù)Armstrong公理導(dǎo)公理導(dǎo)出的問題,就轉(zhuǎn)化為求出出的問題,就轉(zhuǎn)化為求出XF+ ,判定,判定Y是否為是否為XF+的子集的問題的子集的問題414.關(guān)于閉包的定理關(guān)于閉包的定理u計算計算XF+ 算法:算法:u初始化,令初始化,令 X+ =Xu在在F中依

31、次查找每個沒有標(biāo)記的函數(shù)依賴,若中依次查找每個沒有標(biāo)記的函數(shù)依賴,若“左邊屬性集左邊屬性集”包含于包含于X+ ,則令,則令X+ =X+ “右右邊屬性集邊屬性集”,并為訪問過的函數(shù)依賴設(shè)置標(biāo)記。,并為訪問過的函數(shù)依賴設(shè)置標(biāo)記。u反復(fù)執(zhí)行上一步,直到反復(fù)執(zhí)行上一步,直到X+不改變?yōu)橹埂2桓淖優(yōu)橹埂?24.關(guān)于閉包的定理關(guān)于閉包的定理例例1:設(shè):設(shè)R=ABC,F(xiàn)=AB,BC,分別求,分別求A,B,C的閉包。的閉包。解:解:A+=ABC B+=BC C+=C434.關(guān)于閉包的定理關(guān)于閉包的定理例例2:已知關(guān)系模式:已知關(guān)系模式R中,中,U=A,B,C,D,E,G,F(xiàn)=ABC,C A,BCD,ACDB,

32、DEG,BEC,CGBD,CEAG,求(,求(BD)+,判斷,判斷BDAC是否屬于是否屬于F+。解:解: (BD)+=ABCDEG因?yàn)椋ㄒ驗(yàn)椋˙D)+=ABCDEG,所以,所以BD AC,可由,可由F導(dǎo)出,導(dǎo)出,即即BD AC屬于屬于F+屬屬(由于(由于DEG,則,則BD BEG,分解得,分解得BD BG,又因?yàn)?,又因?yàn)锽EC,則,則BD C,又因,又因C A,則,則BD A故故BDAC)44七、最小依賴集定義七、最小依賴集定義怎樣求出一個與怎樣求出一個與F “等價等價”的的“最小最小”函數(shù)依賴集函數(shù)依賴集Fmin?定義定義5.5 如果函數(shù)依賴集如果函數(shù)依賴集Fmin+滿足下列條件,則稱滿足下

33、列條件,則稱F為一個為一個最小依賴集最小依賴集。亦稱為。亦稱為最小覆蓋最小覆蓋。1.Fmin+ = F+2.F中任一函數(shù)依賴的右部僅含有一個屬性。中任一函數(shù)依賴的右部僅含有一個屬性。3.F中不存在冗余的函數(shù)依賴中不存在冗余的函數(shù)依賴XA,使得,使得F與與F-XA等價。等價。4.F中不存在這樣的函數(shù)依賴中不存在這樣的函數(shù)依賴XY,X有真子集有真子集W使得使得F-XYWY與與F等價。等價。451.最小依賴集最小依賴集例例2 對于對于5.l節(jié)中的關(guān)系模式節(jié)中的關(guān)系模式S,其中:,其中: U = SNO,SDEPT,MN,CNAME,G , F = SNOSDEPT,SDEPTMN, (SNO,CNA

34、ME)G 設(shè)設(shè)F=SNOSDEPT,SNOMN, SDEPTMN,(SNO,CNAME)G, (SNO,SDEPT)SDEPTF 是最小覆蓋,而是最小覆蓋,而F 不是。不是。因?yàn)椋阂驗(yàn)椋篎 -SNOMN與與F 等價等價 F -(SNO,SDEPT)SDEPT也與也與F 等價等價 F -(SNO,SDEPT)SDEPT SNOSDEPT也與也與F 等價等價462.最小化過程最小化過程定義定義5.6 每一個函數(shù)依賴集每一個函數(shù)依賴集F 均等價于一個極小均等價于一個極小 函數(shù)依賴集函數(shù)依賴集Fm。此。此Fm稱為稱為F 的最小依賴集的最小依賴集證證:構(gòu)造性證明,依據(jù)定義分三步對構(gòu)造性證明,依據(jù)定義分三

35、步對F 進(jìn)行進(jìn)行“極小化處極小化處理理”,找出,找出F 的一個最小依賴集。的一個最小依賴集。(1) 分解右多屬性分解右多屬性逐一檢查逐一檢查F 中各函數(shù)依賴中各函數(shù)依賴FDi:XY,若若Y=A1A2 Ak,k 2,則用,則用 XAj |j=1,2, k 來取代來取代XY。 472.最小化過程最小化過程(2)逐一檢查逐一檢查F 中各函數(shù)依賴中各函數(shù)依賴FDi:XA, 令令G = F - XA, 若若A XG+, 則從則從F 中去掉此函數(shù)依賴。中去掉此函數(shù)依賴。 由于由于F 與與G =F -XA等價的充要條件是等價的充要條件是A XG+ 因此因此F變換前后是等價的。變換前后是等價的。482.最小化

36、過程最小化過程(3)逐一取出逐一取出F 中各函數(shù)依賴中各函數(shù)依賴FDi:XA, 設(shè)設(shè)X=B1B2Bm, 逐一考查逐一考查Bi (i=l,2,m),), 若若A (X-Bi )F+ , 則以則以X-Bi 取代取代X。 由于由于F與與F-XAZA等價的充要條件是等價的充要條件是A ZF+ ,其中,其中Z=X-Bi 因此因此F變換前后是等價的。變換前后是等價的。由定義,最后剩下的由定義,最后剩下的F 就一定是極小依賴集。就一定是極小依賴集。 因?yàn)閷σ驗(yàn)閷 的每一次的每一次“改造改造”都保證了改造前后的兩個都保證了改造前后的兩個函數(shù)依賴集等價,因此剩下的函數(shù)依賴集等價,因此剩下的F 與原來的與原來的

37、F等價。等價。 證證畢畢492.最小化過程最小化過程例例3 F = AB,BA,BC, AC,CA Fm1、Fm2都是都是F 的最小依賴集:的最小依賴集: Fm1= AB,BC,CA Fm2= AB,BA,AC,CA uF 的最小依賴集的最小依賴集Fm 不一定是唯一,它與對各函不一定是唯一,它與對各函數(shù)依賴數(shù)依賴FDi 及及XA中中X 各屬性的處置順序有關(guān)各屬性的處置順序有關(guān)505.3 函數(shù)模式的分解函數(shù)模式的分解函數(shù)模式的分解目的:函數(shù)模式的分解目的:解決數(shù)據(jù)冗余和操作異常,提高范式等級解決數(shù)據(jù)冗余和操作異常,提高范式等級分解的概念:分解的概念:用原關(guān)系模式的若干個投影構(gòu)成新的關(guān)系模式。用原

38、關(guān)系模式的若干個投影構(gòu)成新的關(guān)系模式。515.3.1 模式的分解定義模式的分解定義定義定義5.7 關(guān)系模式關(guān)系模式R(U),R1,R2,Rk都是都是U的子集,的子集, U=R1R2Rk,關(guān)系模式,關(guān)系模式R1,Rk的集合用的集合用表示,表示, = R1,Rk,用用代替代替R的過程稱為關(guān)系模式的分解。的過程稱為關(guān)系模式的分解。52模式分解問題模式分解問題u把低一級的關(guān)系模式分解為若干個高一級的關(guān)把低一級的關(guān)系模式分解為若干個高一級的關(guān)系模式的方法并不是唯一的系模式的方法并不是唯一的u只有能夠保證分解后的關(guān)系模式與原關(guān)系模式只有能夠保證分解后的關(guān)系模式與原關(guān)系模式等價,分解方法才有意義等價,分解方

39、法才有意義53關(guān)系模式分解的標(biāo)準(zhǔn)關(guān)系模式分解的標(biāo)準(zhǔn)三種模式分解的等價定義三種模式分解的等價定義1.分解具有無損連接性分解具有無損連接性分解前后是否表示同樣的數(shù)據(jù)分解前后是否表示同樣的數(shù)據(jù),即不少即不少,也也不能多不能多2.分解要保持函數(shù)依賴分解要保持函數(shù)依賴分解前后是否具有相同的語義,屬性間的分解前后是否具有相同的語義,屬性間的聯(lián)系不能變聯(lián)系不能變3.分解既要保持函數(shù)依賴,又要具有無損連接分解既要保持函數(shù)依賴,又要具有無損連接性性545.3.2 無損分解無損分解例例: SL(Sno, Sdept, Sloc(宿舍)(宿舍) F= SnoSdept, SdeptSloc, SnoSloc存在插入

40、異常、刪除異常、冗余度大和修存在插入異常、刪除異常、冗余度大和修改復(fù)雜等問題改復(fù)雜等問題分解方法可以有多種分解方法可以有多種 55無損分解(續(xù))無損分解(續(xù))SnoSdeptSloc95001CSA95002ISB95003MAC95004ISB95005PHBSL1. SL分解為下面三個關(guān)系模式:分解為下面三個關(guān)系模式: SN(Sno) SD(Sdept) SO(Sloc)56分解后的關(guān)系為:分解后的關(guān)系為: SN SD SOSno9500195002950039500495005SdeptCSISMAPHSlocABC57SL的一種的一種分解(續(xù))分解(續(xù))分解后的數(shù)據(jù)庫丟失了許多信息分解

41、后的數(shù)據(jù)庫丟失了許多信息 例如無法查詢例如無法查詢95001學(xué)生所在系或所在宿舍。學(xué)生所在系或所在宿舍。 如果分解后的關(guān)系可以通過自然連接恢復(fù)為原如果分解后的關(guān)系可以通過自然連接恢復(fù)為原來的關(guān)系,那么這種分解就沒有丟失信息來的關(guān)系,那么這種分解就沒有丟失信息58SL的一種另的一種另分解分解2. SL分解為下面二個關(guān)系模式:分解為下面二個關(guān)系模式: NL(Sno, Sloc) DL(Sdept, Sloc)分解后的關(guān)系為:分解后的關(guān)系為: NL DLSdeptSlocCSAISBMACPHBSnoSloc95001A95002B95003C95004B95005B59SL的一種另的一種另分解(續(xù)

42、)分解(續(xù))NL DL SnoSlocSdept95001ACS95002BIS95002BPH95003CMA95004BIS95004BPH95005BIS95005BPH60SL的一種另的一種另分解(續(xù))分解(續(xù))NL DL比原來的比原來的SL關(guān)系多了關(guān)系多了3個元組個元組 無法知道無法知道95002、95004、95005 究竟是哪個系的學(xué)生究竟是哪個系的學(xué)生 元組增加了,信息丟失了元組增加了,信息丟失了61SL的的第三種分解方法第三種分解方法3. 將將SL分解為下面二個關(guān)系模式:分解為下面二個關(guān)系模式: ND(Sno, Sdept) NL(Sno, Sloc) 分解后的關(guān)系為:分解后

43、的關(guān)系為:ND NL SnoSdept95001CS95002IS95003MA95004IS95005PHSnoSloc95001A95002B95003C95004B95005BF= SnoSdept, SdeptSloc, SnoSloc 62SL的的第三種分解方法第三種分解方法(續(xù))(續(xù))SnoSdeptSloc95001CSA95002ISB95003MAC95004ISB95005PHBNL DL與與SL關(guān)系一樣,因此沒有丟失信息關(guān)系一樣,因此沒有丟失信息63無損模式分解的定義無損模式分解的定義u設(shè)設(shè)R是一個關(guān)系模式是一個關(guān)系模式,F是是R上的一個上的一個FD集,集, R分解成數(shù)據(jù)

44、庫模式分解成數(shù)據(jù)庫模式 = R1,R2, ,Rk,若若R與與R1、R2、Rn自然連接的結(jié)果相等,自然連接的結(jié)果相等,則稱關(guān)系模式則稱關(guān)系模式R的這個分解的這個分解具有無損連接性具有無損連接性(Lossless join)u具有無損連接性的分解保證不丟失信息具有無損連接性的分解保證不丟失信息u無損連接性能在一定程度上解決數(shù)據(jù)冗余和操無損連接性能在一定程度上解決數(shù)據(jù)冗余和操作異常等問題作異常等問題645.3.3 無損分解的測試方法無損分解的測試方法關(guān)系模式關(guān)系模式R(U),U=A1,An,F(xiàn)是是R上成立的函數(shù)上成立的函數(shù)依賴集,依賴集,= R1, R2,Rk是是R上的一個分解。上的一個分解。判斷判

45、斷相對相對F是否具有無損分解性是否具有無損分解性方法:方法:1.構(gòu)造一張構(gòu)造一張k行行n列的表格,每列對應(yīng)一個屬性列的表格,每列對應(yīng)一個屬性Aj(1jn),每行對應(yīng)一個模式每行對應(yīng)一個模式Ri(1ik)。如果。如果Aj在在Ri中,就在表格的第中,就在表格的第i行第行第j列處填上符號列處填上符號aj,否則填上,否則填上bij.65無損分解的測試方法無損分解的測試方法(續(xù)續(xù))2. 反復(fù)檢查反復(fù)檢查F中每個中每個FD,并且修改表格中的元,并且修改表格中的元素,直到表格不能修改為止。素,直到表格不能修改為止。u取取F中的一個中的一個FD XY,如果表格有兩行在如果表格有兩行在X分分量上相等,在量上相等

46、,在Y分量上不相等,則修改分量上不相等,則修改Y分量分量上的值,使這兩行在上的值,使這兩行在Y分量上也相等,具體分分量上也相等,具體分兩種情況:兩種情況:如果如果Y分量中有一個是分量中有一個是aj,另一個也修改成另一個也修改成aj如果如果Y分量中沒有分量中沒有aj,就用標(biāo)號較小的那個就用標(biāo)號較小的那個bij替換另一個符號替換另一個符號3. 修改結(jié)束后的表格中有一行全是修改結(jié)束后的表格中有一行全是a,則則相對相對F是無損分解,否則不是無損分解是無損分解,否則不是無損分解665.3.4 保持函數(shù)依賴的模式分解保持函數(shù)依賴的模式分解設(shè)關(guān)系模式設(shè)關(guān)系模式R被分解為若干個關(guān)系模式被分解為若干個關(guān)系模式R

47、1,R2,Rn (其中(其中U=U1U2Un,且不存在,且不存在Ui Uj,F(xiàn)i為為F在在Ui上的投影),若上的投影),若F所邏輯蘊(yùn)含的函數(shù)依所邏輯蘊(yùn)含的函數(shù)依賴一定也由分解得到的某個關(guān)系模式中的函數(shù)賴一定也由分解得到的某個關(guān)系模式中的函數(shù)依賴依賴Fi所邏輯蘊(yùn)含,則稱關(guān)系模式所邏輯蘊(yùn)含,則稱關(guān)系模式R的這個分的這個分解是保持函數(shù)依賴的(解是保持函數(shù)依賴的(Preserve dependency)。)。67模式各種分解情況模式各種分解情況u如果一個分解具有無損連接性,則它能夠保證如果一個分解具有無損連接性,則它能夠保證不丟失信息。不丟失信息。u如果一個分解保持了函數(shù)依賴,則它可以減輕如果一個分解

48、保持了函數(shù)依賴,則它可以減輕或解決各種異常情況?;蚪鉀Q各種異常情況。u分解具有無損連接性和分解保持函數(shù)依賴是兩分解具有無損連接性和分解保持函數(shù)依賴是兩個互相獨(dú)立的標(biāo)準(zhǔn)。具有無損連接性的分解不個互相獨(dú)立的標(biāo)準(zhǔn)。具有無損連接性的分解不一定能夠保持函數(shù)依賴。同樣,保持函數(shù)依賴一定能夠保持函數(shù)依賴。同樣,保持函數(shù)依賴的分解也不一定具有無損連接性。的分解也不一定具有無損連接性。68保持函數(shù)依賴的測試方法保持函數(shù)依賴的測試方法u由保持函數(shù)依賴的概念可知,檢驗(yàn)一個分解是由保持函數(shù)依賴的概念可知,檢驗(yàn)一個分解是否保持函數(shù)依賴,其實(shí)就是檢驗(yàn)函數(shù)依賴集否保持函數(shù)依賴,其實(shí)就是檢驗(yàn)函數(shù)依賴集G= UiF 與與F+是

49、否等價,也就是檢驗(yàn)對于任是否等價,也就是檢驗(yàn)對于任意一個函數(shù)依賴意一個函數(shù)依賴XY F +是否可以由是否可以由G根據(jù)根據(jù)Armstrong公理導(dǎo)出,即是否有公理導(dǎo)出,即是否有Y XG +69舉例舉例判斷無損連接性和函數(shù)依賴性判斷無損連接性和函數(shù)依賴性設(shè)有關(guān)系:設(shè)有關(guān)系:S-C-M(S學(xué)號,學(xué)號,C班級,班級,M班主任)班主任)F=S學(xué)號學(xué)號 C班級,班級, C班級班級 M班主任,班主任, S學(xué)號學(xué)號 M班班主任主任1=S-C(學(xué)號,班級),(學(xué)號,班級),C-M(班級,班主任)(班級,班主任)1具有無損連接和保持函數(shù)依賴性具有無損連接和保持函數(shù)依賴性2=S-C(學(xué)號,班級),(學(xué)號,班級),S

50、-M(學(xué)號,班主任)(學(xué)號,班主任)2具有無損連接性,但不具有保持函數(shù)依賴性具有無損連接性,但不具有保持函數(shù)依賴性3=S-M(學(xué)號,班主任),(學(xué)號,班主任),C-M(班級,班主任)(班級,班主任)3不具有無損連接性和保持函數(shù)依賴性不具有無損連接性和保持函數(shù)依賴性70舉例舉例判斷無損連接性和函數(shù)依賴性判斷無損連接性和函數(shù)依賴性設(shè)有關(guān)系:設(shè)有關(guān)系:S-C-M(S學(xué)號,學(xué)號,C班級,班級,M班主任)班主任)F=S學(xué)號學(xué)號 C班級,班級, C班級班級 M班主任,班主任, S學(xué)號學(xué)號 M班班主任主任1=S-C(學(xué)號,班級),(學(xué)號,班級),C-M(班級,班主任)(班級,班主任)1具有無損連接和保持函數(shù)

51、依賴性具有無損連接和保持函數(shù)依賴性2=S-C(學(xué)號,班級),(學(xué)號,班級),S-M(學(xué)號,班主任)(學(xué)號,班主任)2具有無損連接性,但不具有保持函數(shù)依賴性具有無損連接性,但不具有保持函數(shù)依賴性3=S-M(學(xué)號,班主任),(學(xué)號,班主任),C-M(班級,班主任)(班級,班主任)3不具有無損連接性和保持函數(shù)依賴性不具有無損連接性和保持函數(shù)依賴性715.3.5 模式分解與模式等價問題模式分解與模式等價問題模式等價模式等價 = 數(shù)據(jù)等價數(shù)據(jù)等價 + 依賴等價依賴等價數(shù)據(jù)等價:表達(dá)同樣的信息,不少也不能多數(shù)據(jù)等價:表達(dá)同樣的信息,不少也不能多依賴等價:相同的數(shù)據(jù)依賴集閉包依賴等價:相同的數(shù)據(jù)依賴集閉包

52、數(shù)據(jù)冗余及操作異常解決的辦法是關(guān)系模式的分?jǐn)?shù)據(jù)冗余及操作異常解決的辦法是關(guān)系模式的分解。分解要保證信息無損和依賴無損。那么怎樣分解,解。分解要保證信息無損和依賴無損。那么怎樣分解,分解到何時才是分解到何時才是“規(guī)范規(guī)范”的?的? 規(guī)范化理論規(guī)范化理論正是用來改造關(guān)系模式,通過分解關(guān)正是用來改造關(guān)系模式,通過分解關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題的理論向?qū)?。常、刪除異常、更新異常和數(shù)據(jù)冗余問題的理論向?qū)А?2范式范式u范式范式(Normal Form)是符合某一種級別的關(guān)系是符合某一種級別的關(guān)系模式的

53、集合。構(gòu)造數(shù)據(jù)庫必須遵循一定的規(guī)則,模式的集合。構(gòu)造數(shù)據(jù)庫必須遵循一定的規(guī)則,在關(guān)系數(shù)據(jù)庫中,這種規(guī)則就是范式。在關(guān)系數(shù)據(jù)庫中,這種規(guī)則就是范式。u滿足不同程度要求的為不同范式。滿足不同程度要求的為不同范式。u范式的種類:范式的種類:第一范式第一范式(1NF)第二范式第二范式(2NF)第三范式第三范式(3NF)BC范式范式(BCNF)第四范式第四范式(4NF)第五范式第五范式(5NF)一般說來,數(shù)據(jù)一般說來,數(shù)據(jù)庫只要滿足第三庫只要滿足第三范式就行了范式就行了73范式范式u各種范式之間存在聯(lián)系:各種范式之間存在聯(lián)系:u某一關(guān)系模式某一關(guān)系模式R為第為第n范式,可簡記為范式,可簡記為RnNF。N

54、F5NF4BCNFNF3NF2NF1745.4.1 1NF1NF的定義的定義如果一個關(guān)系模式如果一個關(guān)系模式R的所有屬性都是不可分的基本數(shù)的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng)據(jù)項(xiàng)(原子項(xiàng)原子項(xiàng)),則,則R1NF。 第一范式是對關(guān)系模式的最起碼的要求。不滿第一范式是對關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。 在第一范式(在第一范式(1NF)中表的每一行只包含一個實(shí))中表的每一行只包含一個實(shí)例的信息(例的信息(第一范式就是無重復(fù)的列第一范式就是無重復(fù)的列 ) 但是滿足第一范式的關(guān)系模式并不一定是一個但是滿足第一范式的關(guān)系模式并不一

55、定是一個好的關(guān)系模式。好的關(guān)系模式。755.4.2 2NF的引入的引入u對于一個關(guān)系而言,除了要確定對于一個關(guān)系而言,除了要確定R的屬性的屬性U之之外,還要根據(jù)外,還要根據(jù)R的語義確定關(guān)系模式上的所有的語義確定關(guān)系模式上的所有函數(shù)依賴函數(shù)依賴F。u通常滿足通常滿足1NF的關(guān)系模式常包含許多部分依賴,的關(guān)系模式常包含許多部分依賴,因而就會存在數(shù)據(jù)冗余因而就會存在數(shù)據(jù)冗余765.4.2 2NF例例: 關(guān)系模式關(guān)系模式 SLC(Sno, Sdept, Sloc, Cno, Grade) Sloc為學(xué)生住處,假設(shè)每個系的學(xué)生住在同一個為學(xué)生住處,假設(shè)每個系的學(xué)生住在同一個地方。地方。u函數(shù)依賴包括:函

56、數(shù)依賴包括: (Sno, Cno) f Grade Sno Sdept (Sno, Cno) P Sdept Sno Sloc (Sno, Cno) P Sloc Sdept Sloc77 2NFSLC的碼為的碼為(Sno, Cno)SLC滿足第一范式。滿足第一范式。 非主屬性非主屬性Sdept和和Sloc部分函數(shù)依賴于碼部分函數(shù)依賴于碼(Sno, Cno)SnoCnoGradeSdeptSlocSLC78 2NF(1) 插入異常插入異常假設(shè)假設(shè)Sno95102,SdeptIS,SlocN的學(xué)的學(xué)生還未選課,因課程號是主屬性,因此該學(xué)生還未選課,因課程號是主屬性,因此該學(xué)生的信息無法插入生的信

57、息無法插入SLC。(2) 刪除異常刪除異常 假定某個學(xué)生本來只選修了假定某個學(xué)生本來只選修了3號課程這一門號課程這一門課。現(xiàn)在因身體不適,他連課?,F(xiàn)在因身體不適,他連3號課程也不選號課程也不選修了。因課程號是主屬性,此操作將導(dǎo)致該修了。因課程號是主屬性,此操作將導(dǎo)致該學(xué)生信息的整個元組都要刪除。學(xué)生信息的整個元組都要刪除。79 2NF(3) 數(shù)據(jù)冗余度大數(shù)據(jù)冗余度大 如果一個學(xué)生選修了如果一個學(xué)生選修了10門課程,那么他的門課程,那么他的Sdept和和Sloc值就要重復(fù)存儲了值就要重復(fù)存儲了10次。次。(4) 修改復(fù)雜修改復(fù)雜 例如學(xué)生轉(zhuǎn)系,在修改此學(xué)生元組的例如學(xué)生轉(zhuǎn)系,在修改此學(xué)生元組的S

58、dept值的同時,還可能需要修改住處(值的同時,還可能需要修改住處(Sloc)。)。如果這個學(xué)生選修了如果這個學(xué)生選修了K門課,則必須無遺漏門課,則必須無遺漏地修改地修改K個元組中全部個元組中全部Sdept、Sloc信息。信息。802NF的引入的引入u確定了函數(shù)依賴集確定了函數(shù)依賴集F后,關(guān)系模式就可以進(jìn)行后,關(guān)系模式就可以進(jìn)行規(guī)范化工作了。規(guī)范化工作了。u規(guī)范化的核心是對關(guān)系模式逐級提出所必需的規(guī)范化的核心是對關(guān)系模式逐級提出所必需的遵循的約束條件,其表現(xiàn)形式就是各級遵循的約束條件,其表現(xiàn)形式就是各級“范范式式”,其出發(fā)點(diǎn)和落腳點(diǎn)都是使得所建立的關(guān),其出發(fā)點(diǎn)和落腳點(diǎn)都是使得所建立的關(guān)系模式具

59、有較低的冗余度和較少的異常性。系模式具有較低的冗余度和較少的異常性。81 2NFu原因原因 Sdept、 Sloc部分函數(shù)依賴于碼。部分函數(shù)依賴于碼。u解決方法解決方法 SLC分解為兩個關(guān)系模式,以消除這些部分函分解為兩個關(guān)系模式,以消除這些部分函數(shù)依賴數(shù)依賴 SC(Sno, Cno, Grade) SL(Sno, Sdept, Sloc)822NF函數(shù)依賴圖函數(shù)依賴圖:SnoCnoGradeSCSLSnoSdeptSloc83 2NFu2NF的定義的定義定義定義5.8 若關(guān)系模式若關(guān)系模式R1NF,并且每一個,并且每一個非主非主屬屬性屬屬性都都完全函數(shù)依賴完全函數(shù)依賴于于R的候選鍵,則的候選

60、鍵,則R2NF。例:例:SLC(Sno, Sdept, Sloc, Cno, Grade) 1NF SLC(Sno, Sdept, Sloc, Cno, Grade) 2NF SC(Sno, Cno, Grade) 2NF SL(Sno, Sdept, Sloc) 2NF84 2NFu采用投影分解法將一個采用投影分解法將一個1NF的關(guān)系分解為多個的關(guān)系分解為多個2NF的關(guān)系,可以在一定程度上減輕原的關(guān)系,可以在一定程度上減輕原1NF關(guān)關(guān)系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度系中存在的插入異常、刪除異常、數(shù)據(jù)冗余度大、修改復(fù)雜等問題。大、修改復(fù)雜等問題。u將一個將一個1NF關(guān)系分解為多個關(guān)系分

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論