2010-01-27 1 views

Antwort

8

Wenn Sie keine doppelten Benutzernamen erhalten möchten, erstellen Sie eine UNIQUE constraint.

Was ist, wenn DWong1145 den Benutzernamen ändern möchte? Wollen Sie, dass alle Datenbankbeziehungen UPDATE CASCADE sind?

+0

Meine Frage ist im Kontext eines Authentifizierungssystems, das nicht funktioniert Erlaube Benutzernamenänderungen. Ich hätte das erwähnen sollen. –

+1

@Emanuil - um Jeff Goldblum in Jurassic Park zu zitieren, "Das Leben findet einen Weg." Wenn Sie Ihren Benutzernamen eines Tages ändern müssen, bereut Sie vielleicht gerade diesen Moment ... –

+0

"' Information' sollte nicht als Schlüssel verwendet werden; 'data' kann"; "Daten" müssen nicht geändert werden, als ob sie immer von einem Programm verstanden werden sollen. Was passiert, wenn ich SO anrufe und um die Änderung meines Benutzers bit_id_ bitte? Ich kann das nicht, aber ich kann meinen Benutzer _name_ ändern. –

4

Vom Standpunkt des Kunden aus, wetten Sie. Ich möchte nicht, dass mein Benutzername DWong1145 ist.

7

NO, Sie sollten Benutzernamen nur als eindeutigen Schlüssel/Konstante verwenden. Benutzername kann geändert werden, nur und Beispiel: Es kann eine Marke sein und der Besitzer fordert Sie auf, sie fallen zu lassen.

+0

Klingt ein wenig knapp;) Sie * sind * aber richtig. Ich hasse Systeme, auf denen Sie Ihren Benutzernamen nicht ändern können - aber das OP sagte in den Kommentaren, dass er nicht geändert werden soll, also ... –

5

Es ist ein guter Kandidat in gewissem Sinne, aber Sie müssen überlegen, ob Sie es wirklich tun wollen. Wenn Sie beispielsweise einen Benutzer mit einem bestimmten Benutzernamen haben, wird der Benutzer "gelöscht" (oder als gelöscht markiert). Es gibt also eigentlich keinen Grund, nicht zuzulassen, dass ein anderer Benutzer mit demselben Benutzernamen erstellt wird, aber es ist bereits "genommen", da es sich um einen Primärschlüssel handelt.

2

Ein großer Nachteil einer Zeichenfolge als Primärschlüssel, unabhängig davon, ob es ein Benutzername oder etwas anderes ist, ist, dass alle Fremdschlüsselspalten, die auf die Tabelle verweisen, auch Zeichenfolgen sein müssen, was sowohl langsamer ist als auch mehr Speicherplatz verschwendet.

+0

muss es nicht langsamer sein. Eine gute Datenbank-Engine könnte alle Zeichenfolgenwerte vorrashen. Darüber hinaus wird die Verwendung von natürlichen Schlüsseln wahrscheinlich viele Joins in der Anwendung überflüssig machen und somit Abfragen schneller machen. Ich akzeptiere, dass natürliche Schlüssel im Allgemeinen mehr Raum verbrauchen, aber ehrlich, Raum ist billig und reichlich. –

Verwandte Themen