Sind Benutzername ein gültiger Kandidat für einen Primärschlüssel?
-
23-09-2019 - |
Frage
Ich weiß Surrogat Primärschlüssel werden in der Regel über die natürlichen Primärschlüssel empfohlen, aber gibt es keine Argumente für Surrogat Primärschlüssel, wenn es um Benutzernamen kommt?
Lösung
Wenn Sie keine doppelten Benutzernamen erhalten möchten, erstellen Sie eine UNIQUE constraint
.
Was passiert, wenn DWong1145
will es den Benutzernamen ändern? Wollen Sie alle Datenbankbeziehungen machen UPDATE CASCADE
sein?
Andere Tipps
NO , sollten Sie Verwendung Benutzernamen nur als ein eindeutiger Schlüssel / constant . Benutzername kann geändert werden, gerade und Beispiel:. Es ist eine Marke sein kann, und die Besitzer Anfragen Sie es fallen zu lassen
Es ist ein guter Kandidat in gewissem Sinne, aber Sie haben zu prüfen, wenn Sie es wirklich tun wollen. Zum Beispiel haben Sie einen Benutzer mit einem bestimmten Benutzernamen, dann wird der Benutzer „gelöscht“ (oder als gelöscht markiert). So gibt es eigentlich keinen Grund, einen anderen Benutzer mit demselben Benutzernamen zu erstellen erlaubt, aber es ist bereits „genommen“, da es sich um ein Primärschlüssel ist.
Aus Kundensicht, setzen Sie. Ich möchte nicht mein Benutzername DWong1145 sein.
Ein großer Nachteil einen String als Primärschlüssel hat, unabhängig davon, ob es sich um einen Benutzernamen oder etwas anderes ist, dass alle Fremdschlüsselspalten in dieser Tabelle wird auch Strings sein müssen, was sowohl langsamer und Abfälle mehr Platz.