Maison > base de données > tutoriel mysql > Comment puis-je lier des tables avec une clé primaire composite et une clé étrangère à une seule colonne dans MySQL ?

Comment puis-je lier des tables avec une clé primaire composite et une clé étrangère à une seule colonne dans MySQL ?

Susan Sarandon
Libérer: 2024-12-26 03:15:11
original
444 Les gens l'ont consulté

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

Liaison de tables avec des clés primaires et étrangères composites

Dans le domaine de la conception de bases de données SQL, vous pouvez rencontrer des situations où la clé primaire d'une table comprend plusieurs colonnes, formant une clé composite. Établir des relations entre de telles tables à l'aide de clés étrangères peut être une tâche difficile à parcourir.

Considérez le scénario donné impliquant deux tables, « tutoriel » et « groupe ». La table 'tutorial' comporte une clé primaire composite composée de 'beggingTime', 'day' et 'tutorId', tandis que la table 'group' possède une clé primaire à incrémentation automatique 'groupId'. La question se pose : comment relier ces tables de manière transparente ?

La documentation MySQL propose une solution : il est possible de créer un mappage de clé étrangère dans 'group' faisant référence à la clé primaire composite dans 'tutorial'. Cependant, cela implique d'ajouter des colonnes supplémentaires à la table « groupe », une pour chaque clé primaire correspondante dans le « tutoriel ».

Par exemple, ajouter ces colonnes et déclarer la clé étrangère dans la table « groupe » établirait la relation :

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`);
Copier après la connexion

Il convient de noter que cette approche n'est peut-être pas optimale du point de vue de la performance. Les moteurs de base de données SQL sont optimisés pour les clés primaires constituées de colonnes uniques. Par conséquent, envisagez de reconcevoir la table « didacticiel » pour utiliser une clé primaire de substitution plutôt qu'une clé primaire composite. Cette stratégie améliorera les performances car elle s'aligne mieux sur la façon dont SQL est structuré.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal