數(shù)據(jù)庫設(shè)計理論V資料PPT課件_第1頁
數(shù)據(jù)庫設(shè)計理論V資料PPT課件_第2頁
數(shù)據(jù)庫設(shè)計理論V資料PPT課件_第3頁
數(shù)據(jù)庫設(shè)計理論V資料PPT課件_第4頁
數(shù)據(jù)庫設(shè)計理論V資料PPT課件_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計問題關(guān)系模式設(shè)計問題1 1Click to add TitleClick to add Title2 2 函數(shù)依賴函數(shù)依賴2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 規(guī)范化規(guī)范化4 4Click to add TitleClick to add Title1 1 * *多值依賴多值依賴5 5Click to add TitleClick to add Title

2、2 2 * *連接依賴連接依賴6 6第1頁/共61頁 n如何構(gòu)造一個合適的數(shù)據(jù)模式?如何構(gòu)造一個合適的數(shù)據(jù)模式?u應(yīng)該構(gòu)造幾個關(guān)系模式?應(yīng)該構(gòu)造幾個關(guān)系模式?u每個關(guān)系應(yīng)該由哪些屬性組成?每個關(guān)系應(yīng)該由哪些屬性組成?n思考:教務(wù)管理數(shù)據(jù)庫模式?思考:教務(wù)管理數(shù)據(jù)庫模式?n數(shù)據(jù)庫邏輯設(shè)計的工具數(shù)據(jù)庫邏輯設(shè)計的工具u關(guān)系數(shù)據(jù)庫的規(guī)范化理論關(guān)系數(shù)據(jù)庫的規(guī)范化理論第2頁/共61頁 n關(guān)系模式的五元組表示:關(guān)系模式的五元組表示: R(U, D, DOM, F)R(U, D, DOM, F)uR R:關(guān)系名:關(guān)系名uU U:組成該關(guān)系的屬性名集合:組成該關(guān)系的屬性名集合uD D:屬性組:屬性組U U中屬性

3、所來自的域中屬性所來自的域uDOMDOM:屬性向域的映象集合:屬性向域的映象集合uF F:屬性間數(shù)據(jù)的依賴關(guān)系集合:屬性間數(shù)據(jù)的依賴關(guān)系集合n關(guān)系模式的簡化三元組表示:關(guān)系模式的簡化三元組表示: R R(U, FU, F)n什么是數(shù)據(jù)依賴?什么是數(shù)據(jù)依賴?u是現(xiàn)實世界屬性間相互聯(lián)系的抽象是現(xiàn)實世界屬性間相互聯(lián)系的抽象u是數(shù)據(jù)內(nèi)在的性質(zhì)是數(shù)據(jù)內(nèi)在的性質(zhì)u是語義的體現(xiàn)是語義的體現(xiàn)第3頁/共61頁 n關(guān)系模式實例關(guān)系模式實例u設(shè)有一個醫(yī)生與患者之間的就診關(guān)系模式設(shè)有一個醫(yī)生與患者之間的就診關(guān)系模式R R(DnameDname,DlevelDlevel,DsalDsal,PnamePname,F(xiàn)sum

4、Fsum),其屬性分別表示醫(yī)生姓),其屬性分別表示醫(yī)生姓名、醫(yī)生職稱級別、醫(yī)生工資、患者姓名、診治費用。名、醫(yī)生職稱級別、醫(yī)生工資、患者姓名、診治費用。nR R上的語義:上的語義:u假設(shè)醫(yī)生和患者的姓名分別都是唯一的。假設(shè)醫(yī)生和患者的姓名分別都是唯一的。u醫(yī)生與患者之間是多對多的關(guān)系,即醫(yī)生可以為不同的患者醫(yī)生與患者之間是多對多的關(guān)系,即醫(yī)生可以為不同的患者看病,同時患者可以選擇不同的醫(yī)生。假設(shè)同一名患者不看看病,同時患者可以選擇不同的醫(yī)生。假設(shè)同一名患者不看相同的醫(yī)生,即可以選擇相同的醫(yī)生,即可以選擇DnameDname和和PnamePname作為就診關(guān)系模式作為就診關(guān)系模式R R的主鍵。的

5、主鍵。u一位患者每次就診都有一個花銷總金額。一位患者每次就診都有一個花銷總金額。u每位醫(yī)生具有相應(yīng)的職稱級別。每位醫(yī)生具有相應(yīng)的職稱級別。u職稱級別決定了醫(yī)生的工資金額。職稱級別決定了醫(yī)生的工資金額。DnameDlevelDsalaryPnameFsum羅曉羅曉主任醫(yī)師主任醫(yī)師3200張珍張珍30.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800張珍張珍50.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800劉景劉景55.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800張柳張柳58.00鄧英超鄧英超主治醫(yī)師主治醫(yī)師2400李秀李秀75.00羅曉羅曉主任醫(yī)師主任醫(yī)師3200傅偉相傅偉相35.00第4頁/共61頁 n可以確

6、定以下函數(shù)依賴:可以確定以下函數(shù)依賴:F = Dname,PnameFsumF = Dname,PnameFsum, DnameDlevel DnameDlevel, DlevelDsal DlevelDsal DnamePnameDlevelDsalFsum第5頁/共61頁 n就診模式就診模式R R存在的問題(雖然只有存在的問題(雖然只有5 5個屬性):個屬性):u數(shù)據(jù)冗余:浪費存儲空間,引起異常。數(shù)據(jù)冗余:浪費存儲空間,引起異常。u操作異常:操作異常:l 更新異常(Update Anomalies)。l 刪除異常(Delete Anomalies)。l 插入異常(Insert Anomal

7、ies)。n因此,就診關(guān)系模式因此,就診關(guān)系模式R R不是一個好的關(guān)系模式。不是一個好的關(guān)系模式。DnameDlevelDsalaryPnameFsum羅曉羅曉主任醫(yī)師主任醫(yī)師3200張珍張珍30.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800張珍張珍50.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800劉景劉景55.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800張柳張柳58.00鄧英超鄧英超主治醫(yī)師主治醫(yī)師2400李秀李秀75.00羅曉羅曉主任醫(yī)師主任醫(yī)師3200傅偉相傅偉相35.00第6頁/共61頁 n消除冗余和異?,F(xiàn)象(模式分解)消除冗余和異?,F(xiàn)象(模式分解)uR1R1(DnameDname,DlevelD

8、level)uR2R2(DlevelDlevel,DsalDsal)uR3R3(DnameDname,PnamePname,F(xiàn)sumFsum) DnameDlevelDsalaryPnameFsum羅曉羅曉主任醫(yī)師主任醫(yī)師3200張珍張珍30.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800張珍張珍50.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800劉景劉景55.00楊勛楊勛副主任醫(yī)師副主任醫(yī)師2800張柳張柳58.00鄧英超鄧英超主治醫(yī)師主治醫(yī)師2400李秀李秀75.00羅曉羅曉主任醫(yī)師主任醫(yī)師3200傅偉相傅偉相35.00第7頁/共61頁Click to add TitleClick to add Ti

