Auf der logischen Ebene ist die E-Mail der natürliche Schlüssel. Auf der physischen Ebene passt der natürliche Schlüssel nicht gut zum Primärschlüssel, da Sie eine relationale Datenbank verwenden. Der Grund sind hauptsächlich die von anderen genannten Leistungsprobleme.
Aus diesem Grund kann das Design angepasst werden. Der natürliche Schlüssel wird zum alternativen Schlüssel (EINZIGARTIG, NICHT NULL), und Sie verwenden einen Ersatz- / künstlichen / technischen Schlüssel als Primärschlüssel, der in Ihrem Fall automatisch erhöht werden kann.
Systempuntoout fragte,
Was ist, wenn jemand seine E-Mail-Adresse ändern möchte? Wirst du auch alle Fremdschlüssel ändern?
Das ist , was Kaskadierung ist für.
Ein weiterer Grund für die Verwendung eines numerischen Ersatzschlüssels als Primärschlüssel hängt mit der Funktionsweise der Indizierung auf Ihrer Plattform zusammen. In der InnoDB von MySQL ist beispielsweise allen Indizes in einer Tabelle der Primärschlüssel vorangestellt, sodass die PK so klein wie möglich sein soll (aus Gründen der Geschwindigkeit und Größe). Auch in diesem Zusammenhang ist InnoDB schneller, wenn der Primärschlüssel nacheinander gespeichert wird, und eine Zeichenfolge würde dort nicht helfen.
Eine andere Sache, die Sie berücksichtigen sollten, wenn Sie eine Zeichenfolge als alternativen Schlüssel verwenden, ist, dass die Verwendung eines Hashs der tatsächlichen Zeichenfolge, die Sie möchten, möglicherweise schneller ist und Dinge wie Groß- und Kleinbuchstaben einiger Buchstaben überspringt. (Ich bin tatsächlich hier gelandet, als ich nach einer Referenz gesucht habe, um zu bestätigen, was ich gerade gesagt habe; ich suche immer noch ...)