2016-11-05 63 views
2

natural joins 2 relations數據庫 - 關係代數自然連接2臺由2相同的列名

我已經通過Natural Join涉及2間的關係有2個相同名字列一個例子讀取。我理解那些在2個表中有1個相同列名的人,但對這種情況真的不知道。 任何人都可以向我解釋如何獲得輸出(而不是在Sql命令)?

謝謝!

+0

什麼是你引用的自然連接的*定義*? – philipxy

回答

4

公共列是B和D,所以如果兩個行具有相同的B和D值,那麼來自兩側的行就會匹配。
本例中的常見(B,D)值是(1,a)和(2,b)。
r'與(1,a)的2行與s'中的2行相匹配,創建4個組合。
r'與(2,b)的1行與s'中的1行相匹配,從而創建單個組合。
因此,結果集中有5行。

1

每個元組都是一個具有每個屬性值的集合。當兩個元組在他們共同屬性的所有值上達成一致時,則有一個元組是它們的聯合。例如,r的{AαB 1 CαD a} U s {B 1 D a Eα} = {AαB 1 CαD a Eα}。否則,不存在它們的聯合的元組。例如,對於r的{AαB 1 CαD a}和s的{B 3 D a Eβ}。

兩個關係的自然連接是一組元組,它們是每個元組的集合並集。我們通過查看每對元組來計算它,如果有一個元組是它們的聯合,那麼它就在結果中。

So r⋈s是一組元組,它是從r的元組和從s的元組的集合。我們通過查看來自s的元組的每一對元組來計算它,如果有一個元組是它們的聯合,那麼它就在結果中。首先,r的{AαB 1 CαD a}和s的{B 1 D a Eα}在它們的共同屬性的值上是一致的。所以它們的集合{AαB 1 CαD a Eα}在r中。其次,r的{AαB 1 CαD a}和s的{B 3 D a Eβ}對於它們的公共屬性具有不同的值。所以沒有組合是他們的聯合。所以這對元組在r中沒有一個集合。

繼續從r & s的每一對元組。