




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計(jì)問題關(guān)系模式設(shè)計(jì)問題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)造一個(gè)合適的數(shù)據(jù)模式?如何構(gòu)造一個(gè)合適的數(shù)據(jù)模式?u應(yīng)該構(gòu)造幾個(gè)關(guān)系模式?應(yīng)該構(gòu)造幾個(gè)關(guān)系模式?u每個(gè)關(guān)系應(yīng)該由哪些屬性組成?每個(gè)關(guān)系應(yīng)該由哪些屬性組成?n思考:教務(wù)管理數(shù)據(jù)庫(kù)模式?思考:教務(wù)管理數(shù)據(jù)庫(kù)模式?n數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的工具數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的工具u關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化理論關(guān)系數(shù)據(jù)庫(kù)的規(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)系模式的簡(jiǎn)化三元組表示:關(guān)系模式的簡(jiǎn)化三元組表示: R R(U, FU, F)n什么是數(shù)據(jù)依賴?什么是數(shù)據(jù)依賴?u是現(xiàn)實(shí)世界屬性間相互聯(lián)系的抽象是現(xiàn)實(shí)世界屬性間相互聯(lián)系的抽象u是數(shù)據(jù)內(nèi)在的性質(zhì)是數(shù)據(jù)內(nèi)在的性質(zhì)u是語義的體現(xiàn)是語義的體現(xiàn)第3頁/共61頁 n關(guān)系模式實(shí)例關(guān)系模式實(shí)例u設(shè)有一個(gè)醫(yī)生與患者之間的就診關(guān)系模式設(shè)有一個(gè)醫(yī)生與患者之間的就診關(guān)系模式R R(DnameDname,DlevelDlevel,DsalDsal,PnamePname,F(xiàn)sum
4、Fsum),其屬性分別表示醫(yī)生姓),其屬性分別表示醫(yī)生姓名、醫(yī)生職稱級(jí)別、醫(yī)生工資、患者姓名、診治費(fèi)用。名、醫(yī)生職稱級(jí)別、醫(yī)生工資、患者姓名、診治費(fèi)用。nR R上的語義:上的語義:u假設(shè)醫(yī)生和患者的姓名分別都是唯一的。假設(shè)醫(yī)生和患者的姓名分別都是唯一的。u醫(yī)生與患者之間是多對(duì)多的關(guān)系,即醫(yī)生可以為不同的患者醫(yī)生與患者之間是多對(duì)多的關(guān)系,即醫(yī)生可以為不同的患者看病,同時(shí)患者可以選擇不同的醫(yī)生。假設(shè)同一名患者不看看病,同時(shí)患者可以選擇不同的醫(yī)生。假設(shè)同一名患者不看相同的醫(yī)生,即可以選擇相同的醫(yī)生,即可以選擇DnameDname和和PnamePname作為就診關(guān)系模式作為就診關(guān)系模式R R的主鍵。的
5、主鍵。u一位患者每次就診都有一個(gè)花銷總金額。一位患者每次就診都有一個(gè)花銷總金額。u每位醫(yī)生具有相應(yīng)的職稱級(jí)別。每位醫(yī)生具有相應(yīng)的職稱級(jí)別。u職稱級(jí)別決定了醫(yī)生的工資金額。職稱級(jí)別決定了醫(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個(gè)屬性):個(gè)屬性):u數(shù)據(jù)冗余:浪費(fèi)存儲(chǔ)空間,引起異常。數(shù)據(jù)冗余:浪費(fèi)存儲(chǔ)空間,引起異常。u操作異常:操作異常:l 更新異常(Update Anomalies)。l 刪除異常(Delete Anomalies)。l 插入異常(Insert Anomal
7、ies)。n因此,就診關(guān)系模式因此,就診關(guān)系模式R R不是一個(gè)好的關(guān)系模式。不是一個(gè)好的關(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è)計(jì)問題關(guān)系模式設(shè)計(jì)問題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)實(shí)世界屬性間相互聯(lián)系的抽象是現(xiàn)實(shí)世界屬性間相互聯(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,簡(jiǎn)記為,簡(jiǎn)記為FDFD)u多值依賴(多值依賴(Multivalued DependencyMultivalued Dependency,簡(jiǎn)記為,簡(jiǎn)記為MVDMVD)第9頁/共61頁 n函數(shù)依賴是指一個(gè)關(guān)系表中屬性(列)之間的聯(lián)系。函數(shù)依賴是指一個(gè)關(guān)系表中屬性(列)之間的聯(lián)系。n函數(shù)依賴關(guān)注一個(gè)屬性或?qū)傩约c另外一個(gè)屬
11、性或?qū)俸瘮?shù)依賴關(guān)注一個(gè)屬性或?qū)傩约c另外一個(gè)屬性或?qū)傩约g的依賴,亦即兩個(gè)屬性或?qū)傩约g的約束。性集之間的依賴,亦即兩個(gè)屬性或?qū)傩约g的約束。n函數(shù)依賴是關(guān)系中屬性之間在語義上的關(guān)聯(lián)特性。函數(shù)依賴是關(guān)系中屬性之間在語義上的關(guān)聯(lián)特性。n數(shù)據(jù)庫(kù)設(shè)計(jì)者根據(jù)對(duì)關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)者根據(jù)對(duì)關(guān)系R R中的屬性的語義理解確定中的屬性的語義理解確定函數(shù)依賴,確定約束函數(shù)依賴,確定約束R R的所有元組的所有元組r r的函數(shù)依賴集,并的函數(shù)依賴集,并獲知屬性間的語義關(guān)聯(lián)。獲知屬性間的語義關(guān)聯(lián)。第10頁/共61頁 n符號(hào)說明:符號(hào)說明:uR R表示一個(gè)關(guān)系的模式;表示一個(gè)關(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最簡(jiǎn)單的情況,單個(gè)屬性是碼。最極端的情況,整最簡(jiǎn)單的情況,單個(gè)屬性是碼。最極端的情況,整個(gè)屬性組是碼,稱為全碼(個(gè)屬性組是碼,稱為全碼(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è)一個(gè)醫(yī)生可以給多個(gè)患者看病,一位患者可以選擇不同的醫(yī)設(shè)一個(gè)醫(yī)生可以給多個(gè)患者看病,一位患者可以選擇不同的醫(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主碼與外碼提供了一個(gè)表示關(guān)系之間聯(lián)系的手段。主碼與外碼提供了一個(gè)表示關(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è)計(jì)問題關(guān)系模式設(shè)計(jì)問題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ù)依賴可以引起的更新異常問題,同樣,多值依賴和連接依賴也會(huì)引起類似的問題。解決這些問依賴和連接依賴也會(huì)引起類
19、似的問題。解決這些問題的途徑就是按照題的途徑就是按照“一事一地一事一地”的原則,對(duì)關(guān)系模的原則,對(duì)關(guān)系模式進(jìn)行分解,使之表達(dá)的語義概念單純化。式進(jìn)行分解,使之表達(dá)的語義概念單純化。n關(guān)系模式關(guān)系模式R R的分解就是用兩個(gè)或兩個(gè)以上關(guān)系來替換的分解就是用兩個(gè)或兩個(gè)以上關(guān)系來替換R R,分解后的關(guān)系模式的屬性集都是,分解后的關(guān)系模式的屬性集都是R R中屬性的子集,中屬性的子集,其并集與其并集與R R的屬性集相同。的屬性集相同。n模式分解幫助消除不良設(shè)計(jì)中的一些問題,如冗余、模式分解幫助消除不良設(shè)計(jì)中的一些問題,如冗余、不一致或異常。不一致或異常。第21頁/共61頁 n模式分解的定義模式分解的定義n
20、模式分解的問題模式分解的問題第22頁/共61頁 n一個(gè)關(guān)系表被分解成兩個(gè)或兩個(gè)以上的小表,通過一個(gè)關(guān)系表被分解成兩個(gè)或兩個(gè)以上的小表,通過連接被分解后的小表可以獲得原始表的內(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無損中的損是指信息丟失。如果一個(gè)分解不是無損分解,無損中的損是指信息丟失。如果一個(gè)分解不是無損分解, 則所則所得結(jié)果的元組數(shù)總比原來的多(增加了噪聲,但把原來的信息得結(jié)果的元組數(shù)總比原來的多(增加了噪聲,但把原來的信息丟失了)。所謂丟失了)。所謂“有損有損”就損在出現(xiàn)多余的元組上。就損在出現(xiàn)多余的元組上。第24頁/共61頁 n無損分解測(cè)試算法無損分解測(cè)試算法追逐法(追逐法(ChaseChase)第25頁/共61頁 nChaseChase是一個(gè)普遍的算法,無論一個(gè)關(guān)系模式分解為是一個(gè)普遍的算法,無論一個(gè)關(guān)系模式分解為多少個(gè)關(guān)系模式,都可以用此算法進(jìn)行檢驗(yàn)。多少個(gè)關(guān)系模式,都可以用此算法
22、進(jìn)行檢驗(yàn)。n如果一個(gè)關(guān)系模式一分為二,可以簡(jiǎn)化檢驗(yàn)。如果一個(gè)關(guān)系模式一分為二,可以簡(jiǎn)化檢驗(yàn)。n例如例如第26頁/共61頁 n所有的模式分解必須是無損的。所有的模式分解必須是無損的。n無損連接分解總是關(guān)于特定函數(shù)依賴集無損連接分解總是關(guān)于特定函數(shù)依賴集F F定義的。定義的。n模式分解能消除數(shù)據(jù)冗余和操作異?,F(xiàn)象。模式分解能消除數(shù)據(jù)冗余和操作異常現(xiàn)象。n但是分解以后,檢索操作需要做笛卡爾積或連接操但是分解以后,檢索操作需要做笛卡爾積或連接操作,這將付出時(shí)間代價(jià)。作,這將付出時(shí)間代價(jià)。n一般認(rèn)為,為了消除冗余和異?,F(xiàn)象,對(duì)模式進(jìn)行一般認(rèn)為,為了消除冗余和異?,F(xiàn)象,對(duì)模式進(jìn)行分解是值得的。分解是值得的
23、。第27頁/共61頁 n模式分解的另一個(gè)特性是分解的過程中能否保持函模式分解的另一個(gè)特性是分解的過程中能否保持函數(shù)依賴集,如果不能保持函數(shù)依賴,那么數(shù)據(jù)的語數(shù)依賴集,如果不能保持函數(shù)依賴,那么數(shù)據(jù)的語義就會(huì)出現(xiàn)混亂。義就會(huì)出現(xiàn)混亂。n模式分解要保持函數(shù)依賴,因?yàn)楹瘮?shù)依賴集模式分解要保持函數(shù)依賴,因?yàn)楹瘮?shù)依賴集F F中的每中的每一個(gè)函數(shù)依賴都代表數(shù)據(jù)庫(kù)的一個(gè)約束。一個(gè)函數(shù)依賴都代表數(shù)據(jù)庫(kù)的一個(gè)約束。n如果某個(gè)分解能保持函數(shù)依賴集,那么在數(shù)據(jù)輸入如果某個(gè)分解能保持函數(shù)依賴集,那么在數(shù)據(jù)輸入或更新時(shí),只要每個(gè)關(guān)系模式本身的函數(shù)依賴約束或更新時(shí),只要每個(gè)關(guān)系模式本身的函數(shù)依賴約束被滿足,就可以確保整個(gè)
24、數(shù)據(jù)庫(kù)中的語義完整性不被滿足,就可以確保整個(gè)數(shù)據(jù)庫(kù)中的語義完整性不被破壞。顯然這是一種良好的特性。被破壞。顯然這是一種良好的特性。第28頁/共61頁 n定義定義n舉例:舉例:u設(shè)醫(yī)生關(guān)系模式設(shè)醫(yī)生關(guān)系模式R R(DnoDno,DlevelDlevel,DsalDsal)。假設(shè)每個(gè)醫(yī)生只有)。假設(shè)每個(gè)醫(yī)生只有一個(gè)職稱級(jí)別,每個(gè)職稱級(jí)別只有一個(gè)工資數(shù)目。那么一個(gè)職稱級(jí)別,每個(gè)職稱級(jí)別只有一個(gè)工資數(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),可以,可以驗(yàn)證這個(gè)分解是無損分解。驗(yàn)證這個(gè)分解是無損分解。uR R1 1上的函數(shù)依賴是上的函數(shù)依賴是F F1 1=Dno=DnoDlevelDlevel,R R2 2上的函數(shù)依賴是上的函數(shù)依賴是F F2 2=Dno=DnoDsalDsal。但是從這兩個(gè)函數(shù)依賴推導(dǎo)不出在。但是從這兩個(gè)函數(shù)依賴推導(dǎo)不出在R R上成立的上成立的函數(shù)依賴函數(shù)依賴D DlevellevelDsalDsal。因此分解。因此分解把函數(shù)依賴把函數(shù)依賴D DlevellevelDsalDsal丟失了,即丟失了,即不保持不保持F F。第29頁/共61頁 n關(guān)
26、系模式分解的兩個(gè)特性實(shí)際上涉及兩個(gè)數(shù)據(jù)庫(kù)模式的關(guān)系模式分解的兩個(gè)特性實(shí)際上涉及兩個(gè)數(shù)據(jù)庫(kù)模式的等價(jià)問題,這種等價(jià)包括等價(jià)問題,這種等價(jià)包括數(shù)據(jù)等價(jià)數(shù)據(jù)等價(jià)和和依賴等價(jià)依賴等價(jià)兩個(gè)方面。兩個(gè)方面。n數(shù)據(jù)等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)實(shí)例應(yīng)表示同樣的信息內(nèi)容,數(shù)據(jù)等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)實(shí)例應(yīng)表示同樣的信息內(nèi)容,用用“無損分解無損分解”衡量。如果是無損分解,那么對(duì)關(guān)系反衡量。如果是無損分解,那么對(duì)關(guān)系反復(fù)的投影和連接都不會(huì)丟失信息。復(fù)的投影和連接都不會(huì)丟失信息。n依賴等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)模式應(yīng)有相同的依賴集閉包。依賴等價(jià)是指兩個(gè)數(shù)據(jù)庫(kù)模式應(yīng)有相同的依賴集閉包。在依賴集閉包相等情況下,數(shù)據(jù)的語義是不會(huì)出錯(cuò)的。在依賴集閉
27、包相等情況下,數(shù)據(jù)的語義是不會(huì)出錯(cuò)的。n違反數(shù)據(jù)等價(jià)或依賴等價(jià)的分解很難說是一個(gè)很好的設(shè)違反數(shù)據(jù)等價(jià)或依賴等價(jià)的分解很難說是一個(gè)很好的設(shè)計(jì)模式。計(jì)模式。n但是要同時(shí)達(dá)到無損分解和保持函數(shù)依賴的分解也不是但是要同時(shí)達(dá)到無損分解和保持函數(shù)依賴的分解也不是一件容易的事情,需要認(rèn)真對(duì)待。一件容易的事情,需要認(rèn)真對(duì)待。第30頁/共61頁Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計(jì)問題關(guān)系模式設(shè)計(jì)問題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)系模式好壞的標(biāo)準(zhǔn)。是衡量關(guān)系模式好壞的標(biāo)準(zhǔn)。n范式的種類(范式的種類( 1NF 1NF,2N
29、F2NF,3NF3NF,BCNF BCNF )與數(shù)據(jù)依賴)與數(shù)據(jù)依賴有著直接的聯(lián)系。在關(guān)系模式中存在函數(shù)依賴時(shí)就有有著直接的聯(lián)系。在關(guān)系模式中存在函數(shù)依賴時(shí)就有可能存在數(shù)據(jù)冗余,引出數(shù)據(jù)操作異?,F(xiàn)象。可能存在數(shù)據(jù)冗余,引出數(shù)據(jù)操作異常現(xiàn)象。n例如:就診關(guān)系模式例如:就診關(guān)系模式R R(DnameDname,DlevelDlevel,DsalDsal,PnamePname,F(xiàn)sumFsum)不是一個(gè)好的設(shè)計(jì),因?yàn)榇嬖谌哂嘈牛┎皇且粋€(gè)好的設(shè)計(jì),因?yàn)榇嬖谌哂嘈畔ⅲㄖ貜?fù)存儲(chǔ)的職稱和工資)。數(shù)據(jù)冗余不僅浪費(fèi)存息(重復(fù)存儲(chǔ)的職稱和工資)。數(shù)據(jù)冗余不僅浪費(fèi)存儲(chǔ)空間,而且會(huì)使數(shù)據(jù)庫(kù)難以保持?jǐn)?shù)據(jù)的一致性。儲(chǔ)空間
30、,而且會(huì)使數(shù)據(jù)庫(kù)難以保持?jǐn)?shù)據(jù)的一致性。n范式可以用于確保數(shù)據(jù)庫(kù)模式中沒有各種類型的異常范式可以用于確保數(shù)據(jù)庫(kù)模式中沒有各種類型的異常和不一致性。為了確定一個(gè)特定關(guān)系是否符合范式要和不一致性。為了確定一個(gè)特定關(guān)系是否符合范式要求,需要求,需要檢查關(guān)系中屬性間的函數(shù)依賴檢查關(guān)系中屬性間的函數(shù)依賴,而不是檢查而不是檢查關(guān)系中的當(dāng)前實(shí)例關(guān)系中的當(dāng)前實(shí)例。第32頁/共61頁 n一個(gè)規(guī)范化的模式有最小的數(shù)據(jù)冗余,它要求除了與一個(gè)規(guī)范化的模式有最小的數(shù)據(jù)冗余,它要求除了與元組進(jìn)行連接的元組進(jìn)行連接的外鍵外鍵(在另一個(gè)關(guān)系中是主鍵的屬性(在另一個(gè)關(guān)系中是主鍵的屬性組)之外,數(shù)據(jù)庫(kù)實(shí)例中的其他屬性的值都不能被復(fù)
31、組)之外,數(shù)據(jù)庫(kù)實(shí)例中的其他屬性的值都不能被復(fù)制。制。n規(guī)范化主要作為驗(yàn)證和改進(jìn)邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)的工具,規(guī)范化主要作為驗(yàn)證和改進(jìn)邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)的工具,使得邏輯設(shè)計(jì)能夠使得邏輯設(shè)計(jì)能夠滿足特定約束滿足特定約束并并避免不必要的數(shù)據(jù)避免不必要的數(shù)據(jù)重復(fù)重復(fù)。第33頁/共61頁 n定義:在關(guān)系模式定義:在關(guān)系模式R R的每個(gè)關(guān)系的每個(gè)關(guān)系r r中,如果每個(gè)屬中,如果每個(gè)屬性值都是不可再分的原子值,那么稱性值都是不可再分的原子值,那么稱R R是第一范是第一范式(式(1NF1NF)的模式。)的模式。n1NF1NF不允許每個(gè)元組的每個(gè)屬性對(duì)應(yīng)一組值、一不允許每個(gè)元組的每個(gè)屬性對(duì)應(yīng)一組值、一行值或兩個(gè)值的組合。
32、簡(jiǎn)單地說,行值或兩個(gè)值的組合。簡(jiǎn)單地說,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ù)庫(kù)研究的關(guān)系都是規(guī)范化的關(guān)系。關(guān)系。關(guān)系數(shù)據(jù)庫(kù)研究的關(guān)系都是規(guī)范化的關(guān)系。第34頁/共61頁 n例如,就診關(guān)系模式例如,就診關(guān)系模式R R(DnoDno,PnoPno,DlevelDlevel,DsalDsal,F(xiàn)sum)Fsum)中每個(gè)屬性都不可再分,因此中每個(gè)屬性都不可再分,因此R R滿
33、足滿足1NF1NF。n但在醫(yī)生關(guān)系模式但在醫(yī)生關(guān)系模式D D(DnoDno,DnameDname,DresumeDresume)中,如果中,如果DresumeDresume包括工作單位和工作時(shí)間兩列包括工作單位和工作時(shí)間兩列信息,在某個(gè)醫(yī)生可能曾經(jīng)工作過多個(gè)單位而出信息,在某個(gè)醫(yī)生可能曾經(jīng)工作過多個(gè)單位而出現(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ù)依賴,那么它就不是一個(gè)好的關(guān)系模式,因?yàn)樗芸赡艹霈F(xiàn)數(shù)據(jù)冗是一個(gè)好的關(guān)系模式,因?yàn)樗芸赡艹霈F(xiàn)數(shù)據(jù)冗余和操作異?,F(xiàn)象。因此,需要對(duì)這樣的關(guān)系模余和操作異?,F(xiàn)象。因此,需要對(duì)這樣的關(guān)系模式進(jìn)行分解,以排除局部函數(shù)依賴,使模式達(dá)到式進(jìn)行分解,以排除局部函數(shù)依賴,使模式達(dá)到2NF2NF的標(biāo)準(zhǔn)。的標(biāo)準(zhǔn)。n2NF2NF定義:定義: 如果關(guān)系模式如果關(guān)系模式R R1NF1NF,且每個(gè),且每個(gè)非主屬非主屬性性(不是組成候選碼的屬性)(不是組成候選碼的屬性)完全函數(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ī)生編號(hào)、患者編號(hào)、醫(yī)生職稱級(jí)別、醫(yī)生工資和分別表示醫(yī)生編號(hào)、患者編號(hào)、醫(yī)生職稱級(jí)別、醫(yī)生工資和診療費(fèi)用。(診療費(fèi)用。(DnoDno,PnoPno)是)是R R的候選碼。的候
36、選碼。u如果如果R R上有兩個(gè)上有兩個(gè)FDFD:(:(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)和)和DnoDno(DlevelDlevel,DsalDsal),因此前面一個(gè)),因此前面一個(gè)FDFD是局部依賴,所是局部依賴,所以以R R不是不是2NF2NF。此時(shí)。此時(shí)R R會(huì)出現(xiàn)冗余和異常。例如,某個(gè)醫(yī)生為會(huì)出現(xiàn)冗余和異常。例如,某個(gè)醫(yī)生為N N個(gè)病人看病,則在關(guān)系中會(huì)出現(xiàn)個(gè)病人看病,則在關(guān)系中會(huì)出現(xiàn)N N個(gè)元組,而醫(yī)生的職稱級(jí)個(gè)元組,而醫(yī)生的職稱級(jí)別和工資就會(huì)重復(fù)別和工資就會(huì)重復(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就是一個(gè)局部依賴。此時(shí)就是一個(gè)局部依賴。此時(shí)應(yīng)該把應(yīng)該把R R分解成兩個(gè)模式:分解成兩個(gè)模式: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ù)庫(kù)模式,則重復(fù)上述過程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是中每一個(gè)關(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,且每個(gè),且每個(gè)非主屬性非主屬性都都不傳遞依賴不傳遞依賴于于R R的候選碼,那么稱
40、的候選碼,那么稱R R屬于屬于3NF3NF的模式。的模式。n在在3NF3NF中,關(guān)系模式是由主鍵和一組相互獨(dú)立的非中,關(guān)系模式是由主鍵和一組相互獨(dú)立的非主屬性組成的,它滿足兩個(gè)條件:主屬性組成的,它滿足兩個(gè)條件:u(1 1)R R中的非主屬性相互獨(dú)立;中的非主屬性相互獨(dú)立;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。因?yàn)槿绻驗(yàn)槿绻鸕 R1 1中存在函數(shù)依賴中存在函數(shù)依賴DnoDnoDlevelDlevel和和DlevelDlevelDsalDsal,那么那么DnoDnoDsalDsal就是一個(gè)傳遞依賴,即就是一個(gè)傳遞依賴,即R R1 1不是不是3NF3NF模式。模式。u此時(shí)此時(shí)R R1 1的關(guān)系也會(huì)出現(xiàn)冗余和異常。例如,的關(guān)系也會(huì)出現(xiàn)冗余和異常。例如,R R2 2中存在中存在M M個(gè)職稱個(gè)職稱同為主任級(jí)別的醫(yī)生,則同為主任級(jí)別的醫(yī)生,則R R1 1中需要重復(fù)存儲(chǔ)中需要重復(fù)存儲(chǔ)M M個(gè)相同的工資數(shù)個(gè)相同的工資數(shù)目。目。u如果將如果將R
42、 R1 1分解為分解為R R1111(DnoDno,DlevelDlevel)和)和R R1212(DlevelDlevel,DsalDsal)后,后,DnoDnoDsalDsal就不會(huì)出現(xiàn)在就不會(huì)出現(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ù)冗余和異常的兩個(gè)重要原因。異常
43、的兩個(gè)重要原因。n由于由于3NF3NF模式中不存在非主屬性對(duì)候選鍵的局部依模式中不存在非主屬性對(duì)候選鍵的局部依賴和傳遞依賴,因此賴和傳遞依賴,因此3NF3NF消除了很大一部分存儲(chǔ)異消除了很大一部分存儲(chǔ)異常,具有較好的性能。常,具有較好的性能。n而對(duì)于非而對(duì)于非1NF1NF、1NF1NF和和2NF2NF的關(guān)系模式,由于它們的的關(guān)系模式,由于它們的性能較差,通常不宜作為數(shù)據(jù)庫(kù)模式,需要將這性能較差,通常不宜作為數(shù)據(jù)庫(kù)模式,需要將這些關(guān)系模式變換為些關(guān)系模式變換為3NF3NF或更高級(jí)的范式。這種變換或更高級(jí)的范式。這種變換過程稱為過程稱為“關(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就是一個(gè)傳遞依就是一個(gè)傳遞依賴。此時(shí)應(yīng)把賴。此時(shí)應(yīng)把R R分解成兩個(gè)模式:分解成兩個(gè)模式:u R R1 1(XZXZ),主鍵是),主鍵是X X;u R R2 2(U -Z U -Z ),主鍵仍是),主鍵仍是W W,外鍵是,外鍵是X X(參考(參考R R1 1)。)。u利用外鍵和主鍵相匹配機(jī)制,利
45、用外鍵和主鍵相匹配機(jī)制,R R1 1和和R R2 2通過連接可以重新得到通過連接可以重新得到R R。u如果如果R R1 1和和R R2 2還不是還不是3NF3NF,則重復(fù)上述過程,一直到數(shù)據(jù)庫(kù)模式,則重復(fù)上述過程,一直到數(shù)據(jù)庫(kù)模式中每一個(gè)關(guān)系模式都是中每一個(gè)關(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模式中,并未排除主屬性對(duì)候選鍵的傳遞依模式中,并未排除主屬性對(duì)候選鍵的傳遞依賴,因此有必要提出更高一級(jí)的范式。賴,因此有必要提出更高一級(jí)的范式。nBCBC范式(范式(Boyce-Codd Normal FormBoyce-Codd Normal Form,BCNFBCNF),由),由BoyceBoyce與與CoddCodd提出的,比上述的提出的,比上述的3NF3NF又進(jìn)了一步,又進(jìn)了一步,通常認(rèn)為通常認(rèn)為BCNFBCNF是修正的第三范式,有時(shí)也稱為擴(kuò)是修正的第三范式,有
47、時(shí)也稱為擴(kuò)充的第三范式。充的第三范式。nBCBCNFNF定義:如果關(guān)系模式定義:如果關(guān)系模式R R1NF1NF,且每個(gè)屬性都,且每個(gè)屬性都不傳遞依賴于不傳遞依賴于R R的候選碼,那么稱的候選碼,那么稱R R是是BCNFBCNF的模式。的模式。第43頁/共61頁 n由由BCNFBCNF的定義可以得到以下結(jié)論,一個(gè)滿足的定義可以得到以下結(jié)論,一個(gè)滿足BCNFBCNF的關(guān)系模式有:的關(guān)系模式有:u所有非主屬性對(duì)每一個(gè)碼都是完全函數(shù)依賴。所有非主屬性對(duì)每一個(gè)碼都是完全函數(shù)依賴。u所有的主屬性對(duì)每一個(gè)不包含它的碼,也是完全函數(shù)依賴。所有的主屬性對(duì)每一個(gè)不包含它的碼,也是完全函數(shù)依賴。u沒有任何屬性完全函
48、數(shù)依賴于非碼的任何一組屬性。沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。第44頁/共61頁 n舉例舉例u關(guān)系模式關(guān)系模式R R(BnoBno,BnameBname,AuthorAuthor)的屬性分別表示書號(hào)、)的屬性分別表示書號(hào)、書名和作者名。假如每個(gè)書號(hào)只有一個(gè)書名,但不同的書號(hào)書名和作者名。假如每個(gè)書號(hào)只有一個(gè)書名,但不同的書號(hào)可以有相同的書名;每本書可以有多個(gè)作者合寫,但每個(gè)作可以有相同的書名;每本書可以有多個(gè)作者合寫,但每個(gè)作者參與編著的書名應(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ù)兩個(gè)但根據(jù)兩個(gè)FDFD可知,屬性可知,屬性BnameBname傳遞依賴于關(guān)鍵碼(傳遞依賴于關(guān)鍵碼(BnameBname,AuthorAuthor),因此),因此R R不是不是BCNFBCNF。u例如,一本書由多個(gè)作者編寫時(shí),其書名與書號(hào)之間的聯(lián)系例如,一本書由多個(gè)作者編寫時(shí),其書名與書號(hào)之間的聯(lián)系在關(guān)系中將多次出現(xiàn),
50、會(huì)導(dǎo)致數(shù)據(jù)冗余和操作異常。在關(guān)系中將多次出現(xiàn),會(huì)導(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但這樣分解可能會(huì)導(dǎo)致新的問題,例如,這個(gè)分解把(但這樣分解可能會(huì)導(dǎo)致新的問題,例如,這個(gè)分解把(BnameBname,AuthorAuthor)BnoBno丟失了,數(shù)據(jù)語義將會(huì)引起新的矛盾。丟失了,數(shù)據(jù)語義將會(huì)引起新的矛盾。第45頁/共61頁 nBCNFBCNF分解算法:將分解算
51、法:將R R無損分解且保持依賴地分解成無損分解且保持依賴地分解成3NF3NF模式集。模式集。u 對(duì)于關(guān)系模式對(duì)于關(guān)系模式R R和和R R上成立的上成立的FDFD集集F F,先求出,先求出F F的最小依賴集,的最小依賴集,然后再把最小依賴集中那些左部相同的然后再把最小依賴集中那些左部相同的FDFD用合并性合并起來。用合并性合并起來。u 對(duì)最小依賴集中每個(gè)對(duì)最小依賴集中每個(gè)FD FD X XY Y去構(gòu)成一個(gè)模式去構(gòu)成一個(gè)模式( (XY)XY)。u 在構(gòu)成的模式集中,如果每個(gè)模式都不包含在構(gòu)成的模式集中,如果每個(gè)模式都不包含R R的候選碼,的候選碼,那么把候選碼作為一個(gè)模式放入模式集中。那么把候選碼
52、作為一個(gè)模式放入模式集中。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是一個(gè)是一個(gè)3NF3NF模模式集,式集,R R相對(duì)于該依賴集是無損分解且保持函數(shù)依賴。相對(duì)于該依賴集是無損分解且保持函數(shù)依賴。第46頁/共61頁 n定理:如果定理
53、:如果R R是是BCNFBCNF模式,那么模式,那么R R也是也是3NF3NF模式。模式。n但是,若但是,若R R3NF3NF,則,則R R未必屬于未必屬于BCNFBCNF。n3NF3NF和和BCNFBCNF是在函數(shù)依賴的條件下對(duì)模式分解所能是在函數(shù)依賴的條件下對(duì)模式分解所能達(dá)到的分離程度的測(cè)度。達(dá)到的分離程度的測(cè)度。n一個(gè)數(shù)據(jù)庫(kù)模式中的關(guān)系模式如果都屬于一個(gè)數(shù)據(jù)庫(kù)模式中的關(guān)系模式如果都屬于BCNFBCNF,那,那么在函數(shù)依賴范疇內(nèi),它已實(shí)現(xiàn)了徹底的分離,已么在函數(shù)依賴范疇內(nèi),它已實(shí)現(xiàn)了徹底的分離,已消除了插入和刪除的異常。消除了插入和刪除的異常。n3NF3NF的的“不徹底性不徹底性”表現(xiàn)在可
54、能存在主屬性對(duì)碼的表現(xiàn)在可能存在主屬性對(duì)碼的部分依賴和傳遞依賴。部分依賴和傳遞依賴。第47頁/共61頁 n滿足范式要求的數(shù)據(jù)庫(kù)設(shè)計(jì)是結(jié)構(gòu)清晰的,同時(shí)可滿足范式要求的數(shù)據(jù)庫(kù)設(shè)計(jì)是結(jié)構(gòu)清晰的,同時(shí)可避免數(shù)據(jù)冗余和操作異常。這并意味著不符合范式避免數(shù)據(jù)冗余和操作異常。這并意味著不符合范式要求的設(shè)計(jì)一定是錯(cuò)誤的。要求的設(shè)計(jì)一定是錯(cuò)誤的。n關(guān)系模式分解一般應(yīng)具有關(guān)系模式分解一般應(yīng)具有3 3個(gè)特性:個(gè)特性:u達(dá)到達(dá)到BCNFBCNF,或,或3NF3NF;u無損分解;無損分解;u保持函數(shù)依賴。保持函數(shù)依賴。n數(shù)據(jù)庫(kù)設(shè)計(jì)者在設(shè)計(jì)和關(guān)系數(shù)據(jù)庫(kù)時(shí),應(yīng)做權(quán)衡,數(shù)據(jù)庫(kù)設(shè)計(jì)者在設(shè)計(jì)和關(guān)系數(shù)據(jù)庫(kù)時(shí),應(yīng)做權(quán)衡,盡可能使數(shù)據(jù)
55、庫(kù)模式保持最好的特性。一般盡可能盡可能使數(shù)據(jù)庫(kù)模式保持最好的特性。一般盡可能設(shè)計(jì)成設(shè)計(jì)成BCNFBCNF模式集。如果設(shè)計(jì)成模式集。如果設(shè)計(jì)成BCNFBCNF模式時(shí)達(dá)不到模式時(shí)達(dá)不到保持函數(shù)依賴的特點(diǎn),那么只能降低要求,設(shè)計(jì)成保持函數(shù)依賴的特點(diǎn),那么只能降低要求,設(shè)計(jì)成3NF3NF模式集,以求達(dá)到保持函數(shù)依賴和無損分解的模式集,以求達(dá)到保持函數(shù)依賴和無損分解的特點(diǎn)。特點(diǎn)。第48頁/共61頁 n一個(gè)好的模式設(shè)計(jì)方法應(yīng)符合一個(gè)好的模式設(shè)計(jì)方法應(yīng)符合3 3條原則:表達(dá)性、條原則:表達(dá)性、分離性和最小冗余性。分離性和最小冗余性。u表達(dá)性涉及兩個(gè)數(shù)據(jù)庫(kù)模式的等價(jià)問題,即數(shù)據(jù)等價(jià)和語義等表達(dá)性涉及兩個(gè)數(shù)據(jù)庫(kù)
56、模式的等價(jià)問題,即數(shù)據(jù)等價(jià)和語義等價(jià),分別用無損分解和保持依賴集來衡量。價(jià),分別用無損分解和保持依賴集來衡量。u分離性是指在關(guān)系中只存儲(chǔ)有直接聯(lián)系的屬性值,而不要把有分離性是指在關(guān)系中只存儲(chǔ)有直接聯(lián)系的屬性值,而不要把有間接聯(lián)系的屬性值放在不同的表中。實(shí)際上間接聯(lián)系的屬性值放在不同的表中。實(shí)際上“分離分離”就是清除就是清除冗余和異常現(xiàn)象。分離的基準(zhǔn)是一系列范式。在分解成冗余和異?,F(xiàn)象。分離的基準(zhǔn)是一系列范式。在分解成BCNFBCNF模模式集時(shí),分離與依賴等價(jià)有時(shí)是不兼容的。式集時(shí),分離與依賴等價(jià)有時(shí)是不兼容的。u最小冗余性要求分解后的模式個(gè)數(shù)和模式中屬性總數(shù)應(yīng)最少。最小冗余性要求分解后的模式個(gè)
57、數(shù)和模式中屬性總數(shù)應(yīng)最少。目的是節(jié)省存儲(chǔ)空間,提高操作效率,消除不必要的冗余。但目的是節(jié)省存儲(chǔ)空間,提高操作效率,消除不必要的冗余。但要注意,實(shí)際使用時(shí)并不一定要達(dá)到最小冗余。因?yàn)橛袝r(shí)帶點(diǎn)要注意,實(shí)際使用時(shí)并不一定要達(dá)到最小冗余。因?yàn)橛袝r(shí)帶點(diǎn)冗余對(duì)提高查詢速度是有好處的。尤其對(duì)于那些更新頻度不高,冗余對(duì)提高查詢速度是有好處的。尤其對(duì)于那些更新頻度不高,查詢頻度極高的數(shù)據(jù)庫(kù)系統(tǒng)更是如此。查詢頻度極高的數(shù)據(jù)庫(kù)系統(tǒng)更是如此。第49頁/共61頁 第50頁/共61頁Click to add TitleClick to add Title1 1 關(guān)系模式設(shè)計(jì)問題關(guān)系模式設(shè)計(jì)問題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多值依賴?yán)佣嘀狄蕾嚴(yán)觰就診關(guān)系模式就診關(guān)系模式R R(DnoDno,PnoPn
59、o,PtelPtel)的屬性分別表示醫(yī)生編號(hào)、患者編的屬性分別表示醫(yī)生編號(hào)、患者編號(hào)、患者電話號(hào)碼。該模式描述了號(hào)、患者電話號(hào)碼。該模式描述了患者就診的醫(yī)生和患者的電話號(hào)碼患者就診的醫(yī)生和患者的電話號(hào)碼兩種獨(dú)立的信息。兩種獨(dú)立的信息。u在模式在模式R R中,不存在非平凡的函數(shù)中,不存在非平凡的函數(shù)依賴,關(guān)鍵碼由依賴,關(guān)鍵碼由3 3個(gè)屬性組成。模個(gè)屬性組成。模式式R R已經(jīng)是已經(jīng)是BCNFBCNF,因此模式,因此模式R R不能不能根據(jù)函數(shù)依賴得到進(jìn)一步的分解。根據(jù)函數(shù)依賴得到進(jìn)一步的分解。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具有兩個(gè)不同的電具有兩個(gè)不同的電話號(hào)碼話號(hào)碼t t1 1和和t t2 2,因此需要在表中存,因此需要在表中存儲(chǔ)儲(chǔ)4 4個(gè)元組,即每位患者去看一次個(gè)元組,即每位患者去看一次醫(yī)生,系統(tǒng)就需要存儲(chǔ)多個(gè)元組醫(yī)生,系統(tǒng)就需要存儲(chǔ)多個(gè)元組(元組個(gè)數(shù)為該患者的電話號(hào)碼個(gè)(元組個(gè)數(shù)為該患者的電話號(hào)碼個(gè)數(shù))數(shù))第52頁/共61頁 n多值依賴?yán)佣嘀狄蕾嚴(yán)觰就診關(guān)系模式就診關(guān)系模式R R(DnoDno,PnoPno,PtelPtel)的屬性分別表示醫(yī)生編號(hào)、)的屬性分別表示醫(yī)生編號(hào)、患者編號(hào)、患者電話號(hào)碼。該模式描述了患者就診的醫(yī)生和患
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建師范大學(xué)協(xié)和學(xué)院《全媒體運(yùn)營(yíng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年山西省高平市重點(diǎn)達(dá)標(biāo)名校初三質(zhì)量監(jiān)測(cè)(四)物理試題含解析
- 崇左幼兒師范高等??茖W(xué)?!顿Y產(chǎn)評(píng)估實(shí)務(wù)與案例分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 天津輕工職業(yè)技術(shù)學(xué)院《中國(guó)經(jīng)典管弦樂曲賞析》2023-2024學(xué)年第二學(xué)期期末試卷
- 100元小學(xué)生早教課件
- 蘇教版七下生物第4單元第十二章第一節(jié) 人體的激素調(diào)節(jié)-教學(xué)設(shè)計(jì)
- 一年級(jí)語文上冊(cè) 漢語拼音 6 j q x教學(xué)設(shè)計(jì) 新人教版
- 五年級(jí)下信息技術(shù)教學(xué)設(shè)計(jì)-保護(hù)動(dòng)物-龍教版
- 上海市金山區(qū)九年級(jí)歷史下冊(cè) 第三單元 兩極下的競(jìng)爭(zhēng) 第10課 冷戰(zhàn)與熱戰(zhàn)教學(xué)設(shè)計(jì) 北師大版
- 專題04 古詩(shī)詞鑒賞-(解析版)
- 徐士良《計(jì)算機(jī)軟件技術(shù)基礎(chǔ)》(第4版)筆記和課后習(xí)題詳解
- 房屋建造過程課件
- 坯布檢驗(yàn)標(biāo)準(zhǔn)及檢驗(yàn)規(guī)范
- 帶壓堵漏、帶壓開孔作業(yè)安全管理制度
- (新教材)教科版二年級(jí)上冊(cè)科學(xué) 1.2 土壤 動(dòng)植物的樂園 教學(xué)課件
- 采用冷卻塔變流量的中央空調(diào)冷卻水系統(tǒng)能效分解
- 航空航天技術(shù)概論
- 籃球比賽記錄表(上下半場(chǎng))
- 畢業(yè)設(shè)計(jì)-太平哨水利樞紐引水式水電站設(shè)計(jì)
- 新云智能化管理系統(tǒng)運(yùn)行管理標(biāo)準(zhǔn)
- 畢業(yè)設(shè)計(jì)(論文)-多功能平板道路清障車設(shè)計(jì)(拖拽車)
評(píng)論
0/150
提交評(píng)論