數(shù)據(jù)庫(kù)關(guān)系模式規(guī)范化
在教學(xué)中,大多實(shí)例都是主鍵由一列構(gòu)成,所以也可以簡(jiǎn)單地說主屬性與主鍵沒有什么區(qū)別。 第三范式的定義:如果關(guān)系模式R中的所有非主屬性對(duì)任何候選關(guān)鍵字都不存在傳遞依賴,則稱關(guān)系R是屬于第三范式的。記作R 3NF。 如:學(xué)生關(guān)系模式S1(學(xué)號(hào),姓名,系號(hào),系名,系地址) (學(xué)號(hào))為關(guān)鍵字,因是單屬性關(guān)鍵字,不存在部份依賴問題,應(yīng)屬于第二范式。但因?yàn)椋簩W(xué)號(hào)—>系號(hào),系號(hào)—\>學(xué)號(hào),系號(hào)—>系地址,因此:學(xué)號(hào)—>系地址 是通過傳遞依賴實(shí)現(xiàn)的。即候選關(guān)鍵字“學(xué)號(hào)”不直接函數(shù)決定于非主屬性“系地址”。所以此關(guān)系不屬于第三范式。應(yīng)將其分解為: SC(學(xué)號(hào),姓名,系號(hào)) D(系號(hào),系名,系地址) C(課程號(hào),課程名,學(xué)分) S(學(xué)號(hào),課程號(hào),成績(jī)) 設(shè)計(jì)原則:“一事一地”,即一個(gè)關(guān)系反映一個(gè)實(shí)體或一個(gè)聯(lián)系,不應(yīng)把幾樣?xùn)|西混合放在一起。基本關(guān)系模式切忌“大而全”,在若干個(gè)基本關(guān)系模式組成的關(guān)系模型上,根據(jù)需要可以通過自然聯(lián)接導(dǎo)出所需要的關(guān)系。 BCNF的定義:如果一個(gè)關(guān)系R中的所有屬性都不傳遞依賴于R的任何候選關(guān)鍵字,或者說關(guān)系R中的每個(gè)決定因數(shù)都是候選關(guān)鍵字時(shí),則稱關(guān)系R屬于BCNF范式,記作R BCNF。 一個(gè)滿足BCNF的關(guān)系模式有 1.所有非主屬性對(duì)每一個(gè)碼都是完全函數(shù)依賴。 2.所有的主屬性對(duì)每一個(gè)不包含它的碼,也是完全函數(shù)依賴。 3.沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性。 由于RBCNF,按定義排除了任何屬性對(duì)碼的傳遞依賴與部分依賴,所以R3NF。但是若R3NF,則R未必屬于BCNF。 下面用幾個(gè)例子說明屬于3NF的關(guān)系模式有的屬于BCNF,但有的不屬于BCNF。 詳細(xì)信息... 例l 關(guān)系模式SJP(S,J,P)中,S是學(xué)生,J表示課程,P表示名次。每一個(gè)學(xué)生選修每門課程的成績(jī)有一定的名次,每門課程中每一名次只有一個(gè)學(xué)生(即沒有并列名次)。由語(yǔ)義可得到下面的函數(shù)依賴: (S,J)→P ,(J,P)→S 所以(S,J)與(J,P)都可以作為候選碼。這兩個(gè)碼各由兩個(gè)屬性組成,而且它們是相交的。這個(gè)關(guān)系模式中顯然沒有屬性對(duì)碼傳遞依賴或部分依賴。所以SJP3NF,而且除(S,J)與(J,P)以外沒有其它決定因素,所以SJPBCNF。 例2 關(guān)系模式STJ(S,T,J)中,S表示學(xué)生,T表示教師,J表示課程。每一教師只教一門課。每門課有若干教師,某一學(xué)生選定某門課,就對(duì)應(yīng)一個(gè)固定的教師。由語(yǔ)義可得到如下的函數(shù)依賴。 (S,J)→T;(S,T)→J;T→J。 這里(S,J),(S,T)都是候選碼。 STJ是3NF,因?yàn)闆]有任何非主屬性對(duì)碼傳遞依賴或部分依賴。但STJ不是BCNF關(guān)系,因?yàn)門是決定因素,而T不包含碼。 3NF的“不徹底”性表現(xiàn)在可能存在主屬性對(duì)碼的部分依賴和傳遞依賴。非BCNF的關(guān)系模式也可以通過分解成為BCNF。例如STJ可分解為ST(S,T)與TJ(T,J),它們都是BCNF。 一個(gè)模式中的關(guān)系模式如果都屬于BCNF,那么在函數(shù)依賴范疇內(nèi),它已實(shí)現(xiàn)了徹底的分離,已消除了插入和刪除的異常。 關(guān)系模式規(guī)范化小結(jié) 目的:規(guī)范化的目的是使結(jié)構(gòu)合理,消除存儲(chǔ)異常,使數(shù)據(jù)冗余盡量小,便于插入、刪除和更新。 原則:遵從概念單一化“一事一地”的原則,即一個(gè)關(guān)系模式描述一個(gè)實(shí)體或?qū)嶓w間的一種聯(lián)系。規(guī)范的實(shí)質(zhì)就是概念單一化。 方法:將關(guān)系模式投影分解成兩個(gè)或兩個(gè)以上的關(guān)系模式。 要求:分解后的關(guān)系模式集合應(yīng)當(dāng)與原關(guān)系模式“等價(jià)”,即經(jīng)過自然聯(lián)接可以恢復(fù)原關(guān)系而不丟失信息,并保持屬性間合理的聯(lián)系。
posted on 2014-05-21 10:10 順其自然EVO 閱讀(528) 評(píng)論(0) 編輯 收藏