Nehmen wir an, ich brauche eine einfache Tabelle mit Konto-ID und keine weiteren Informationen. Es gibt zwei Möglichkeiten, dies zu tun:
%Vor%Oder um einen numerischen Primärschlüssel hinzuzufügen:
%Vor%Was sind die Vorteile / Nachteile beider Ansätze und welche würden Sie wählen und warum?
Welche Auswirkungen hat die erste Lösung auf die Wartbarkeit (was ist, wenn wir die ID für eine einzelne Zeile ändern müssen) und für die Leistung?
Dies läuft auf den Schlüssel Ersatzschlüssel gegenüber natürlichem Schlüssel in der Datenbankwelt hinaus. Siehe zum Beispiel hier , hier und hier für Texte zum Thema. Ich denke, dass beide Optionen gültig sind, aber in diesem Fall würde ich AccountID
als einen natürlichen Schlüssel wählen (vorausgesetzt, dass AccountID
für jedes Konto einzigartig ist, nicht null ist und keinen Änderungen unterliegt), weil es bedeutet weniger Overhead. In diesem Fall sehe ich keinen Mehrwert für einen Ersatzschlüssel.
Natürliche Schlüssel:
Ersatzschlüssel:
Der Unterschied besteht darin, dass die PRIMARY KEY-Einschränkung eine NOT NULL CONSTRAINT impliziert / erzwingt. Im ersten Beispiel wird varchar(255)
effektiv in varchar(255) NOT NULL
Ergebnis:
%Vor%Die erste Einfügung schlägt wegen der PK-Bedingung (- & gt; & gt; NOT NULL) fehl; der zweite gelingt.
Tags und Links mysql database database-design schema