2010-01-27 52 views

回答

8

如果您不想獲取重複的用戶名,請創建一個UNIQUE constraint

如果DWong1145想要更改它的用戶名呢?你會使所有的數據庫關係爲UPDATE CASCADE

+0

我的問題是在一個認證系統的背景下,不會允許用戶名更改。我應該提到這一點。 – 2010-01-27 09:03:10

+1

@Emanuil - 引用侏羅紀公園的Jeff Goldblum的話說,「人生找到一條路。」如果您有一天需要更改用戶名,現在您可能會後悔此刻...... – 2010-01-27 09:23:19

+0

「'信息'不能用作密鑰;'數據'可能」; '數據'不需要改變,就像程序一定要理解一樣。如果我打電話給SO並要求更改我的用戶_id_會怎麼樣?我不能這樣做,但我可以更改我的用戶_名稱。 – 2010-01-27 09:30:39

4

從客戶的角度來看,你打賭。我不希望我的用戶名是DWong1145。

7

,您應該使用用戶名只作爲唯一鍵/常量。用戶名可以更改,只是舉例而已:它可能是商標,所有者請求您放棄它。

+0

聽起來有點簡潔;)你*是*權利雖然。我討厭你不能更改你的用戶名的系統 - 但是,OP在評論中說他不希望它被改變,所以... – 2010-01-27 15:12:52

5

這是一個很好的候選人,但是你必須考慮你是否真的想要這樣做。例如,您有一個具有某個用戶名的用戶,則用戶將被「刪除」(或標記爲已刪除)。因此,實際上沒有理由不允許使用相同的用戶名創建另一個用戶,但由於它是主鍵,因此它已被「取用」。

2

將字符串作爲主鍵的一個很大的缺點是,無論是用戶名還是其他名稱,所有引用表的外鍵列也必須是字符串,這樣既慢又浪費更多空間。

+0

它不一定要慢。好的數據庫引擎可以預先散列任何字符串值。最重要的是,使用自然鍵可能會消除對應用程序中的許多連接的需求,從而加快查詢速度。我承認,自然鑰匙通常會消耗更多的空間,但誠實地說,空間便宜而豐富。 – 2010-07-28 08:40:55