Relational-Theory

函式依賴族的閉包“F”是什麼?

  • March 6, 2017

我有一些問題要確定F函式依賴系列的閉包是什麼。

我知道它的定義是

F⁺= {X → Y\F⊨X → Y}

一個例子

讓我們成為以下關係

R(Student,Examination, Date)具有以下一組功能依賴項:

F={D,St → Ex, Ex → D}

關係分解為R¹(St,Ex) R²(Ex,D)

**為什麼是F¹= ∅ 但是F²={Ex → D}?**我會做出:F²= ∅從定義F⁺

我從社區 wiki 知道

功能依賴要求它們必須為每個 可能的實例都成立。

從一個實例中,您無法找到特定關係模式中的功能依賴關係

因此我不知道如何知道函式依賴族的閉包是什麼。

另一個例子是:

第二個例子

R(Course,Student,Birthday,Grade)

具有以下一組功能依賴項:

F={C,St → G, St → B}

以及以下關係:

R¹(C,St,G)R²(St,B)

**F¹{C,St → G}從定義來看,R²(St → B)**我會這樣做:

F¹=F²=∅

當你有一個關係 R 與一組函式依賴 F 和 R 在 R 1 …R n中的分解時,你必須考慮兩個不同的概念:

  1. 函式依賴集 F 的閉包。這個閉包,稱為 F +,是從 F 派生的所有依賴項的集合,在可能的情況下,通過應用一組稱為“阿姆斯特朗公理”的規則。這個集合可以很長,(與 F 的依賴數成指數),所以一般不計算。相反,可以計算的是它的覆蓋,它是可以從中派生 F +的少量依賴項(因此相當於 F +)。例如,當您對關係進行規範化時,這種計算很有用。
  2. 依賴集 F 在 R 的分解上的投影。根據定義,對於每個 R i ,該投影是F +的所有依賴關係的集合,這些依賴關係具有R i**中的所有屬性(並表示為 π R i (F))。但是,由於我們不計算 F +,如上所述,我們無法計算這樣的投影。在實踐中可以做的是,在簡單的情況下,查看 F 中是否存在某種依賴關係,其所有屬性都包含在 R i中,因此我們確信這種依賴關係在 R i中成立. 但是,如果以這種方式在分解關係之一中找不到依賴項,則不能保證這種依賴項會失去,因為它可能是其他依賴項的結果。

在您的第一個範例中,對於關係 R(S, Ex, D),您在 F 中有兩個依賴項:

D, St → Ex
Ex → D

因此,考慮 R 2 = (Ex, D),我們可以立即看到,在依賴關係中 Ex → D 在 R 2中成立,因為它的所有屬性都包含在 R 2中,而第一個依賴關係不能在 R 1和 R中都不成立2,因為它具有三個屬性。實際上,在關係 R 1中,您既沒有第一個依賴項,也沒有第二個依賴項(在 R 1中僅存在來自 F +的瑣碎依賴項,例如 St → St)。

相反,在您的第二個範例中,分解的關係是這樣的,即在第一個依賴項中存在所有屬性,因此它在其中微不足道,而在第二個範例中存在第二個依賴項的所有屬性,您可以再次確保第二個依賴關係在第二個關係中成立。

最後,請注意,雖然計算 π R i (F)在計算上不可行,但有一種有效的多項式算法可以查看某個分解是否保留了依賴關係,換句話說,如果 ∪π R i (F) 是F +的封面。您可以在此答案中查看更多詳細資訊。

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