Tabellen mit zusammengesetzten Primär- und Fremdschlüsseln verknüpfen
Im Bereich des SQL-Datenbankdesigns kann es vorkommen, dass der Primärschlüssel einer Tabelle Folgendes enthält mehrere Spalten, die einen zusammengesetzten Schlüssel bilden. Das Herstellen von Beziehungen zwischen solchen Tabellen mithilfe von Fremdschlüsseln kann eine schwierige Aufgabe sein.
Stellen Sie sich das gegebene Szenario mit zwei Tabellen vor, „Tutorial“ und „Gruppe“. Die Tabelle „tutorial“ verfügt über einen zusammengesetzten Primärschlüssel, der aus „beggingTime“, „day“ und „tutorId“ besteht, während die Tabelle „group“ über einen automatisch inkrementierenden Primärschlüssel „groupId“ verfügt. Es stellt sich die Frage: Wie können wir diese Tabellen nahtlos in Beziehung setzen?
Die MySQL-Dokumentation bietet eine Lösung: Es ist möglich, eine Fremdschlüsselzuordnung in „Gruppe“ zu erstellen, die auf den zusammengesetzten Primärschlüssel in „Tutorial“ verweist. Dies erfordert jedoch das Hinzufügen zusätzlicher Spalten zur „Gruppen“-Tabelle, eine für jeden entsprechenden Primärschlüssel in „Tutorial“.
Zum Beispiel würde das Hinzufügen dieser Spalten und das Deklarieren des Fremdschlüssels in der „Gruppen“-Tabelle eine Einrichtung ergeben die Beziehung:
ALTER TABLE `group` ADD COLUMN `beggingTime` time NOT NULL; ALTER TABLE `group` ADD COLUMN `day` varchar(8) NOT NULL; ALTER TABLE `group` ADD COLUMN `tutorId` int(3) NOT NULL; ALTER TABLE `group` ADD FOREIGN KEY (`beggingTime`, `day`, `tutorId`) REFERENCES `tutorial`(`beggingTime`, `day`, `tutorId`);
Es ist erwähnenswert, dass dieser Ansatz aus Leistungssicht möglicherweise nicht optimal ist. SQL-Datenbank-Engines sind für Primärschlüssel optimiert, die aus einzelnen Spalten bestehen. Erwägen Sie daher eine Neugestaltung der „Tutorial“-Tabelle, um einen Ersatz-Primärschlüssel anstelle eines zusammengesetzten Primärschlüssels zu verwenden. Diese Strategie wird die Leistung verbessern, da sie besser mit der Art und Weise übereinstimmt, wie SQL strukturiert ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Tabellen mit einem zusammengesetzten Primärschlüssel und einem einspaltigen Fremdschlüssel in MySQL verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!