9、tle1 1 關(guān)系模式設(shè)計問題關(guān)系模式設(shè)計問題1 1Click to add TitleClick to add Title2 2 函數(shù)依賴函數(shù)依賴2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 規(guī)范化規(guī)范化4 4Click to add TitleClick to add Title1 1 * *多值依賴多值依賴5 5Click to add TitleClick to add Title2 2 * *連接依賴連接依賴6 6第8頁/共61頁 n什么是數(shù)據(jù)

10、依賴?什么是數(shù)據(jù)依賴?u是現(xiàn)實世界屬性間相互聯(lián)系的抽象是現(xiàn)實世界屬性間相互聯(lián)系的抽象u是數(shù)據(jù)內(nèi)在的性質(zhì)是數(shù)據(jù)內(nèi)在的性質(zhì)u是語義的體現(xiàn)是語義的體現(xiàn)n數(shù)據(jù)依賴的類型數(shù)據(jù)依賴的類型u函數(shù)依賴(函數(shù)依賴(Functional DependencyFunctional Dependency,簡記為,簡記為FDFD)u多值依賴(多值依賴(Multivalued DependencyMultivalued Dependency,簡記為,簡記為MVDMVD)第9頁/共61頁 n函數(shù)依賴是指一個關(guān)系表中屬性(列)之間的聯(lián)系。函數(shù)依賴是指一個關(guān)系表中屬性(列)之間的聯(lián)系。n函數(shù)依賴關(guān)注一個屬性或?qū)傩约c另外一個屬

11、性或?qū)俸瘮?shù)依賴關(guān)注一個屬性或?qū)傩约c另外一個屬性或?qū)傩约g的依賴,亦即兩個屬性或?qū)傩约g的約束。性集之間的依賴,亦即兩個屬性或?qū)傩约g的約束。n函數(shù)依賴是關(guān)系中屬性之間在語義上的關(guān)聯(lián)特性。函數(shù)依賴是關(guān)系中屬性之間在語義上的關(guān)聯(lián)特性。n數(shù)據(jù)庫設(shè)計者根據(jù)對關(guān)系數(shù)據(jù)庫設(shè)計者根據(jù)對關(guān)系R R中的屬性的語義理解確定中的屬性的語義理解確定函數(shù)依賴,確定約束函數(shù)依賴,確定約束R R的所有元組的所有元組r r的函數(shù)依賴集,并的函數(shù)依賴集,并獲知屬性間的語義關(guān)聯(lián)。獲知屬性間的語義關(guān)聯(lián)。第10頁/共61頁 n符號說明:符號說明:uR R表示一個關(guān)系的模式;表示一個關(guān)系的模式;uU UA1A1,A2A2,An

12、An是是R R的所有屬性的集合;的所有屬性的集合;uF F是是R R中函數(shù)依賴的集合;中函數(shù)依賴的集合;ur r是是R R所取的值;所取的值;utXtX表示元組表示元組t t在屬性在屬性X X上的取值。例如上的取值。例如 tDname = tDname = 楊楊勛勛 n函數(shù)依賴定義函數(shù)依賴定義n函數(shù)依賴圖函數(shù)依賴圖u左部稱為決定因子左部稱為決定因子u右部稱為依賴因子。右部稱為依賴因子。XYY函數(shù)依賴于函數(shù)依賴于X函數(shù)依賴圖函數(shù)依賴圖第11頁/共61頁 n定義定義n平凡函數(shù)依賴必然成立,它不反映新的語義。平凡函數(shù)依賴必然成立,它不反映新的語義。例如:例如:Dname,PnameDname,Pna

13、mePnamePname。n平常所指的函數(shù)依賴一般都指非平凡函數(shù)依賴。平常所指的函數(shù)依賴一般都指非平凡函數(shù)依賴。第12頁/共61頁 n定義定義n完全函數(shù)依賴用來表明函數(shù)依賴的決定因子中的最小完全函數(shù)依賴用來表明函數(shù)依賴的決定因子中的最小屬性集。屬性集。n屬性集屬性集Y Y完全函數(shù)依賴于屬性集完全函數(shù)依賴于屬性集X X,如果滿足下列條,如果滿足下列條件:件:uY Y函數(shù)依賴于函數(shù)依賴于X X。uY Y不函數(shù)依賴于不函數(shù)依賴于X X的任何真子集。的任何真子集。第13頁/共61頁 n舉例舉例DnamePnameDlevelDsalFsum第14頁/共61頁 n定義定義n直接依賴直接依賴第15頁/共6

14、1頁 n舉例:舉例: 在就診關(guān)系在就診關(guān)系R R中,存在函數(shù)依賴中,存在函數(shù)依賴DnameDnameDlevelDlevel,DlevelDlevelDsalDsal,所以,所以DnameDname Dsal Dsal。DnamePnameDlevelDsalFsum第16頁/共61頁 n候選碼與主碼:用函數(shù)依賴定義候選碼與主碼:用函數(shù)依賴定義n包含在任何候選碼中的屬性稱為主屬性(包含在任何候選碼中的屬性稱為主屬性(Prime Prime AttributeAttribute)。不包含在任何候選碼中的屬性稱為)。不包含在任何候選碼中的屬性稱為非主屬性(非主屬性(Non-Key Attribut

15、eNon-Key Attribute)。)。n最簡單的情況,單個屬性是碼。最極端的情況,整最簡單的情況,單個屬性是碼。最極端的情況,整個屬性組是碼,稱為全碼(個屬性組是碼,稱為全碼(All-keyAll-key)。)。第17頁/共61頁 n候選碼與主碼的舉例候選碼與主碼的舉例u在關(guān)系模式在關(guān)系模式R R1 1(DnoDno,DlevelDlevel,DsalDsal)中)中DnoDno是碼是碼u在關(guān)系模式在關(guān)系模式R R2 2(DnoDno,PnoPno,F(xiàn)sumFsum)中的屬性組合()中的屬性組合(DnoDno,PnoPno)是碼。是碼。u關(guān)系模式關(guān)系模式R R3 3(DnoDno,Pno

16、Pno,MnoMno)表示醫(yī)生給患者開具的藥品,假)表示醫(yī)生給患者開具的藥品,假設(shè)一個醫(yī)生可以給多個患者看病,一位患者可以選擇不同的醫(yī)設(shè)一個醫(yī)生可以給多個患者看病,一位患者可以選擇不同的醫(yī)生就診,不同的醫(yī)生可以給患者開具不同的藥品,因此(生就診,不同的醫(yī)生可以給患者開具不同的藥品,因此(DnoDno,PnoPno,MnoMno)為)為R R3 3的碼,即全碼。的碼,即全碼。第18頁/共61頁 n外碼:用函數(shù)依賴定義外碼:用函數(shù)依賴定義n舉例:舉例:u在關(guān)系模式在關(guān)系模式R R2 2(DnoDno,PnoPno,F(xiàn)sumFsum)中,)中,DnoDno不是碼,不是碼,u但但DnoDno是關(guān)系模式

17、是關(guān)系模式R R1 1(DnoDno,DlevelDlevel,DsalDsal)的碼,)的碼,u則則DnoDno是關(guān)系模式是關(guān)系模式R R2 2的外碼。的外碼。n主碼與外碼提供了一個表示關(guān)系之間聯(lián)系的手段。主碼與外碼提供了一個表示關(guān)系之間聯(lián)系的手段。如上述關(guān)系模式如上述關(guān)系模式R R1 1和和R R2 2的聯(lián)系就是通過的聯(lián)系就是通過DnoDno來體現(xiàn)的。來體現(xiàn)的。第19頁/共61頁Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計問題關(guān)系模式設(shè)計問題1 1Click to add TitleClick to add Title2 2 函數(shù)依賴函數(shù)依賴

18、2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 規(guī)范化規(guī)范化4 4Click to add TitleClick to add Title1 1 * *多值依賴多值依賴5 5Click to add TitleClick to add Title2 2 * *連接依賴連接依賴6 6第20頁/共61頁 n由函數(shù)依賴可以引起的更新異常問題,同樣,多值由函數(shù)依賴可以引起的更新異常問題,同樣,多值依賴和連接依賴也會引起類似的問題。解決這些問依賴和連接依賴也會引起類

19、似的問題。解決這些問題的途徑就是按照題的途徑就是按照“一事一地一事一地”的原則,對關(guān)系模的原則,對關(guān)系模式進行分解,使之表達的語義概念單純化。式進行分解,使之表達的語義概念單純化。n關(guān)系模式關(guān)系模式R R的分解就是用兩個或兩個以上關(guān)系來替換的分解就是用兩個或兩個以上關(guān)系來替換R R,分解后的關(guān)系模式的屬性集都是,分解后的關(guān)系模式的屬性集都是R R中屬性的子集,中屬性的子集,其并集與其并集與R R的屬性集相同。的屬性集相同。n模式分解幫助消除不良設(shè)計中的一些問題,如冗余、模式分解幫助消除不良設(shè)計中的一些問題,如冗余、不一致或異常。不一致或異常。第21頁/共61頁 n模式分解的定義模式分解的定義n

20、模式分解的問題模式分解的問題第22頁/共61頁 n一個關(guān)系表被分解成兩個或兩個以上的小表,通過一個關(guān)系表被分解成兩個或兩個以上的小表,通過連接被分解后的小表可以獲得原始表的內(nèi)容,則稱連接被分解后的小表可以獲得原始表的內(nèi)容,則稱為無損連接分解。為無損連接分解。n例如:將例如:將R R(X X,Y Y,Z Z)分解成)分解成R R1 1(X X,Y Y)和)和R R2 2(X X,Z Z),如果),如果X X是是R R1 1和和R R2 2的共同屬性或?qū)傩约掖嬖诘墓餐瑢傩曰驅(qū)傩约?,且存在函?shù)依賴集函數(shù)依賴集F F=X XY Y,X XZ Z ,則該分解是無損的。,則該分解是無損的。第23頁/共

21、61頁 u無損中的損是指信息丟失。如果一個分解不是無損分解,無損中的損是指信息丟失。如果一個分解不是無損分解, 則所則所得結(jié)果的元組數(shù)總比原來的多(增加了噪聲,但把原來的信息得結(jié)果的元組數(shù)總比原來的多(增加了噪聲,但把原來的信息丟失了)。所謂丟失了)。所謂“有損有損”就損在出現(xiàn)多余的元組上。就損在出現(xiàn)多余的元組上。第24頁/共61頁 n無損分解測試算法無損分解測試算法追逐法(追逐法(ChaseChase)第25頁/共61頁 nChaseChase是一個普遍的算法,無論一個關(guān)系模式分解為是一個普遍的算法,無論一個關(guān)系模式分解為多少個關(guān)系模式,都可以用此算法進行檢驗。多少個關(guān)系模式,都可以用此算法

22、進行檢驗。n如果一個關(guān)系模式一分為二,可以簡化檢驗。如果一個關(guān)系模式一分為二,可以簡化檢驗。n例如例如第26頁/共61頁 n所有的模式分解必須是無損的。所有的模式分解必須是無損的。n無損連接分解總是關(guān)于特定函數(shù)依賴集無損連接分解總是關(guān)于特定函數(shù)依賴集F F定義的。定義的。n模式分解能消除數(shù)據(jù)冗余和操作異常現(xiàn)象。模式分解能消除數(shù)據(jù)冗余和操作異?,F(xiàn)象。n但是分解以后,檢索操作需要做笛卡爾積或連接操但是分解以后,檢索操作需要做笛卡爾積或連接操作,這將付出時間代價。作,這將付出時間代價。n一般認為,為了消除冗余和異常現(xiàn)象,對模式進行一般認為,為了消除冗余和異常現(xiàn)象,對模式進行分解是值得的。分解是值得的

23、。第27頁/共61頁 n模式分解的另一個特性是分解的過程中能否保持函模式分解的另一個特性是分解的過程中能否保持函數(shù)依賴集,如果不能保持函數(shù)依賴,那么數(shù)據(jù)的語數(shù)依賴集,如果不能保持函數(shù)依賴,那么數(shù)據(jù)的語義就會出現(xiàn)混亂。義就會出現(xiàn)混亂。n模式分解要保持函數(shù)依賴,因為函數(shù)依賴集模式分解要保持函數(shù)依賴,因為函數(shù)依賴集F F中的每中的每一個函數(shù)依賴都代表數(shù)據(jù)庫的一個約束。一個函數(shù)依賴都代表數(shù)據(jù)庫的一個約束。n如果某個分解能保持函數(shù)依賴集,那么在數(shù)據(jù)輸入如果某個分解能保持函數(shù)依賴集,那么在數(shù)據(jù)輸入或更新時,只要每個關(guān)系模式本身的函數(shù)依賴約束或更新時,只要每個關(guān)系模式本身的函數(shù)依賴約束被滿足,就可以確保整個

24、數(shù)據(jù)庫中的語義完整性不被滿足,就可以確保整個數(shù)據(jù)庫中的語義完整性不被破壞。顯然這是一種良好的特性。被破壞。顯然這是一種良好的特性。第28頁/共61頁 n定義定義n舉例:舉例:u設(shè)醫(yī)生關(guān)系模式設(shè)醫(yī)生關(guān)系模式R R(DnoDno,DlevelDlevel,DsalDsal)。假設(shè)每個醫(yī)生只有)。假設(shè)每個醫(yī)生只有一個職稱級別,每個職稱級別只有一個工資數(shù)目。那么一個職稱級別,每個職稱級別只有一個工資數(shù)目。那么R R上函數(shù)上函數(shù)依賴集依賴集F F=Dno=DnoDlevelDlevel,DlevelDlevelDsalDsal。u如果將如果將R R分解成分解成=RR1 1(Dno,Dlevel)(Dno

25、,Dlevel),R R2 2(Dno,Dsal)(Dno,Dsal),可以,可以驗證這個分解是無損分解。驗證這個分解是無損分解。uR R1 1上的函數(shù)依賴是上的函數(shù)依賴是F F1 1=Dno=DnoDlevelDlevel,R R2 2上的函數(shù)依賴是上的函數(shù)依賴是F F2 2=Dno=DnoDsalDsal。但是從這兩個函數(shù)依賴推導(dǎo)不出在。但是從這兩個函數(shù)依賴推導(dǎo)不出在R R上成立的上成立的函數(shù)依賴函數(shù)依賴D DlevellevelDsalDsal。因此分解。因此分解把函數(shù)依賴把函數(shù)依賴D DlevellevelDsalDsal丟失了,即丟失了,即不保持不保持F F。第29頁/共61頁 n關(guān)

