2016-04-20 94 views
0

什麼被認爲是一個更好的/標準方法:外鍵引用PK VS外鍵引用唯一鍵

  1. 一個外鍵引用另一個表的主鍵(PK是自動遞增的數值)。

  2. 引用另一個表的唯一鍵的外鍵(唯一鍵列保存有意義的數據而不是自動生成的值)。

一種方法比其他方法有任何性能優勢嗎?

理想情況下,唯一的關鍵列應該是PK,但這是我無法改變的。

+0

你正在使用哪些DBMS? – Kateract

+3

我想說這是一個主觀問題,因爲它將取決於服務器和dbms中的索引等內容。例如,外鍵約束不會被SQL Server自動索引。另外,如果你的程序員使用ORM,他們可能會更容易使用FK來引用真正的PK – Nikki9696

+0

FK *通常引用被引用表的PK,但是在引用唯一索引時沒有任何缺點或缺點而是在被引用的表上。性能沒有任何差別,要麼 –

回答

0

我喜歡使用唯一密鑰作爲主鍵的想法,尤其是如果您必須存儲唯一密鑰數據以用於其他目的。很遺憾,這是你無法改變的東西,所以我不確定你要回答這個問題。但是唯一出現的性能問題是密鑰的大小,因爲一些數據類型明顯使用比其他數據類型更多的存儲空間,這最終會影響查詢性能。無論哪種方式都應該強制引用完整性並防止孤立的記錄。