Database-Design

依賴保留和範式

  • August 7, 2017

假設一組函式依賴關係 F 持有關係 R 。我們發現依賴違反了 2NF 的條件,並將關係分解為 R1 和 R2。在這個過程之後,我能對集合 R 說些什麼。換句話說,如果不是我們如何找到新的依賴集,那麼所有的依賴關係都會被保留。我們是否需要為每個分解的關係指定依賴集?

作為一個例子,讓我們考慮集合

R = {a,b,c,d,e,f,g,h,i,j}

F = {AB -> C, A -> DE, B -> F, F -> GH, D -> IJ }

計算閉包,我們發現 AB 是 R 的候選鍵,這導致依賴 A -> DE 違反 2NF 我們計算 A + = {A , D , E , I , J }

因此分解是 R1 = {B , C , F , G ,H} R2 = { A , D , E , I , J}

在此步驟之後,我不確定如何檢查新關係是否存在違規,我將哪些依賴項集作為檢查違規的參考。

我們建構 R2 的方式確保不會違反 2NF,但是關係 R1 呢?

鑑於您的分解,F 在 R2 上的投影是:

D → J I
A → D E

而對 R1 的依賴是:

B → F
F → G H

相反,依賴:

A B → C

失去了。

原因是這個依賴的屬性在兩個不同的表中,沒有辦法獲取,因為表沒有共同的屬性。

可以通過應用分析算法生成 Boyce-Codd 範式或合成算法生成第三範式來獲得保留依賴關係的分解。

引用自:https://dba.stackexchange.com/questions/153334