2009-08-20 2 views
0

Vielen Dank für Sie alle Antworten.MySQL einzigartige Indizes Design

ich lerne, wie ich werde - so lerne ich aber immer noch einen langen Weg zu gehen. Für die Arbeit verwenden wir hauptsächlich MySQL für unsere Datenbanken - Web-Entwicklung. Ich habe eine Frage bezüglich eindeutiger Indizes - wann man sie richtig verwendet und wie.

Ich bin sicher, ziemlich verstehe ich ihren Zweck - eine Spalte als "nicht duplizierte" Spalte zu deklarieren, auch kein Wert kann zweimal in der Tabelle für diese bestimmte Spalte existieren. Wenn ein Insert/Update versucht wird, das gegen diese Indexregel verstößt, schlägt es fehl.

Ich erstelle ein Benutzersystem für eine Website, und ich entwerfe die Datenbanktabellen für das System. Ein Tisch ist ein „Benutzer“ Tabelle - hält Benutzer

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

Ich habe einen eindeutigen Index für die E-Mail "erstellt wurde, weil jede E-Mail für jeden Benutzer unterschiedlich sein müssen - es wird als ihre Log-in verwendet werden. Ich möchte jedoch auch einen eindeutigen Index für "Nachname", "Vorname" und "E-Mail" erstellen, da keine zwei Benutzer die gleiche Kombination dieser drei haben sollten. Soll ich einen anderen eindeutigen Index für diese Regel erstellen oder nur einen für diese drei erstellen? Ist es falsch, Spalten in Indizes zu wiederholen?

Antwort

6

Während es in einigen Fällen nicht schlecht ist, eine Spalte in mehreren Indizes zu haben, ist es redundant für das, was Sie versuchen zu tun.

Da Sie nicht ein Duplikat der E-Mail-Adresse, über die wird niemand in der Lage sein, eine doppelte erste/letzte/E-Mail einreichen, da es bereits die einmalige Überprüfung auf E-Mail fehlschlagen.