2011-04-12 15 views
1

問題「考慮有五個屬性ABCDE關係R,您將得到下面的依賴關係數據庫中的關係作業幫助

  1. A-> B
  2. BC->電子
  3. ED->一個

列出所有R.

鍵老師給我們的鑰匙,這是ACD,BCD,CDE

我們需要展示工作才能找到他們。

前兩個我解決了。

對於BCD,2與3的傳遞性得到(BC-> E)D-> A => BCD-> A。 和ACD ID的1與4(BCD)的傳遞,以獲得(A-> B)CD-> A => ACD->甲

但我不能找出如何得到CDE。

這樣看來我做錯了,谷歌搜索後,我發現這個答案

  1. 方法尋找鑰匙: 考慮α屬性包含臺:1個。 F的行列式屬性(即A,BC, ED)和b。不包含在確定的屬性中的屬性(即C,D)。然後 做屬性閉包算法: 如果α+超集,則成爲α - > [R 三個鍵:CDE,ACD,BCD Source

從我可以告訴,因爲C,d不上依賴關係的左側。按鍵左側貼有CD預先附加到他們。任何人都可以更詳細地向我解釋這爲什麼?

回答

2

得到他們,你開始依賴的之一,利用推理來擴展集。

讓我用簡單的英文去,你可以輕鬆找到正式定義網。

例如從3開始)。

ED -> A 

(知道E和d,我知道A)

ED ->AB 

(知道E和d,我知道A,通過了解A,我知道乙以及)

ED->AB 

儘管如此,C還是不可知的,現在除了BC-> E,我已經使用了所有的規則,因此我將C添加到左邊,即

CDE ->AB 

因此,通過了解C,d和E,你就會知道一個爲好, 因此CDE是你的關係ABCDE的關鍵。你重複同樣的過程,從其他規則開始直到用盡。

+0

你不能僅僅說出屬性是否在左側,或者不確定它是否是可能的關鍵。 – Winfred 2011-04-12 03:44:51

+0

那麼這是做下一個可能的關鍵的正確方法嗎? BC-> E,知道E,ED-> A,我得到BCD-> AE? – 2011-04-12 04:01:47

+0

最後一個我做了A-> B,因爲BC-> E,我知道B,所以AC-> EB,因爲D不能被知道我把它加到左邊得到ACD-> EB – 2011-04-12 04:08:51