Database-Design
依賴保留和範式
假設一組函式依賴關係 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 範式或合成算法生成第三範式來獲得保留依賴關係的分解。