2013-02-02 41 views
0

我正在尋求Natural和Equi Join之間的區別,當一個表(P)中的公共列是唯一的,但在其他(Q)中不唯一時。那麼將顯示來自其他表(Q)的哪些行,由於Q中的公共列不是唯一的,所以存在問題,那麼將會有如此多的行與Q中的那個公共屬性的單個相同值相關聯。Natural Vs Equi加入

兩者都在'='比較器上運行。自然連接自動找出公共列並隱式應用'='比較器。

說兩個表

P(a(unique),b,c) and Q(a(not unique),d) 

,如果我申請P natural join QP equi join Q

然後該行將在自然生成加盟和元組相等加入? 表示將顯示來自表Q的行中的哪一行(作爲'a'的相同值與Q中的許多行相關聯但P中不是如此)。 會有區別嗎??

+0

我需要得到這些連接之間的差異,當一個表中的公共列是唯一的而不是唯一的。 – codeofnode

回答

1

自然連接只是簡單的等待連接。當相同的列用於比較時,應該創建相同的元組。

數據庫開發人員傾向於不喜歡自然連接。表中列的添加,刪除或重命名可影響現有查詢。而且,一般來說,如果我們可以避免它,我們不想破壞現有的代碼。

就個人而言,我更喜歡在表格中的列上顯式命名條件。外鍵應該與主鍵具有相同的名稱,所以清楚它們指的是什麼。我也更喜歡連接的「身份」或「自動遞增」主鍵。然而,這是偏離你的問題。當自然連接爲連接選擇相同的列時,應該生成相同的元組。

+0

當一個表中的列是唯一的而不是唯一的時,我需要獲得這些連接之間的區別。將顯示來自表Q的行中的哪一行(作爲'a'的相同值與Q中的許多行相關聯但P中不是這樣的行)將被顯示。 – codeofnode

+0

@Rambo。 。 。所有匹配的行都將顯示出來,可以是任何類型的連接。 –