26、系模式分解的兩個特性實際上涉及兩個數(shù)據(jù)庫模式的關(guān)系模式分解的兩個特性實際上涉及兩個數(shù)據(jù)庫模式的等價問題,這種等價包括等價問題,這種等價包括數(shù)據(jù)等價數(shù)據(jù)等價和和依賴等價依賴等價兩個方面。兩個方面。n數(shù)據(jù)等價是指兩個數(shù)據(jù)庫實例應(yīng)表示同樣的信息內(nèi)容,數(shù)據(jù)等價是指兩個數(shù)據(jù)庫實例應(yīng)表示同樣的信息內(nèi)容,用用“無損分解無損分解”衡量。如果是無損分解,那么對關(guān)系反衡量。如果是無損分解,那么對關(guān)系反復(fù)的投影和連接都不會丟失信息。復(fù)的投影和連接都不會丟失信息。n依賴等價是指兩個數(shù)據(jù)庫模式應(yīng)有相同的依賴集閉包。依賴等價是指兩個數(shù)據(jù)庫模式應(yīng)有相同的依賴集閉包。在依賴集閉包相等情況下,數(shù)據(jù)的語義是不會出錯的。在依賴集閉

27、包相等情況下,數(shù)據(jù)的語義是不會出錯的。n違反數(shù)據(jù)等價或依賴等價的分解很難說是一個很好的設(shè)違反數(shù)據(jù)等價或依賴等價的分解很難說是一個很好的設(shè)計模式。計模式。n但是要同時達到無損分解和保持函數(shù)依賴的分解也不是但是要同時達到無損分解和保持函數(shù)依賴的分解也不是一件容易的事情,需要認真對待。一件容易的事情,需要認真對待。第30頁/共61頁Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計問題關(guān)系模式設(shè)計問題1 1Click to add TitleClick to add Title2 2 函數(shù)依賴函數(shù)依賴2 2Click to add TitleClick to

28、 add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 規(guī)范化規(guī)范化4 4Click to add TitleClick to add Title1 1 * *多值依賴多值依賴5 5Click to add TitleClick to add Title2 2 * *連接依賴連接依賴6 6第31頁/共61頁 n范式(范式(Normal FormaNormal Forma,NFNF)是一種關(guān)系的狀態(tài),也)是一種關(guān)系的狀態(tài),也是衡量關(guān)系模式好壞的標準。是衡量關(guān)系模式好壞的標準。n范式的種類(范式的種類( 1NF 1NF,2N

29、F2NF,3NF3NF,BCNF BCNF )與數(shù)據(jù)依賴)與數(shù)據(jù)依賴有著直接的聯(lián)系。在關(guān)系模式中存在函數(shù)依賴時就有有著直接的聯(lián)系。在關(guān)系模式中存在函數(shù)依賴時就有可能存在數(shù)據(jù)冗余,引出數(shù)據(jù)操作異?,F(xiàn)象??赡艽嬖跀?shù)據(jù)冗余,引出數(shù)據(jù)操作異?,F(xiàn)象。n例如:就診關(guān)系模式例如:就診關(guān)系模式R R(DnameDname,DlevelDlevel,DsalDsal,PnamePname,F(xiàn)sumFsum)不是一個好的設(shè)計,因為存在冗余信)不是一個好的設(shè)計,因為存在冗余信息(重復(fù)存儲的職稱和工資)。數(shù)據(jù)冗余不僅浪費存息(重復(fù)存儲的職稱和工資)。數(shù)據(jù)冗余不僅浪費存儲空間,而且會使數(shù)據(jù)庫難以保持數(shù)據(jù)的一致性。儲空間

