什麼是DBMS中的分解?


分解意味著將關係R分解成{R1, R2, ......Rn}。它是依賴性保持和無損的。

依賴性保持分解

假設R被分解成{R1, R2,....,Rn},其投影FD集為{F1,F2,......Fn}。如果F+ ={F1 U F2 U.........Fn}+,則此分解是依賴性保持的。

示例

假設關係R{A,B,C,D,E} F:{AB->C, C->D, AB->D} R被分解成R1(A,B,C), R2(D,E)。證明分解是依賴性保持的。

解答

F1={AB->C}

F2={C->D}

=> (F1 u F2) = {AB->C, C->D}

在(F1 U F2)下AB+ = {A,B,C,D} => AB->D在(F1 U F2)下

F+ = (F1 U F2)+

=> 分解是依賴性保持的。

分解不保持

現在考慮另一個分解不保持的示例。

假設關係R{A,B,C,D,E,F,G,H,I,J},其中F: {AB->C, A->DE, B->F, F->GH. D->IJ}

R被分解成R1(A,B,C,D), R2(D,E), R3(B,F), R4(F,G,H) 和 R5(D,I,J)。檢查分解是依賴性保持的還是不保持的。

解答

F1={AB->C}

F2={}

F3={B->F}

F4={F->GH}

F5={D->IJ}

=> (F1 U F2 U F3 U F4 U F5) = {AB->C, B->F, F->GH, D->IJ}

在(F1 U F2 U F3 U F4 U F5)下A+ = {AB->C, B->F, F->GH, D->IJ}

=>A->DE不在(F1 U F2 UF3 U F4 U F5)下

=>F+ ≠ (F1 U F2 U F3 U F4 U F5)+

=> 分解不是依賴性保持的。

無損連線分解

這是一個將關係分解成兩個或多個關係的過程。此屬性保證不會發生額外或較少的元組生成問題,並且在分解過程中不會從原始關係中丟失任何資訊。它也稱為非加性連線分解。

當子關係再次組合時,新關係必須與分解前的原始關係相同。

考慮一個關係R,如果我們將其分解成子部分關係R1和關係R2。

當它滿足以下語句時,分解是無損的:

  • 如果我們聯合子關係R1和R2,則它必須包含在分解前原始關係R中可用的所有屬性。

R1和R2的交集不能為Null。子關係必須包含一個公共屬性。公共屬性必須包含唯一資料。

公共屬性必須是子關係R1或R2的超鍵。

這裡,

R = (A, B, C)

R1 = (A, B)

R2 = (B, C)

關係R具有三個屬性A、B和C。關係R被分解成兩個關係R1和R2。R1和R2都各有2個屬性。公共屬性為B。

列B中的值必須是唯一的。如果它包含重複值,則無損連線分解是不可能的。

繪製包含原始資料的R關係表:

R (A, B, C)

ABC
122534
103609
124230

它分解成兩個子關係,如下所示:

R1 (A, B)

AB
1225
1036
1242

R2 (B, C)

BC
2534
3609
4230

我們現在可以檢查無損連線分解的第一個條件。

子關係R1和R2的並集與關係R相同。

R1U R2 = R

我們得到以下結果:

ABC
122534
103609
124230

該關係與原始關係R相同,因此,上述分解是無損連線分解。

更新於: 2021年7月3日

8K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.