Christian Kruse: Fragwürdige Literatur (web & mobile Developer, Ausgabe 11/2013)

Beitrag lesen

Moin Encoder,

In der MySQL-Tabelle wird die E-Mail-Adresse als Primärschlüssel verwendet und behauptet, damit wäre sichergestellt, dass sie eindeutig ist.
Eindeutig ist sie damit ja schon. Aber ob die unbedingt Kandidat für einen Primärschlüssel ist? Das sollte vielmehr ein Auto-Wert sein würd ich sagen.

Depends.

Das Ziel von Datenbank-Design ist es, die natürliche Form der Daten abzubilden. Da ist die E-Mail-Adresse durchaus ein valider Primary Key. Man muss sich nur im klaren darüber sein, dass eine Änderung der E-Mail-Adresse dadurch ggfls. Problematisch wird, etwa bei vielen Foreign-Key-Constraints. Es kann sich also lohnen, einen künstlichen Primär-Schlüssel einzuführen. Muss aber nicht.

Ein paar Zeilen Später wird gesagt, dass der Benutzername natürlich auch eindeutig sein soll und man das nachher im PHP-Script prüfen soll - wozu?
Eindeutige Benutzernamen machen das Einloggen um einiges einfacher :-) Prüfen ist doch ok, besser als wenn die DB einem das um die Ohren haut.

Selber prüfen (im Sinne von SELECT und nachfolgender Script-Verarbeitung) hat zur Folge, dass du entweder die Tabelle (sic! Nicht nur eine Reihe, sondern die ganze Tabelle) Schreib-Locken musst oder dass du eine Race Condition schaffst.

Siehe auch [http://en.wikipedia.org/wiki/Isolation_%28database_systems%29@title=Isolation].

LG,
 CK