分解成3NF的保持函數依賴的分解算法:


轉換成3NF的保持函數依賴的分解算法:

ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是關系模式R<U,F>的一個分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},並設F是一個最小依賴集,記FDi為Xi→Alj,其步驟如下:

① 對R<U,F>的函數依賴集F進行極小化處理(處理后的結果仍記為F);

② 找出不在F中出現的屬性,將這樣的屬性構成一個關系模式。把這些屬性從U中去掉,剩余的屬性仍記為U;

③ 若有X→A€ F,且XA=U,則ρ={R},算法終止;

④ 否則,對F按具有相同左部的原則分組(假定分為k組),每一組函數依賴Fi所涉及的全部屬性形成一個屬性集Ui。若Ui¢ Uj(i≠j),就去掉Ui。由於經過了步驟②,故,於是構成的一個保持函數依賴的分解。並且,每個Ri(Ui,Fi)均屬於3NF且保持函數依賴。

對於步驟1中函數集的極小化處理可以參見博客 http://i.cnblogs.com/PostDone.aspx?postid=4445027&actiontip

 

例1:關系模式R<U,F>,其中U={C,T,H,I,S,G},F={CS→G,C→T,TH→I,HI→C,HS→I},將其分解成3NF並保持函數依賴。

(一)計算F的最小函數依賴集

① 利用分解規則,將所有的函數依賴變成右邊都是單個屬性的函數依賴。由於F的所有函數依賴的右邊都是單個屬性,故不用分解。

② 去掉F中多余的函數依賴

A.設CS→G為冗余的函數依賴,則去掉CS→G,得:

F1={C→T,TH→I,HI→C,HS→I}

計算(CS)F1+:

設X(0)=CS

計算X(1):掃描F1中各個函數依賴,找到左部為CS或CS子集的函數依賴,找到一個C→T函數依賴。故有X(1)=X(0)∪T=CST。

計算X(2):掃描F1中的各個函數依賴,找到左部為CST或CST子集的函數依賴,沒有找到任何函數依賴。故有X(2)=X(1)。算法終止。

(CS)F1+= CST不包含G,故CS→G不是冗余的函數依賴,不能從F1中去掉。

B.設C→T為冗余的函數依賴,則去掉C→T,得:

F2={CS→G,TH→I,HI→C,HS→I}

計算(C)F2+:

設X(0)=C

計算X(1):掃描F2中的各個函數依賴,沒有找到左部為C的函數依賴。故有X(1)=X(0)。算法終止。故C→T不是冗余的函數依賴,不能從F2中去掉。

C.設TH→I為冗余的函數依賴,則去掉TH→I,得:

F3={CS→G,C→T,HI→C,HS→I}

計算(TH)F3+:

設X(0)=TH

計算X(1):掃描F3中的各個函數依賴,沒有找到左部為TH或TH子集的函數依賴。故有X(1)=X(0)。算法終止。故TH→I不是冗余的函數依賴,不能從F3中去掉。

D.設HI→C為冗余的函數依賴,則去掉HI→C,得:

F4={CS→G,C→T,TH→I,HS→I}

計算(HI)F4+:

設X(0)=HI

計算X(1):掃描F4中的各個函數依賴,沒有找到左部為HI或HI子集的函數依賴。故有X(1)=X(0)。算法終止。故HI→C不是冗余的函數依賴,不能從F4中去掉。

E.設HS→I為冗余的函數依賴,則去掉HS→I,得:

F5={CS→G,C→T,TH→I,HI→C}

計算(HS)F5+:

設X(0)=HS

計算X(1):掃描F5中的各個函數依賴,沒有找到左部為HS或HS子集的函數依賴。故有X(1)=X(0)。算法終止。故HS→I不是冗余的函數依賴,不能從F5中去掉。即:F5={CS→G,C→T,TH→I,HI→C,HS→I}

③ 去掉F5中各函數依賴左邊多余的屬性(只檢查左部不是單個屬性的函數依賴)

沒有發現左邊有多余屬性的函數依賴。故最小函數依賴集為:

F={CS→G,C→T,TH→I,HI→C,HS→I}

(二)由於R中的所有屬性均在F中都出現,所以轉下一步。

(三)對F按具有相同左部的原則分為:R1=CSG,R2=CT,R3=THI,R4=HIC,R5=HSI。所以ρ={R1(CSG),R2(CT),R3(THI),R4(HIC),R5(HSI)}。

聲名:本文轉載自百度文庫

http://wenku.baidu.com/link?url=MUYZ--karIERpPnbvYAa5mb5f6LGCTtR41OFmv8lEMCivO96FmQ-ZbYtETZF-BlEw1Um6a3Bkb0qkxWE7d3AR9dyFsew-_HtMftPcbl0qli


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM