2014-05-03 79 views
2

只是關於以下情況的最佳做法的一個簡短問題。你可以使用用戶名作爲唯一標識符/主鍵

開發一個包含賬戶的網站。網站已設置,以便任何兩個帳戶都不能具有相同的用戶名,即所有用戶名都是唯一的。

當持久化數據庫中的帳戶時,可以使用用戶名作爲主鍵(唯一標識符)還是有一些原因,我應該知道這將需要一個單獨生成的唯一ID?

回答

6

請勿使用用戶名作爲主鍵,從不

使用代理鍵(即自動生成的數字),因爲

  1. 他們更快和更小的(關鍵是4-8個字節,用戶名是高達你不知道字節?)
  2. 是隻有現在你認爲用戶名是唯一的,後來你會發現你需要非唯一的用戶名(例如對於你必須保存交易記錄的已刪除的用戶),或者需求將改變
  3. 用戶應該能夠改變他們的使用RNAME,錯誤/錯字的情況下的/ etc

更新:在分佈式系統的情況下,使用的GUID

+0

感謝 - 你會建議生成唯一ID?遞增值,用戶名+當前時間等值的醃製散列值? –

+1

@SaadAttieh通常的遞增是絕對足夠的 –

+0

就個人而言,如果用戶名被用於登錄(因此應該是唯一的),我會將歷史存儲在另一個表中,這樣我就可以獲得唯一鍵的安全性約束。如果不是,如果它是某種標籤,那麼它並不重要。 –

相關問題