輸入:關係r和其上成立的函式依賴集f。
輸出:又r分解出的關係集合,其中每個關係均屬於3nf。分解具有無損鏈結和依賴保持性質。
方法:依次執行下列步驟:
找出f的乙個最小基本集,記為g。
對於g中的每乙個fd x→a,將xa作為分解出的某個關係的模式。
如果第2步分解出的關係的模式均不包含r的超鍵,則增加乙個關係,其模式為r的任何乙個鍵。
《資料庫系統基礎教程 原書第3版》p60鍵:ab、bc、bd習題3.3.1 對於下列的每個關係模式和fd集合:
a) r(a,b,c,d) fd
b) r(a,b,c,d) fd
c) r(a,b,c,d) fd
d) r(a,b,c,d) fd
e) r(a,b,c,d,e) fd
f) r(a,b,c,d,e) fd
做下列事情:
i) 指出所有的3nf違例。
ii) 如有必要,將關係分解為一系列屬於3nf的關係。
主屬性:a b c d
滿足3nf
鍵:ab
主屬性:b c
不滿足3nf的fd:b→c,b→d,bc→d,bd→c
最小函式依賴集:b→c,b→d
故分解為bc,bd
均不包含r的超鍵,故增加ab
分解結果為bc,bd,ab
鍵:ab、bc、cd、ad
主屬性:a b c d
滿足3nf
鍵:a、b、c、d
主屬性:a b c d
滿足3nf
鍵:abe
主屬性:a b e
非主屬性:c d
不滿足3nf的fd:ab→c,de→c,b→d,ab→d,bc→d,be→c,be→d,abc→d,abd→c,ade→c,bce→d,bde→c
最小函式依賴集:ab→c,de→c,b→d
故分解為abc,cde,bd
均不包含r的超鍵,故增加abe
分解結果為abc,cde,bd,abe
鍵:ab、ac、ad
主屬性:a b c d
不滿足3nf的fd:c→e,d→e,bc→e,bd→e,cd→e,bcd→e
ab→e(ab→c,c→e)
ac→e(ac→d,d→e)
ad→e(ad→c,c→e)
最小函式依賴集:ab→c,c→d,d→b,d→e
故分解為abc,cd,db,de
包含r的超鍵,即為分解結果
資料庫中轉化為3NF的幾個分解演算法
例 關係模型r,u f 第一步 首先計算出f的最小依賴集 演算法詳見最小函式依賴 得到f 第二步 觀察u中是否有屬性不在f 中的出現,如果有,則這個個屬性組成一對關係r,並在原來的u中刪除這些屬性。而例子中u中的屬性都出現在f中,則可以跳過這一步。第三步 對f 中的函式依賴,把左邊的相同分為一組,一...
資料庫 第三正規化(3NF)
第三正規化的表需要滿足以下條件 create table customers cust id int not null,cust name varchar 20 not null,dob date,street varchar 200 city varchar 100 state varchar 1...
(二)資料庫正規化3NF簡解
表 實體 字段 列 屬性 3nf設計原則 和 表關係 1 第一正規化 1nf 字段 字段原子性。最小的實際意義的文字單元指資料庫表的每一列都是不可分割的基本資料項,屬性 不可分割,不可二義!2 第二正規化 2nf 表 行的原子性,元組 表,實體的原子性。資料庫表中的每個例項或行必須可以被唯一地區分。...