Join
關於最小/規範封面的問題
對於上述問題,我對如何簡化 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