30、,而且會使數(shù)據(jù)庫難以保持數(shù)據(jù)的一致性。n范式可以用于確保數(shù)據(jù)庫模式中沒有各種類型的異常范式可以用于確保數(shù)據(jù)庫模式中沒有各種類型的異常和不一致性。為了確定一個特定關(guān)系是否符合范式要和不一致性。為了確定一個特定關(guān)系是否符合范式要求,需要求,需要檢查關(guān)系中屬性間的函數(shù)依賴檢查關(guān)系中屬性間的函數(shù)依賴,而不是檢查而不是檢查關(guān)系中的當前實例關(guān)系中的當前實例。第32頁/共61頁 n一個規(guī)范化的模式有最小的數(shù)據(jù)冗余,它要求除了與一個規(guī)范化的模式有最小的數(shù)據(jù)冗余,它要求除了與元組進行連接的元組進行連接的外鍵外鍵(在另一個關(guān)系中是主鍵的屬性(在另一個關(guān)系中是主鍵的屬性組)之外,數(shù)據(jù)庫實例中的其他屬性的值都不能被復(fù)

31、組)之外,數(shù)據(jù)庫實例中的其他屬性的值都不能被復(fù)制。制。n規(guī)范化主要作為驗證和改進邏輯數(shù)據(jù)庫設(shè)計的工具,規(guī)范化主要作為驗證和改進邏輯數(shù)據(jù)庫設(shè)計的工具,使得邏輯設(shè)計能夠使得邏輯設(shè)計能夠滿足特定約束滿足特定約束并并避免不必要的數(shù)據(jù)避免不必要的數(shù)據(jù)重復(fù)重復(fù)。第33頁/共61頁 n定義:在關(guān)系模式定義:在關(guān)系模式R R的每個關(guān)系的每個關(guān)系r r中,如果每個屬中,如果每個屬性值都是不可再分的原子值,那么稱性值都是不可再分的原子值,那么稱R R是第一范是第一范式(式(1NF1NF)的模式。)的模式。n1NF1NF不允許每個元組的每個屬性對應(yīng)一組值、一不允許每個元組的每個屬性對應(yīng)一組值、一行值或兩個值的組合。

32、簡單地說,行值或兩個值的組合。簡單地說,1NF1NF中不允許中不允許出現(xiàn)出現(xiàn)“表中有表表中有表”的現(xiàn)象。的現(xiàn)象。n1NF1NF是關(guān)系模式應(yīng)具有的最起碼的條件。滿足是關(guān)系模式應(yīng)具有的最起碼的條件。滿足1NF1NF的關(guān)系稱為規(guī)范化的關(guān)系;否則稱為非規(guī)范化的的關(guān)系稱為規(guī)范化的關(guān)系;否則稱為非規(guī)范化的關(guān)系。關(guān)系數(shù)據(jù)庫研究的關(guān)系都是規(guī)范化的關(guān)系。關(guān)系。關(guān)系數(shù)據(jù)庫研究的關(guān)系都是規(guī)范化的關(guān)系。第34頁/共61頁 n例如,就診關(guān)系模式例如,就診關(guān)系模式R R(DnoDno,PnoPno,DlevelDlevel,DsalDsal,F(xiàn)sum)Fsum)中每個屬性都不可再分,因此中每個屬性都不可再分,因此R R滿

33、足滿足1NF1NF。n但在醫(yī)生關(guān)系模式但在醫(yī)生關(guān)系模式D D(DnoDno,DnameDname,DresumeDresume)中,如果中,如果DresumeDresume包括工作單位和工作時間兩列包括工作單位和工作時間兩列信息,在某個醫(yī)生可能曾經(jīng)工作過多個單位而出信息,在某個醫(yī)生可能曾經(jīng)工作過多個單位而出現(xiàn)多值,則現(xiàn)多值,則D D不滿足不滿足1NF1NF。將。將D D修改為修改為D1D1(DnoDno,DnameDname,DorganiseDorganise,DdateDdate),則),則D1D1就滿足了就滿足了1NF1NF。第35頁/共61頁 n如果關(guān)系模式中存在部分函數(shù)依賴,那么它就

34、不如果關(guān)系模式中存在部分函數(shù)依賴,那么它就不是一個好的關(guān)系模式,因為它很可能出現(xiàn)數(shù)據(jù)冗是一個好的關(guān)系模式,因為它很可能出現(xiàn)數(shù)據(jù)冗余和操作異?,F(xiàn)象。因此,需要對這樣的關(guān)系模余和操作異?,F(xiàn)象。因此,需要對這樣的關(guān)系模式進行分解,以排除局部函數(shù)依賴,使模式達到式進行分解,以排除局部函數(shù)依賴,使模式達到2NF2NF的標準。的標準。n2NF2NF定義:定義: 如果關(guān)系模式如果關(guān)系模式R R1NF1NF,且每個,且每個非主屬非主屬性性(不是組成候選碼的屬性)(不是組成候選碼的屬性)完全函數(shù)依賴完全函數(shù)依賴于候于候選碼,那么稱選碼,那么稱R R屬于屬于2NF2NF的模式。的模式。n2NF2NF是基于完全函數(shù)

35、依賴的,只有在主鍵是復(fù)合屬是基于完全函數(shù)依賴的,只有在主鍵是復(fù)合屬性下才可能不符合性下才可能不符合2NF2NF。n2NF2NF是通往更高范式的中間步驟,它消除了是通往更高范式的中間步驟,它消除了1NF1NF存存在的部分問題。在的部分問題。第36頁/共61頁 n2NF2NF舉例舉例u設(shè)有關(guān)系模式設(shè)有關(guān)系模式R R(DnoDno,PnoPno,DlevelDlevel,DsalDsal,F(xiàn)sum)Fsum)的屬性的屬性分別表示醫(yī)生編號、患者編號、醫(yī)生職稱級別、醫(yī)生工資和分別表示醫(yī)生編號、患者編號、醫(yī)生職稱級別、醫(yī)生工資和診療費用。(診療費用。(DnoDno,PnoPno)是)是R R的候選碼。的候

36、選碼。u如果如果R R上有兩個上有兩個FDFD:(:(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)和)和DnoDno(DlevelDlevel,DsalDsal),因此前面一個),因此前面一個FDFD是局部依賴,所是局部依賴,所以以R R不是不是2NF2NF。此時。此時R R會出現(xiàn)冗余和異常。例如,某個醫(yī)生為會出現(xiàn)冗余和異常。例如,某個醫(yī)生為N N個病人看病,則在關(guān)系中會出現(xiàn)個病人看病,則在關(guān)系中會出現(xiàn)N N個元組,而醫(yī)生的職稱級個元組,而醫(yī)生的職稱級別和工資就會重復(fù)別和工資就會重復(fù)N N次。次。u如果將如果將R R分解為分解為R R1 1(DnoDno,Dlev

37、elDlevel,DsalDsal)和)和R R2 2(DnoDno,PnoPno,F(xiàn)sumFsum)后,局部依賴()后,局部依賴(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)就)就消失了,消失了,R R1 1和和R R2 2都是都是2NF2NF了。了。DnamePnameDlevelDsalFsum第37頁/共61頁 n2NF2NF分解算法:將關(guān)系模式分解算法:將關(guān)系模式R R分解成分解成2NF2NF模式子集模式子集u設(shè)有關(guān)系模式設(shè)有關(guān)系模式R(U)R(U),主鍵是,主鍵是W W,R R上還存在函數(shù)依賴上還存在函數(shù)依賴X XZ Z,其,其中中Z Z是非主屬性和是

