1

需要絕望的幫助理解boyce codd並找到候選鑰匙。 我找到了一個鏈接在這裏http://djitz.com/neu-mscs/how-to-find-candidate-keys/我所瞭解的大部分,但我會被卡住boyce codd和尋找候選人鑰匙

(ABCDEF)

AB→CDE

BCD→A

BCE→ AD

BD→E

正確據我所知,從鏈接我知道你發現從左邊,這只是B,普通套從右邊,這是沒有的共同集

現在我要從哪裏出發?我知道所有候選集合都會有B,但是我需要在那之後找到候選集合的指導。有人用簡單的語言解釋

回答

1

鏈接的文章寫得不是特別好。 (這是一個觀察,而不是批評,作者的第一語言不是英語。)我會嘗試重寫算法。這不是告訴你如何做到這一點。這是我對原作者如何告訴你這樣做的解釋。

  1. 確定不在任何FD的左側或右側的屬性。
  2. 確定僅位於任何FD右側的屬性。
  3. 確定僅位於任何FD左側的屬性。
  4. 從步驟1結合的屬性和3
  5. 計算從第4步的屬性的閉合如果封閉件包括所有屬性,然後從第4步的屬性彌補的唯一候選鍵。 (不管有多少候選鍵還有,他們中的每一個必須包含這些屬性。)
  6. 標識不包含在步驟4和步驟屬性2
  7. 計算屬性的步驟4 關閉加上步驟6的屬性的每種可能組合。

因此,對於您發佈的FD,您最終會得到這個結果。

  1. {F}
  2. {}
  3. {B}
  4. {BF}
  5. {BF}的封蓋是{BF}。這不是所有的屬性。 (但每一個候選鍵必須包含{} BF)
  6. {} ACDE
  7. 計算這些屬性集的關閉。
    • {ABF}
    • {CBF}
    • {DBF}
    • {EBF}
    • {ACBF}
    • {ADBF}
    • {AEBF}
    • {CDBF}
    • {CEBF}
    • {DEBF}
    • {} ACDBF
    • {} ADEBF
    • {} CDEBF

如果我有權利,每位候選人鍵將在第7步的可能性在您的例子中可以找到這些組合,有3個候選鍵。