Heim > Datenbank > MySQL-Tutorial > Wie kann ich Tabellen mit einem zusammengesetzten Primärschlüssel und einem einspaltigen Fremdschlüssel in MySQL verknüpfen?

Wie kann ich Tabellen mit einem zusammengesetzten Primärschlüssel und einem einspaltigen Fremdschlüssel in MySQL verknüpfen?

Susan Sarandon
Freigeben: 2024-12-26 03:15:11
Original
494 Leute haben es durchsucht

How can I link tables with a composite primary key and a single-column foreign key in MySQL?

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`);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage