函式依賴和連接依賴的區別
根據定義,函式依賴定義為
令 X 和 Y 是關係 R 的屬性的子集。當且僅當對於 R 的任何實例 r,當 r 的兩個元組 t1 和 t2 在屬性 X 上一致時,函式依賴 X → Y 對 R 成立在屬性 Y 上。也就是說,
t1.X = t2.X ⇒ t1.Y = t2.Y
同時,一個連接依賴,
如果 T 總是可以通過連接多個具有 T 屬性子集的表來重新創建,則表 T 受連接依賴關係的影響。
我可能是錯的,但我想知道功能依賴的概念和連接依賴之間是否有任何關係。
Join Dependencies 可以被認為是 Multivalued Dependencies 的泛化,遵循關係 R 中的 Multivalued Dependency X →→ Y 可以看作是編寫二元Join Dependency 的另一種方式⨝
$$ XY, X(U − Y) $$,其中 U 是關係 R 的所有屬性的集合。 例如,在描述員工及其工資歷史以及其他屬性的關係中
R(empNo, salary, year, name, role)
,我們可以說有一個 MultivaluedDependencyempNo →→ salary, year
,或者等價地有一個 Join Dependency⨝[{empNo, salary, year}, {empNo, name, role}]
(請注意,這清楚地表明在 R 中也包含“對偶”多值依賴empNo →→ name, role
)。您在詢問功能依賴關係和連接依賴關係之間存在哪些關係。這個問題是合理的,因為函式依賴和多值依賴之間存在關係。
在Abiteboul, S. “數據庫基礎”的第 8 章中。馬薩諸塞州雷丁:Addison-Wesley,1995 年。您可以找到一個也被證明的答案:
提案 8.3.3。令 U 是一組屬性,{X, Y, Z} 是 U 的一個分區,而 Σ 是一組 U 上的函式依賴關係。那麼 Σ ⊨ ⨝
$$ XY, XZ $$當且僅當 Σ ⊨ X → Y 或 Σ ⊨ X → Z。
換句話說,如果一個功能依賴
X → Y
在關係模式 R 中成立,那麼這意味著二元連接依賴⨝[XY, XZ]
成立,反之亦然。請注意,這相當於說您始終可以對具有 , 中的函式依賴關係的關係進行R{X,Y,Z}
無損X → Y
分解。R1{XY}``R2{XZ}
因此,例如,在前面的範例中,因為
empNo → name
,連接依賴關係⨝[{empNo, name}, {empNo, salary, year, role}]
成立並且{R1(empNo, name), R2(empNo, salary, year, role)}
是無損分解。