我在想這個,如果我爲一個特定大學的學生製作一個網站,我應該把這個ID作爲MySQL上的標準ID(整數,自動增量)還是應該給他們的ID作爲他們的電子郵件地址是什麼,如果學生的電子郵件地址是[email protected],那麼他/她的ID是e12234(在我的網站上)。沒關係,表演怎麼樣?MySQL中的ID,標準ID或字母數字?
編輯:另外,有這樣的電子郵件地址: [email protected](交換學生) [email protected](這是一個教授)
我在想這個,如果我爲一個特定大學的學生製作一個網站,我應該把這個ID作爲MySQL上的標準ID(整數,自動增量)還是應該給他們的ID作爲他們的電子郵件地址是什麼,如果學生的電子郵件地址是[email protected],那麼他/她的ID是e12234(在我的網站上)。沒關係,表演怎麼樣?MySQL中的ID,標準ID或字母數字?
編輯:另外,有這樣的電子郵件地址: [email protected](交換學生) [email protected](這是一個教授)
我強烈建議爲id(整數,自動增量)單獨的獨立值。 Id值永遠不會更改,永遠不會更新。人們隨時都會更改電子郵件,有時企業會重新向相同的電子郵件地址發送新用戶。
通常你想映射字符串到IDS並引用ID eveywhere
CREATE TABLE `student` (
`id` int unsigned NOT NULL auto_increment,
`email` varchar(150) NOT NULL
PRIMARY KEY (`id`)
)
這將減少任何參考表的大小的電子郵件表,這將在使用INT代替VARCHAR。
此外,如果您使用部分電子郵件並且用戶曾更改其電子郵件,則必須返回每張表並更新其ID。
您的所有參數都有效,但爲什麼要爲電子郵件附加一張表?他可以使用該ID作爲主鍵,並且只需要一個電子郵件地址欄。有效的數據庫設計,因爲它仍然處於第三範式。你的回答對我來說毫無意義。如果一個用戶可以有多個電子郵件地址,但額外的表格會很好,但是您使用引用鍵作爲表格的主鍵,因此,我沒有看到這樣做會帶來任何性能上的提升,而是爲獲取電子郵件地址所需的聯接性能損失。 – citronas 2010-09-29 18:54:17
你是對的。我錯誤地命名了桌子。應該是'學生'。固定。 – methodin 2010-09-29 18:57:48
更改電子郵件地址是不可能的,因爲它只給學生一次。 – ilhan 2010-09-29 19:02:59
如果電子郵件地址在您的人口中是唯一和靜態的(並確保它確實是),那麼您可以將其設置爲主鍵,並且實際上完全標準化將有利於該選項。然而,有一些陷阱需要考慮:
由於存儲空間和性能我放棄了。 – ilhan 2010-09-29 19:11:36
這隻適用於特定的大學,因此不可能更改電子郵件地址。 – ilhan 2010-09-29 19:01:31
我無法計算我被告知某個特定需求永遠不會改變的次數,只會在以後告訴它。:)即使是這樣,我仍然會使用單獨的ID。正如@Wrikken和@methodin指出的那樣,它會使聯接更快。這樣做真的沒有缺點,是嗎? – bzarah 2010-09-29 19:32:31