函數依賴理論
-
邏輯蘊涵
-
定義:
- 存在如下條件
- 關系模式:r(R)
- 依賴集:F (由一個或多個依賴組成)
- 依賴:f
- 若r(R)滿足F ==> r(R)滿足f
- 我們稱 F 邏輯蘊涵 f
ps: 其中f可由F通過Armstrong公理推得
- 存在如下條件
- 舉個栗子:
給定關系模式 r(A, B, C, G, H, I)
-
F包含如下依賴
- A → B
- A → C
- CG → H
- CG → I
- B → H
函數依賴f : A → H
-
其中 f 被 F 邏輯蘊涵
- 由Amstrong傳遞公理可知:A → B, B → H ==> A → H
-
-
函數依賴集的閉包
- 令 F 為一個函數依賴集。則 F的閉包 是 被 F 邏輯蘊涵的所有函數依賴的集合
- 記作:F+
-
Armstrong公理(Armstrong's axiom)
公理是科學的客觀規律,不需要自己證明,直接用就行
-
Armstrong 公理
- 自反律(reflexivity rule)。若α為一個屬性集,且β?α, 則α→β
- 舉個栗子:(A, B)→A
- 增補律(augmentation rule)。若α→β成立且γ為一屬性集,則γα→γβ
- 舉個栗子:(A, B)→C ==> (A, B, D, E)→(C, D, E)
- 傳遞律(transitivity rule)。若α→β和β→γ成立,則 α→γ 成立
- 舉個栗子:A→B, B→C ==> A→C
- 自反律(reflexivity rule)。若α為一個屬性集,且β?α, 則α→β
-
Armstrong公理是完備的,對于一個給定的函數依賴集F,通過Armstrong公理可以產生全部的F+
-
Armstrong公理的一些推論
可由Armstrong公理直接推得,也可以當做公理使用
- 合并律(union rule)。若α→β和α→γ成立,則α→βγ
- 舉個栗子:A→B, A→C ==> A→(B, C)
- 分解律(decomposition rule)。若α→βγ成立,則α→β和α→γ成立
- 舉個栗子:A→(B, C) ==> A→B, A→C
- 偽傳遞律(pseudotransitivity rule)。若α→β和γβ→δ成立,則αγ→δ成立
- 舉個栗子:A→B, (B, C)→D ==> (A, C)→D
- 合并律(union rule)。若α→β和α→γ成立,則α→βγ
-
-
屬性集的閉包
- 令α為一個屬性集,我們將函數依賴集 F 下被α 函數確定的所有屬性的額集合為稱為F下α的閉包
- 記作:α+
- 偽代碼如下:
result := α repeat for each 函數依賴 β→γ in F do begin if β ? result then result := result ∪ γ end until(result 不變)
-
正則覆蓋(極小函數依賴集)
- 如果去除函數依賴中的一個屬性不改變函數依賴集的閉包,則稱該屬性是無關的
- F的正則覆蓋 Fc 是一個依賴集,使得F邏輯蘊涵Fc 中的所有依賴,并且Fc 邏輯蘊涵F中的所有依賴。此外,Fc 必須具有如下性質 :
- Fc 中任何函數依賴都不含無關屬性
- Fc 中函數依賴的左半部都是唯一的。即Fc 中不存在兩個依賴α1→β1和α2→β2, 滿足α1=α2
-
無損分解
- 如果用兩個關系模式r1(R)和r2(R)替代r(R)時沒有信息損失,則我們稱該分解時無損分解(lossless decomposition)
- SQL 表示
-- 下面查詢的結果與r具有相同結果的元組集 SELECT * FROM r1 natural join r2
- 關系代數表示:
- ∏R1(r) ? ∏R2(r) = r
分解算法=> 下回分解