Es ist üblich, zwei Tabellen mit automatisch inkrementierten IDs als primäre Tabellen zu verwenden Schlüssel. Das Erstellen einer dritten relationalen Tabelle zum Herstellen einer Beziehung zwischen diesen beiden Tabellen führt jedoch häufig zu Fehlern. Dies liegt daran, dass entweder nur eine automatisch inkrementierte Spalte zulässig ist oder das Entfernen der automatischen Inkrementierung aus den Anfangstabellen die Erstellung von Fremdschlüsseln aufgrund von Typübereinstimmungsproblemen verhindert.
Es ist wichtig, einige grundlegende Missverständnisse auszuräumen:
Relationale Tabellen müssen eindeutige Zeilen haben, was durch die Verwendung automatisch inkrementierter IDs nicht garantiert werden kann Primärschlüssel. Um eine relationale Tabelle zu erstellen, müssen wir einen echten Primärschlüssel identifizieren, der aus Datenattributen besteht, die jede Zeile eindeutig identifizieren.
Schritt 1: Definieren Sie einen echten Primärschlüssel
Identifizieren Sie die Datenattribute, die zusammen die Zeilen in jeder Tabelle eindeutig unterscheiden. Deklarieren Sie eine eindeutige Einschränkung für diese Felder, um doppelte Zeilen zu verhindern.
Schritt 2: Eliminieren Sie das ID-Feld
Sobald eindeutige Zeilen sichergestellt sind, werden das überflüssige ID-Feld (und seine unterstützender Index) wird unnötig und kann entfernt werden.
Schritt 3: Erstellen Sie den Assoziativ Tabelle
Die dritte Tabelle, die die beiden Primärtabellen verbindet, sollte einen zusammengesetzten Primärschlüssel haben, der aus den Primärschlüsseln beider übergeordneter Tabellen besteht. Dies stellt eindeutige Zeilen in der assoziativen Tabelle sicher.
Angenommen, wir haben zwei Tabellen: Benutzer und Sport. Um eine Beziehung zwischen ihnen herzustellen, erstellen wir eine dritte Tabelle user_sport:
CREATE TABLE user ( user_name CHAR(16) NOT NULL PRIMARY KEY, name_first CHAR(30) NOT NULL, name_last CHAR(30) NOT NULL, birth_date DATE NOT NULL ); CREATE TABLE sport ( sport_code CHAR(4) NOT NULL PRIMARY KEY, name CHAR(30) NOT NULL ); CREATE TABLE user_sport ( user_name CHAR(16) NOT NULL, sport_code CHAR(4) NOT NULL, start_date DATE NOT NULL, PRIMARY KEY (user_name, sport_code), FOREIGN KEY (user_name) REFERENCES user (user_name), FOREIGN KEY (sport_code) REFERENCES sport (sport_code) );
In diesem Beispiel:
Durch die Befolgung dieser Prinzipien können wir relationale Tabellen mit eindeutigen Zeilen erstellen, die Datenintegrität sicherstellen und die Probleme vermeiden, die durch die Verwendung automatisch inkrementierter IDs als Primärschlüssel entstehen.
Das obige ist der detaillierte Inhalt vonWie erstellt man korrekt relationale Tabellen ohne automatisch inkrementierende IDs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!