38、非主屬性和X WX W,則,則W WZ Z就是一個局部依賴。此時就是一個局部依賴。此時應(yīng)該把應(yīng)該把R R分解成兩個模式:分解成兩個模式:u R R1 1(XZXZ),主鍵是),主鍵是X X;u R R2 2(U-ZU-Z),主鍵仍為),主鍵仍為W W,外鍵是,外鍵是X X(參考(參考R R1 1)。)。u利用外鍵和主鍵的連接可以從利用外鍵和主鍵的連接可以從R R1 1和和R R2 2重新得到重新得到R R。u如果如果R R1 1和和R R2 2還不是還不是2NF2NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個關(guān)系模式都是中每一個關(guān)系模式都是2NF2NF為止。為

39、止。n例如例如uR R(DnoDno,PnoPno,DlevelDlevel,DsalDsal,F(xiàn)sum)Fsum)中,存在中,存在FDFD:(:(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)和)和DnoDno(DlevelDlevel,DsalDsal)u分解為:分解為:R R1 1(DnoDno,DlevelDlevel,DsalDsal)和)和R R2 2(DnoDno,PnoPno,F(xiàn)sumFsum)第38頁/共61頁 n定義:如果關(guān)系模式定義:如果關(guān)系模式R R1NF1NF,且每個,且每個非主屬性非主屬性都都不傳遞依賴不傳遞依賴于于R R的候選碼,那么稱

40、的候選碼,那么稱R R屬于屬于3NF3NF的模式。的模式。n在在3NF3NF中,關(guān)系模式是由主鍵和一組相互獨立的非中,關(guān)系模式是由主鍵和一組相互獨立的非主屬性組成的,它滿足兩個條件:主屬性組成的,它滿足兩個條件:u(1 1)R R中的非主屬性相互獨立;中的非主屬性相互獨立;u(2 2)R R中的非主屬性函數(shù)依賴于主鍵。中的非主屬性函數(shù)依賴于主鍵。第39頁/共61頁 n3NF3NF舉例:舉例:uR R2 2(DnoDno,PnoPno,F(xiàn)sumFsum)是)是2NF2NF模式,而且也是模式,而且也是3NF3NF模式。模式。u但是但是R R1 1(DnoDno,DlevelDlevel,DsalD

41、sal)是)是2NF2NF模式,但不一定是模式,但不一定是3NF3NF。因為如果因為如果R R1 1中存在函數(shù)依賴中存在函數(shù)依賴DnoDnoDlevelDlevel和和DlevelDlevelDsalDsal,那么那么DnoDnoDsalDsal就是一個傳遞依賴,即就是一個傳遞依賴,即R R1 1不是不是3NF3NF模式。模式。u此時此時R R1 1的關(guān)系也會出現(xiàn)冗余和異常。例如,的關(guān)系也會出現(xiàn)冗余和異常。例如,R R2 2中存在中存在M M個職稱個職稱同為主任級別的醫(yī)生,則同為主任級別的醫(yī)生,則R R1 1中需要重復(fù)存儲中需要重復(fù)存儲M M個相同的工資數(shù)個相同的工資數(shù)目。目。u如果將如果將R

42、 R1 1分解為分解為R R1111(DnoDno,DlevelDlevel)和)和R R1212(DlevelDlevel,DsalDsal)后,后,DnoDnoDsalDsal就不會出現(xiàn)在就不會出現(xiàn)在R R1111和和R R1212中,因此中,因此R R1111和和R R1212都是都是3NF3NF的模式。的模式。DnamePnameDlevelDsalFsum第40頁/共61頁 n定理:如果定理:如果R R是是3NF3NF模式,那么模式,那么R R也是也是2NF2NF模式。模式。n局部依賴和傳遞依賴是關(guān)系模式產(chǎn)生數(shù)據(jù)冗余和局部依賴和傳遞依賴是關(guān)系模式產(chǎn)生數(shù)據(jù)冗余和異常的兩個重要原因。異常

43、的兩個重要原因。n由于由于3NF3NF模式中不存在非主屬性對候選鍵的局部依模式中不存在非主屬性對候選鍵的局部依賴和傳遞依賴,因此賴和傳遞依賴,因此3NF3NF消除了很大一部分存儲異消除了很大一部分存儲異常,具有較好的性能。常,具有較好的性能。n而對于非而對于非1NF1NF、1NF1NF和和2NF2NF的關(guān)系模式,由于它們的的關(guān)系模式,由于它們的性能較差,通常不宜作為數(shù)據(jù)庫模式,需要將這性能較差,通常不宜作為數(shù)據(jù)庫模式,需要將這些關(guān)系模式變換為些關(guān)系模式變換為3NF3NF或更高級的范式。這種變換或更高級的范式。這種變換過程稱為過程稱為“關(guān)系的規(guī)范化處理關(guān)系的規(guī)范化處理”。第41頁/共61頁 n3

44、NF3NF分解算法:分解算法: 將關(guān)系模式將關(guān)系模式R R分解為分解為3NF3NF模式集。模式集。u設(shè)關(guān)系模式設(shè)關(guān)系模式R R(U U),主鍵是),主鍵是W W,R R上還存在上還存在FD XFD XZ Z,其中,其中Z Z是是非主屬性,非主屬性, 且且X X不是候選鍵,這樣不是候選鍵,這樣W WZ Z就是一個傳遞依就是一個傳遞依賴。此時應(yīng)把賴。此時應(yīng)把R R分解成兩個模式:分解成兩個模式:u R R1 1(XZXZ),主鍵是),主鍵是X X;u R R2 2(U -Z U -Z ),主鍵仍是),主鍵仍是W W,外鍵是,外鍵是X X(參考(參考R R1 1)。)。u利用外鍵和主鍵相匹配機制,利

45、用外鍵和主鍵相匹配機制,R R1 1和和R R2 2通過連接可以重新得到通過連接可以重新得到R R。u如果如果R R1 1和和R R2 2還不是還不是3NF3NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式,則重復(fù)上述過程,一直到數(shù)據(jù)庫模式中每一個關(guān)系模式都是中每一個關(guān)系模式都是3NF3NF為止。為止。n例如:例如:uR R1 1(DnoDno,DlevelDlevel,DsalDsal)上存在)上存在DnoDnoDlevelDlevel和和DlevelDlevelDsalDsal,則,則DnoDno DsalDsal為傳遞函數(shù)依賴為傳遞函數(shù)依賴u分解為:分解為:R R1111(DnoDno,Dleve

46、lDlevel)和)和R R1212(DlevelDlevel,DsalDsal)ZX 第42頁/共61頁 n在在3NF3NF模式中,并未排除主屬性對候選鍵的傳遞依模式中,并未排除主屬性對候選鍵的傳遞依賴,因此有必要提出更高一級的范式。賴,因此有必要提出更高一級的范式。nBCBC范式(范式(Boyce-Codd Normal FormBoyce-Codd Normal Form,BCNFBCNF),由),由BoyceBoyce與與CoddCodd提出的,比上述的提出的,比上述的3NF3NF又進了一步,又進了一步,通常認為通常認為BCNFBCNF是修正的第三范式,有時也稱為擴是修正的第三范式,有

