Ist es schlecht Benutzernamen als Primärschlüssel in Datenbank-Design zu verwenden?
-
22-07-2019 - |
Frage
Ich wurde von einem Freund gesagt:
Was eindeutige Schlüssel verwenden Sie? ich hoffe du nicht die gesamten Benutzername zu speichern --- dies wird zu viel Tabellenbereich aufbrauchen! ein eindeutigen Benutzer-ID zu jedem zuweisen (Unique) Benutzernamen und diese Benutzer-ID speichern (Sollte INTEGER UNSIGNED sein auto_increment oder BIGINT UNSIGNED auto_increment). Vergessen Sie nicht, Erstellen Sie einen Verweis
FOREIGN KEY (
userID
) LITERATURusertable
(userID
) in allen Tabellen mit der Benutzer-ID.
Ist die obige Aussage richtig? Warum oder warum nicht?
Lösung
Ich glaube, er (aus dem falschen Grund) richtig ist, weil Primärschlüssel nicht ändern kann, aber username
kann sich ändern. So sollten Sie userid
verwenden, weil es nicht ändern würde.
Andere Tipps
Er ist die richtige für den falschen Gründen. Der Tabellenbereich ist sekundär auf die Tatsache, dass Ihre App später Mandat könnte, dass Benutzernamen geändert werden kann oder sogar stoppen einzigartig zu sein (man könnte eine Anwendung vorstellen, wo eindeutige Benutzernamen werden nicht wie Stack-Überlauf erforderlich,) und damit Ihre App großen Refactoring und müssten Datenmigration statt einer leichten Veränderung in dem anderen (integer PK) Fall.