DBMS關係分解


當關係模型中的關係不是適當的正規化時,則需要分解關係。
在資料庫中,它將表分成多個表。
如果關係沒有適當的分解,則可能導致資訊丟失等問題。
分解用於消除一些不良設計的問題,如異常,不一致和冗餘。

分解的型別

1. 無失真分解

  • 如果資訊沒有從分解的關係中丟失,那麼分解將是無失真的。
  • 無失真分解保證了關係的連線將產生與分解時相同的關係。
  • 如果所有分解的自然連線給出原始關係,則該關係被稱為無失真分解。

範例:

EMPLOYEE_DEPARTMENT 表的結構和資料如下:

EMP_ID EMP_NAME EMP_AGE EMP_CITY DEPT_ID DEPT_NAME
22 Denim 28 Mumbai 827 Sales
33 Alina 25 Delhi 438 Marketing
46 Stephan 30 Bangalore 869 Finance
52 Katherine 36 Mumbai 575 Production
60 Jack 40 Noida 678 Testing

將上述關係分解為兩個關係表:EMPLOYEEDEPARTMENT,它們分別如下:

EMPLOYEE 表結構和資料如下 -

EMP_ID EMP_NAME EMP_AGE EMP_CITY
22 Denim 28 Mumbai
33 Alina 25 Delhi
46 Stephan 30 Bangalore
52 Katherine 36 Mumbai
60 Jack 40 Noida

DEPARTMENT 表結構和資料如下 -

DEPT_ID EMP_ID DEPT_NAME
827 22 Sales
438 33 Marketing
869 46 Finance
575 52 Production
678 60 Testing

現在,當這兩個關係在公共列「EMP_ID」上連線時,結果關係將如下所示:

Employee ? Department 連線操作 -

EMP_ID EMP_NAME EMP_AGE EMP_CITY DEPT_ID DEPT_NAME
22 Denim 28 Mumbai 827 Sales
33 Alina 25 Delhi 438 Marketing
46 Stephan 30 Bangalore 869 Finance
52 Katherine 36 Mumbai 575 Production
60 Jack 40 Noida 678 Testing

因此,分解是無失真連線分解。

2. 依賴保留

  • 它是資料庫的一個重要約束。
  • 在依賴項保留中,至少一個分解的表必須滿足每個依賴項。
  • 如果關係R被分解為關係R1R2,則R的依賴性必須是R1R2的一部分,或者必須可以從R1R2的函式依賴性的組合中匯出。

例如,假設存在具有功能依賴性集(A -> BC)的關係R(A,B,C,D)。 關係R被分解為R1(ABC)R2(AD),其是依賴性保持因為FD A-> BC是關係R1(ABC)的一部分。