2016-11-02 88 views
0

考慮的關係R(ABCDE)具有以下FD的:投影函數依賴於另一關係

  • AB - 「ç
  • BC - > d
  • CD - >電子
  • DE - >甲
  • AE - > B

將這些FD投影到的關係上。預計關係中有以下哪些FD?

  1. A - >乙
  2. A - > d
  3. BC - >甲
  4. AC - >乙

在上述問題的措辭是直接從分配拷貝

正確的答案是3.

由於最後3個FD包含E,它們不保留在R(ABCD)的投影中,我相信。因此,我留下了 AB -> CBC -> D我無法弄清楚如何從我目前的過程中確定正確的答案。

+0

@philipxy準確的表述是:「將這些FD投影到關係S(A,B,C,D)上。下列哪個FD在投影關係中成立?」 – bkennedy

+0

這是不幸的,你的任務說。這是潦草的寫作。儘管如此,你沒有理由使用它。你爲什麼認爲這意味着什麼?請編輯你的問題,說你正在引用你的任務。如果您確實已經對這些詞的意思進行了定義,請告訴我。否則,請編輯您的問題以表達您的想法。 – philipxy

回答

2

你的問題不清楚。我假設你問關係R(ABCD)中最後四個依賴關係中的哪一個:答案是第三個。這可以通過在原設定的依賴關係的計算的BC閉合簡單地證明:

BC+ = BC 
BC+ = BCD (using BC → D) 
BC+ = BCDE (using CD → E) 
BC+ = BCDEA (using DE → A) 

所以,BC是一個候選鍵,並確定A,使得BC → A還持有R(ABCD)。如果您嘗試計算四個依賴關係中所有其他左側的閉包,那麼您將永遠找不到右側,因此它們不會保留在R(ABCD)中。

爲什麼通過計算行列式的閉包可以得到答案?

讓我們打電話給FS原始的一組依賴關係F的投影超過關係S(ABCD)。因此,爲了定義一組依賴關係的投影,我們有:

FS = {X→Y∈F+ | X,Y⊆ABCD}

問題問是否某些依賴屬於FS。但由於FS的計算需要計算F +,這是一項指數任務,而不是計算它,我們檢查四個相關性X→Y中的每一個,如果它屬於F +。這相當於多項式任務,計算X的閉包並查找Y是否屬於它(我們已經知道依賴關係具有集合ABCD中的所有屬性)。

因此,答案是計算依賴關係的所有左手部分的關閉,並查看右部分是否包含在其中。這僅適用於第三個依賴項。

+0

我想我在帖子中已經解決了這個問題,但是您的假設是正確的。我的思維過程是計算BC和AC的關閉,因爲其他2個FD不會持有,因爲他們有E項。你能解釋爲什麼我必須計算這些閉包嗎? – bkennedy

+0

@bkennedy,我編輯了答案。 – Renzo

+0

好吧,最後一句話真的把它清除了。謝謝 – bkennedy

1

「將這些FD投影到關係S(A,B,C,D)上」是草率寫作。 (儘管你評論說你在引用你的任務。)想必這麼說,如果這些FD在R(ABCDE)中存在,那麼下列FD中的哪一個在ABCD上的投影中保持不變。

當某些FD持有時,其他持有者也必須持有,因爲這些持有者會持有。因此,R中有更多的FD持有者比你獲得的更多。此外,一些FD持有但沒有給予,因爲一些FD使用E持有 - 即使它們本身不包含E.因此,首先你需要在R中找到更多的FD,直到找到一個將在投影后保留,因爲它們不涉及E.

一種方法是找到F +(FD集合的閉包)。但它可能非常大。我們可以做的是使用屬性集的閉包的概念。這是由屬性集確定的所有屬性的集合。 (根據確定的屬性,我們知道所有具有該決定因素的FD。)有一個用於找到它的算法。如果答案FD的決定因素是F中的決定性因素,然後我們就可以計算出它的R中關閉,看看它的答案FD也R.

認爲如果沒有文件描述符的決定因素表現爲F中的決定因素那麼我們將不得不開始在F +中生成FD,直到我們得到一個具有決定因素的決定因素,這也是答案中的一個決定因素。然後我們可以應用前面的步驟。

+0

所以你說計算F + R(ABCDE)? – bkennedy