47、時也稱為擴充的第三范式。充的第三范式。nBCBCNFNF定義:如果關(guān)系模式定義:如果關(guān)系模式R R1NF1NF,且每個屬性都,且每個屬性都不傳遞依賴于不傳遞依賴于R R的候選碼,那么稱的候選碼,那么稱R R是是BCNFBCNF的模式。的模式。第43頁/共61頁 n由由BCNFBCNF的定義可以得到以下結(jié)論,一個滿足的定義可以得到以下結(jié)論,一個滿足BCNFBCNF的關(guān)系模式有:的關(guān)系模式有:u所有非主屬性對每一個碼都是完全函數(shù)依賴。所有非主屬性對每一個碼都是完全函數(shù)依賴。u所有的主屬性對每一個不包含它的碼,也是完全函數(shù)依賴。所有的主屬性對每一個不包含它的碼,也是完全函數(shù)依賴。u沒有任何屬性完全函

48、數(shù)依賴于非碼的任何一組屬性。沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。第44頁/共61頁 n舉例舉例u關(guān)系模式關(guān)系模式R R(BnoBno,BnameBname,AuthorAuthor)的屬性分別表示書號、)的屬性分別表示書號、書名和作者名。假如每個書號只有一個書名,但不同的書號書名和作者名。假如每個書號只有一個書名,但不同的書號可以有相同的書名;每本書可以有多個作者合寫,但每個作可以有相同的書名;每本書可以有多個作者合寫,但每個作者參與編著的書名應(yīng)該互不相同。者參與編著的書名應(yīng)該互不相同。uR R上的上的FDFD如下:如下:BnoBnoBnameBname和(和(BnameBname,

49、AuthorAuthor)BnoBnou因此因此R R的關(guān)鍵碼是(的關(guān)鍵碼是(BnoBno,AuthorAuthor)或()或(BnameBname,AuthorAuthor),),因而模式因而模式R R的屬性都是主屬性,的屬性都是主屬性,R R是是3NF3NF模式。模式。u但根據(jù)兩個但根據(jù)兩個FDFD可知,屬性可知,屬性BnameBname傳遞依賴于關(guān)鍵碼(傳遞依賴于關(guān)鍵碼(BnameBname,AuthorAuthor),因此),因此R R不是不是BCNFBCNF。u例如,一本書由多個作者編寫時,其書名與書號之間的聯(lián)系例如,一本書由多個作者編寫時,其書名與書號之間的聯(lián)系在關(guān)系中將多次出現(xiàn),

50、會導(dǎo)致數(shù)據(jù)冗余和操作異常。在關(guān)系中將多次出現(xiàn),會導(dǎo)致數(shù)據(jù)冗余和操作異常。u如果將如果將R R分解為分解為R R1 1(BnoBno,BnameBname)和)和R R2 2(BnoBno,AuthorAuthor),則),則能夠解決上述問題,且能夠解決上述問題,且R R1 1和和R R2 2都是都是BCNFBCNF。u但這樣分解可能會導(dǎo)致新的問題,例如,這個分解把(但這樣分解可能會導(dǎo)致新的問題,例如,這個分解把(BnameBname,AuthorAuthor)BnoBno丟失了,數(shù)據(jù)語義將會引起新的矛盾。丟失了,數(shù)據(jù)語義將會引起新的矛盾。第45頁/共61頁 nBCNFBCNF分解算法:將分解算

51、法:將R R無損分解且保持依賴地分解成無損分解且保持依賴地分解成3NF3NF模式集。模式集。u 對于關(guān)系模式對于關(guān)系模式R R和和R R上成立的上成立的FDFD集集F F,先求出,先求出F F的最小依賴集,的最小依賴集,然后再把最小依賴集中那些左部相同的然后再把最小依賴集中那些左部相同的FDFD用合并性合并起來。用合并性合并起來。u 對最小依賴集中每個對最小依賴集中每個FD FD X XY Y去構(gòu)成一個模式去構(gòu)成一個模式( (XY)XY)。u 在構(gòu)成的模式集中,如果每個模式都不包含在構(gòu)成的模式集中,如果每個模式都不包含R R的候選碼,的候選碼,那么把候選碼作為一個模式放入模式集中。那么把候選碼

52、作為一個模式放入模式集中。n舉例:舉例:u設(shè)關(guān)系模式設(shè)關(guān)系模式R R(ABCDEABCDE),),R R的最小依賴集為的最小依賴集為 A AB B,C CD D 。從依賴集可知從依賴集可知R R的候選碼為的候選碼為ACEACE。u先根據(jù)最小依賴集,可知先根據(jù)最小依賴集,可知=AB,CD=AB,CD。然后再加入由候選碼。然后再加入由候選碼組成的模式組成的模式ACEACE。因此最后結(jié)果。因此最后結(jié)果=AB,CD,ACE=AB,CD,ACE是一個是一個3NF3NF模模式集,式集,R R相對于該依賴集是無損分解且保持函數(shù)依賴。相對于該依賴集是無損分解且保持函數(shù)依賴。第46頁/共61頁 n定理:如果定理

53、:如果R R是是BCNFBCNF模式,那么模式,那么R R也是也是3NF3NF模式。模式。n但是,若但是,若R R3NF3NF,則,則R R未必屬于未必屬于BCNFBCNF。n3NF3NF和和BCNFBCNF是在函數(shù)依賴的條件下對模式分解所能是在函數(shù)依賴的條件下對模式分解所能達到的分離程度的測度。達到的分離程度的測度。n一個數(shù)據(jù)庫模式中的關(guān)系模式如果都屬于一個數(shù)據(jù)庫模式中的關(guān)系模式如果都屬于BCNFBCNF,那,那么在函數(shù)依賴范疇內(nèi),它已實現(xiàn)了徹底的分離,已么在函數(shù)依賴范疇內(nèi),它已實現(xiàn)了徹底的分離,已消除了插入和刪除的異常。消除了插入和刪除的異常。n3NF3NF的的“不徹底性不徹底性”表現(xiàn)在可

