2009-08-20 196 views
0

謝謝大家的回答。MySQL唯一索引設計

我正在學習,因爲我正在學習,所以我正在學習,但仍有很長的路要走。爲了工作,我們主要將MySQL用於我們的數據庫 - Web開發。我有一個關於獨特索引的問題 - 何時正確使用它們以及如何使用它們。

我敢肯定,我明白他們的目的 - 將列聲明爲「非重複」列,也就是說,對於該特定列,表中不能存在兩次值。如果嘗試插入/更新違反該索引規則,則失敗。

我正在爲一個站點創建一個用戶系統,並且正在爲系統設計數據庫表。一個表是一個「用戶」表 - 保存用戶

users 
----------------- 
int(4) usersID primary key 
varchar(255) lastName 
varchar(255) firstName 
varchar(255) email unique 
varchar(255) password 

我已經在「電子郵件」創建唯一索引,因爲每個電子郵件必須爲每個用戶的不同 - 它會被用來作爲他們的日誌項。但是,我還想爲'lastName','firstName'和'email'創建一個唯一索引,因爲沒有兩個用戶應該具有這三者的相同組合。我應該爲該規則創建另一個唯一索引還是僅爲這三個創建一個索引?在索引中重複列是不是很糟糕?

回答

6

儘管在某些情況下在多個索引中有一列是不錯的,但對於您嘗試執行的操作而言,這是多餘的。

由於您不允許複製電子郵件地址,因此無法提交重複的第一個/最後一個/電子郵件,因爲它已經無法對電子郵件進行UNIQUE檢查。