2012-06-14 32 views
0

大家好我有一個考試即將到來,並沒有從講師那裏得到關於練習考試兩個問題的很多幫助。她提供了答案,但沒有回答我關於答案的問題,我希望這裏有人能夠解釋爲什麼答案是這樣。關係代數自然連接

考慮下面兩個表R和S與它們的實例:

R  S 
A B C D E 
a x y x y 
a z w z w 
b x k  
b m j  
c x y  
f g h 

a) πA(R[natural join]B=D S) 

答案是(a,b,c),爲什麼不是(a,a,b,c)?投影是否使它明顯?


b) π A(R[natural join] B<>D S) 

答案是(a,b,c,f),爲什麼a一個答案? b = d這兩個值都是x和z值,那麼爲什麼要打印出來呢?

+0

如果您發現某個答案正確,請接受答案。 – JustinDanielson

回答

0

[自然連接B = d

這是不是一個自然的加入,因爲「自然連接」是一個加入該連接關係專門於同名的屬性。你描述的結構可能會在某些地方被標記/稱爲「equijoin」,但它肯定不是「自然結合」。

[自然聯接]乙<> d

這不是一個自然連接,因爲「天然連接」是一個連接該連接參數關係的元組一起當且僅當該屬性值是相等的

你正在毫無希望地被誤解和被教育。參考資料:「數據庫系統介紹」,C.J.Date。這對你的考試不會有任何好處,但如果你在數據庫技術方面尋找以後的職業,那麼記住這一點可能是值得的。

但是,爲了回答您的實際問題(符合前面的答案):

一)的屬性值「一」不能在投影的結果中出現兩次,因爲投影產生關係 ,並且關係被定義爲集合,並且集合不能包含重複。 b)[非]自然聯接同時包含元組(axyzw)和(azwxy)兩個元組。來自R的「第一」元組與來自S的「第二」元組,以及其他方式。該投影包括結果(a)。

1

a)在關係代數中,投影算子提供重複消除。在SQL中,這不是默認操作,但它是關係代數。這是我的source。目前,我不記得它爲什麼重複排除,但這是我的數據庫教授,他非常瞭解。 (我認爲這是因爲關係代數使用設置邏輯並且集合沒有重複項。)

b)連接2個表將在兩個表之間創建一個CROSS PRODUCT。你有6行2行。所以交叉產品是6x2 = 12行。對於表R的第1行,您有x y。這將與x y和z w配對,得到[a x y x y]和[a x y z w]。第二對配​​對這個關係代數語句是有效的。列B和D不匹配x!= z。

1
a) πA(R[natural join]B=D S) 
the answer being (a,b,c), why isn't it (a,a,b,c)? does a projection make it distinct? 

在關係代數中,不允許有重複的元組;該SQL之間和關係代數一個主要區別(不同需要的地方)

b) π A(R[natural join] B<>D S) 
the answer being (a,b,c,f), why is a an answer? b=d both times when values are x and z, so why is this being printed out? 

自然連接操作返回所述一組中的R和S的元組的所有組合的,所以在這種情況下,也將返回的元組(axyzw)和( azwxy);因此必須在最終的預測中。