54、能存在主屬性對碼的表現(xiàn)在可能存在主屬性對碼的部分依賴和傳遞依賴。部分依賴和傳遞依賴。第47頁/共61頁 n滿足范式要求的數(shù)據(jù)庫設(shè)計是結(jié)構(gòu)清晰的,同時可滿足范式要求的數(shù)據(jù)庫設(shè)計是結(jié)構(gòu)清晰的,同時可避免數(shù)據(jù)冗余和操作異常。這并意味著不符合范式避免數(shù)據(jù)冗余和操作異常。這并意味著不符合范式要求的設(shè)計一定是錯誤的。要求的設(shè)計一定是錯誤的。n關(guān)系模式分解一般應(yīng)具有關(guān)系模式分解一般應(yīng)具有3 3個特性:個特性:u達到達到BCNFBCNF,或,或3NF3NF;u無損分解;無損分解;u保持函數(shù)依賴。保持函數(shù)依賴。n數(shù)據(jù)庫設(shè)計者在設(shè)計和關(guān)系數(shù)據(jù)庫時,應(yīng)做權(quán)衡,數(shù)據(jù)庫設(shè)計者在設(shè)計和關(guān)系數(shù)據(jù)庫時,應(yīng)做權(quán)衡,盡可能使數(shù)據(jù)

55、庫模式保持最好的特性。一般盡可能盡可能使數(shù)據(jù)庫模式保持最好的特性。一般盡可能設(shè)計成設(shè)計成BCNFBCNF模式集。如果設(shè)計成模式集。如果設(shè)計成BCNFBCNF模式時達不到模式時達不到保持函數(shù)依賴的特點,那么只能降低要求,設(shè)計成保持函數(shù)依賴的特點,那么只能降低要求,設(shè)計成3NF3NF模式集,以求達到保持函數(shù)依賴和無損分解的模式集,以求達到保持函數(shù)依賴和無損分解的特點。特點。第48頁/共61頁 n一個好的模式設(shè)計方法應(yīng)符合一個好的模式設(shè)計方法應(yīng)符合3 3條原則:表達性、條原則:表達性、分離性和最小冗余性。分離性和最小冗余性。u表達性涉及兩個數(shù)據(jù)庫模式的等價問題,即數(shù)據(jù)等價和語義等表達性涉及兩個數(shù)據(jù)庫

56、模式的等價問題,即數(shù)據(jù)等價和語義等價,分別用無損分解和保持依賴集來衡量。價,分別用無損分解和保持依賴集來衡量。u分離性是指在關(guān)系中只存儲有直接聯(lián)系的屬性值,而不要把有分離性是指在關(guān)系中只存儲有直接聯(lián)系的屬性值,而不要把有間接聯(lián)系的屬性值放在不同的表中。實際上間接聯(lián)系的屬性值放在不同的表中。實際上“分離分離”就是清除就是清除冗余和異常現(xiàn)象。分離的基準是一系列范式。在分解成冗余和異?,F(xiàn)象。分離的基準是一系列范式。在分解成BCNFBCNF模模式集時,分離與依賴等價有時是不兼容的。式集時,分離與依賴等價有時是不兼容的。u最小冗余性要求分解后的模式個數(shù)和模式中屬性總數(shù)應(yīng)最少。最小冗余性要求分解后的模式個

57、數(shù)和模式中屬性總數(shù)應(yīng)最少。目的是節(jié)省存儲空間,提高操作效率,消除不必要的冗余。但目的是節(jié)省存儲空間,提高操作效率,消除不必要的冗余。但要注意,實際使用時并不一定要達到最小冗余。因為有時帶點要注意,實際使用時并不一定要達到最小冗余。因為有時帶點冗余對提高查詢速度是有好處的。尤其對于那些更新頻度不高,冗余對提高查詢速度是有好處的。尤其對于那些更新頻度不高,查詢頻度極高的數(shù)據(jù)庫系統(tǒng)更是如此。查詢頻度極高的數(shù)據(jù)庫系統(tǒng)更是如此。第49頁/共61頁 第50頁/共61頁Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計問題關(guān)系模式設(shè)計問題1 1Click to ad

58、d TitleClick to add Title2 2 函數(shù)依賴函數(shù)依賴2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 規(guī)范化規(guī)范化4 4Click to add TitleClick to add Title1 1 * *多值依賴多值依賴5 5Click to add TitleClick to add Title2 2 * *連接依賴連接依賴6 6第51頁/共61頁 n多值依賴例子多值依賴例子u就診關(guān)系模式就診關(guān)系模式R R(DnoDno,PnoPn

59、o,PtelPtel)的屬性分別表示醫(yī)生編號、患者編的屬性分別表示醫(yī)生編號、患者編號、患者電話號碼。該模式描述了號、患者電話號碼。該模式描述了患者就診的醫(yī)生和患者的電話號碼患者就診的醫(yī)生和患者的電話號碼兩種獨立的信息。兩種獨立的信息。u在模式在模式R R中,不存在非平凡的函數(shù)中,不存在非平凡的函數(shù)依賴,關(guān)鍵碼由依賴,關(guān)鍵碼由3 3個屬性組成。模個屬性組成。模式式R R已經(jīng)是已經(jīng)是BCNFBCNF,因此模式,因此模式R R不能不能根據(jù)函數(shù)依賴得到進一步的分解。根據(jù)函數(shù)依賴得到進一步的分解。u但是模式但是模式R R的關(guān)系中存在著數(shù)據(jù)冗的關(guān)系中存在著數(shù)據(jù)冗余。例如,患者余。例如,患者p p1 1看過

60、兩位醫(yī)生看過兩位醫(yī)生d d1 1和和d d2 2,而患者,而患者p p1 1具有兩個不同的電具有兩個不同的電話號碼話號碼t t1 1和和t t2 2,因此需要在表中存,因此需要在表中存儲儲4 4個元組,即每位患者去看一次個元組,即每位患者去看一次醫(yī)生,系統(tǒng)就需要存儲多個元組醫(yī)生,系統(tǒng)就需要存儲多個元組(元組個數(shù)為該患者的電話號碼個(元組個數(shù)為該患者的電話號碼個數(shù))數(shù))第52頁/共61頁 n多值依賴例子多值依賴例子u就診關(guān)系模式就診關(guān)系模式R R(DnoDno,PnoPno,PtelPtel)的屬性分別表示醫(yī)生編號、)的屬性分別表示醫(yī)生編號、患者編號、患者電話號碼。該模式描述了患者就診的醫(yī)生和患

溫馨提示

  • 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

提交評論