Join

關於最小/規範封面的問題

  • July 8, 2018

在此處輸入圖像描述

對於上述問題,我對如何簡化 BDCE-> A 的左側感到困惑。我是擺脫 E,因為 D 依賴於它,還是我也擺脫 CD,因為 CD->A?

這是我認為我所做的:計算 B、C、D、E、BC、BD、DE、CD、CE、BCD、BCE、BDE、CDE 的閉包,然後查看哪些閉包實際使用依賴 BCDE->A,以及哪些依賴項實際上獲得了 A。到目前為止,CD 是獲得 A 的最少屬性。

以上給我留下了CD-> A。它是否正確?

計算一組依賴的最小覆蓋的算法要求,當左側部分有多個屬性時,我們應該消除無關的屬性,即剩餘屬性仍然確定右側部分的屬性。

換句話說,如果你有一個類似的依賴BCDE → A,你應該依次嘗試消除左邊部分的每個屬性,看看是否A包含在其餘屬性的閉包中。

讓我們在您的情況下嘗試該算法:

1. Try to eliminate B, and see if A ∈ CDE⁺; CDE⁺ = ABCDE, so B can be eliminated
2. Try to eliminate C from CDE, and see if A ∈ DE⁺; DE⁺ = ABCDE, so C can be eliminated
3. Try to eliminate D from DE, and see if A ∈ E⁺; E⁺ = BCE, so D cannot be eliminated
4. Try to eliminate E from DE, and see if A ∈ D⁺; D⁺ = ABCDE, so E can be eliminated

因此,依賴關係BCDE → A可以替換為D → A. 將此算法應用於所有依賴項(記得在最後檢查是否有多餘的依賴項),產生以下規範覆蓋:

D → A
D → E
E → B
E → C

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