Une conception de base de données courante consiste à établir des relations entre les tables à l'aide de clés composites. Une clé composite est une combinaison de plusieurs colonnes qui identifie de manière unique un enregistrement dans une table. Dans ce scénario, vous disposez de deux tables, tutoriel et groupe, dans lesquelles vous devez lier la clé unique composite du didacticiel à un champ du groupe.
Selon la documentation MySQL, MySQL prend en charge le mappage de clés étrangères aux clés composites. Cependant, pour établir cette relation, vous devrez créer plusieurs colonnes dans la table de référencement (groupe) pour faire correspondre les colonnes de clé primaire dans la table référencée (tutoriel).
Voici les étapes à suivre pour créer le Mappage de clé étrangère :
-- Alter the 'group' table to add the composite foreign key columns ALTER TABLE `group` ADD COLUMN `beggingTime` time NOT NULL, ADD COLUMN `day` varchar(8) NOT NULL, ADD COLUMN `tutorId` int(3) NOT NULL; -- Add the foreign key constraint ALTER TABLE `group` ADD FOREIGN KEY (`beggingTime`, `day`, `tutorId`) REFERENCES `tutorial`(`beggingTime`, `day`, `tutorId`);
En créant les trois colonnes de clé étrangère (beggingTime, day et tutorId) dans la table de groupe, vous établissez la relation avec le primaire composite saisissez la table du didacticiel. Cela vous permet de joindre et de récupérer des données des deux tables en fonction de la clé composite.
Il est important de noter que même si l'utilisation de clés étrangères composites est techniquement prise en charge, il est généralement recommandé d'utiliser une clé primaire à une seule colonne à la place. En effet, les clés composites peuvent avoir un impact sur les performances et augmenter la complexité de la conception de votre base de données. Si possible, envisagez de réorganiser vos tables pour utiliser une clé primaire à une seule colonne dans le didacticiel.
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!