2011-01-31 61 views
0

爲什麼不使用電子郵件地址等自然標識符是否有特殊原因?使用自然標識符(如電子郵件地址)

目前我使用Java的UUID類來創建唯一的標識符,但對於某些對象,它們有一個自然鍵 - 就像用戶和他們的電子郵件地址一樣。如果我使用他們的電子郵件地址,它會更有意義(並使我的代碼更清潔),但我想知道是否有任何特定的原因,你不應該?

感謝

UPDATE

我在這種特殊情況下使用的MongoDB。

回答

3

自然標識符通常不是恆定的。例如,我在過去20年左右更新了幾次電子郵件地址,但我仍然是同一個人。它合理的在電子郵件地址欄上有一個索引;畢竟,人們不會經常更換它們...

1

我能想到的一個原因是自然標識符並不總是恆定的。例如,用戶可能在某個時候想要更改他們的電子郵件地址。將它用作關鍵字並不一定排除這一點,但它會使這種變化變得更加困難和複雜。

2

不僅電子郵件被用戶更改(這意味着您將不得不更改所有相關的兒童記錄,可能會導致數千或數百萬人導致嚴重的性能問題),當人們來來往往時,它們被公司重複使用。他們甚至偶爾會被多人分享。對於天然鑰匙來說,它們是一個非常糟糕的選擇。

自然鍵需要是唯一且不變的,加入越短越好。在大多數情況下,在自然鍵上具有唯一索引的整數鍵將表現更好,並且在鍵改變時更容易掌握。如果您正在進行復制,或者您需要保持數據庫中立性,但通常不會像整數鍵那樣執行,則GUID鍵也可以接受。

相關問題