2012-11-20 40 views
0

可能重複:
Is there a REAL performance difference between INT and VARCHAR primary keys?在SQL中使用ID而不是名稱更好嗎?

這可能是一個愚蠢的問題,但它更好地使用一個ID,而不是名稱時,我們創建SQL表?

我已經爲公司和客戶創建了表格,並且我剛剛使用公司名稱連接了2個表格。不過,我從其他線程看到很多人使用company_ID作爲主鍵,並將其與其他表中的ID連接起來。

有沒有什麼好的理由,他們使用ID而不是公司名稱?

謝謝

+0

ID將是並且應該是唯一的,而公司名稱可能不是 – dchhetri

+2

考慮當公司重命名時會發生什麼......現在您必須將新名稱更改(或至少傳播)到每個表舊的名字發生。 「哎呀,錯過了......」。拖拽這個int從你的數據庫中的任何東西中分離出名字,讓ceo在重命名時浪費他們的時間,同時你可以實際完成一些有用的事情。 –

+0

@pst:考慮到mysql的級聯深度限制爲15.對於我不幸必須處理的幾個模式來說還不夠。 –

回答

0

選擇使用「自然」或「代理」鍵有幾個考慮因素。仔細檢查。 This article討論每個的一些利弊。生成的ID往往是一個不錯的選擇,但最好的答案可能取決於你正在存儲什麼數據,以及如何使用這個數據庫。例如,在書籍數據庫的情況下,標題不會成爲一個好的主鍵,因爲兩個作者可能會編寫不同的書籍,但使用相同的標題。 ISBN可能會成爲一個很好的自然鑰匙。常常認爲一個自然的關鍵是不方便改變。一本書的ISBN有多頻繁?另一方面,公司名稱偶爾會改變。

使用公司編號也很常見,但這些編號通常由會計部門分配。爲什麼你更喜歡存儲生成的CompanyID,並且總是需要查找該ID所引用的CompanyNbr?

相關問題