2012-01-02 18 views
0

我在想,如果我們有兩個共享一列的表,並且在第一個表中,此列是主鍵,但在第二個表中,另一個被選作主鍵。那麼SQL是否將第二個表中的公共列視爲另一個普通列?因此,如果基於公共列信息搜索第二表,則不存在優化,即兩個相關表之間的主鍵是完全獨立的?兩個相關的表和主鍵獨立性問題

+0

從邏輯上講,兩個表不可能「共享一列」。即使存在外鍵約束,它們也僅具有*值*。物理上,DBMS可以將實際值存儲一次,並將外鍵值存儲爲指針。你有哪些SQL產品? – onedaywhen 2012-01-03 09:53:16

回答

3

是的,它們是獨立的:主鍵對於表是完全獨特的。

即使列的類型相同,但它們不會跨表共享,但您可以將表的主鍵作爲外鍵共享到另一個表中。

不執行優化,因爲您提到的第二列不是該表中的主鍵。數據庫默認根據主鍵創建索引,這樣可以提高查找表數據的效率。

+0

我相信這個問題與主鍵發生的搜索優化有關,因爲它們被編入索引。 – 2012-01-02 06:47:53

+0

編輯.......... – 2012-01-02 06:51:53

+1

@Zsolt非常感謝好友!!! – 2012-01-02 09:06:01

0

如果在它們各自表中的兩列之間建立了正確的PK-FK關係,那麼應優化任何連接。