3NF的無損連線和保持函式依賴的分解

2022-09-07 11:00:07 字數 802 閱讀 1535

總結:先求最小覆蓋,再求碼,然後根據左部相同原則劃分關係,將上述劃分的再根據是否有包含關係進行合併,最後若關係中包含之前求的碼,那麼這個關係就是要求的分解,否則再加上乙個關係,將碼放入其中。

以下**自:

例一:設關係模式r(a,b,c,d,e)上的函式依賴集f是

1:計算f的最小覆蓋。

首先將右部不唯一的依賴分解。得到

然後對每乙個依賴判斷 :對a->b,令g=f-,檢視b是否屬於a關於g的閉包。即a是否能從g推導出b。經推,不能。所以,保留a->b。

同理 a->c 保留;abd->c 刪除(因為a->c);abd->e 保留;e->d 保留

第二步,對左部不唯一的依賴進行判斷:對abd->e,依次去掉a/b/d,檢視(abd-a/b/d)關於f的閉包是否包含e,是則用其取代原依賴。經推,發現ad->e滿足條件。

所以,綜上所述。f的最小覆蓋為

2:直接寫出r的所有關鍵字。

易知,碼為(a,d) (a,e)

3:直接將r分解到3nf,且滿足無損連線性和依賴保持性。

對f的最小覆蓋進行處理:首先,按左部相同原則分組

a->b,a->c為r1(,)

ad->e為r2(,)

e->d為r3(,)

然後,將具有包含關係的元組進行合併 r2包含r3,所以將r2,r3合併為新的r2(,)

最後,判斷分解後的關係模式中是否含有碼,若含有則為無損連線且保持依賴的3nf

否則,則是保持依賴但不是無損連線的3nf,此時需要新建乙個關係模式,將碼放入其中(若此題不含,則加r3(,))。

該例中,r2含有碼,所以滿足題意。

資料倉儲的3NF模型

1 1nf 無重複的列 資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 1nf 中表的每一行只包含乙個例項的資訊...

什麼樣的表符合3NF 正規化

表的正規化,是首先符合1nf,才能滿足2nf 進一步滿足3nf 第一正規化 1nf 即表的列具有原子性,不可再分解,即列的資訊,不能分解,只要資料庫是關係型資料庫 mysql oracle db2 informix sysbase sqlserver 就自動的滿足1nf。資料庫的分類 關係型資料庫有...

資料庫中的無損連線分解和是否保持函式依賴的判定

首先了解一下幾個概念 1 把乙個關係模式分解成若干個關係模式的過程,稱為關係模式的分解。2 把低一級的關係模式分解為若干個高一級的關係模式的方法不是唯一的。3 只有能夠保證分解後的關係模式與原關係模式等價,分解方法才有意義。對於第一句話,為什麼需要分解關係模式?因為原來的關係模式可能造成資料冗餘或 ...