Relation plusieurs à plusieurs (many to many)
Relation plusieurs à plusieurs (many to many)
Une relation plusieurs à plusieurs est une relation entre deux tables dans une base de données relationnelle où plusieurs lignes d’une table peuvent être liées à plusieurs lignes de l’autre table.
Par exemple, si vous avez une table étudiants et une table cours, une relation plusieurs à plusieurs entre ces deux tables signifie qu’un étudiant peut être inscrit à plusieurs cours et qu’un cours peut avoir plusieurs étudiants inscrits.
Pour créer une relation plusieurs à plusieurs entre deux tables dans MySQL, vous devez utiliser une table intermédiaire (également appelée table de jonction ou table associative) pour stocker les associations entre les deux tables. Cette table intermédiaire contient des clés étrangères faisant référence aux clés primaires des deux tables impliquées dans la relation.
Voici un exemple de création d’une relation plusieurs à plusieurs entre une table étudiants et une table cours:
CREATE TABLE étudiants (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL
);
CREATE TABLE cours (
id INT AUTO_INCREMENT PRIMARY KEY,
titre VARCHAR(255) NOT NULL
);
CREATE TABLE inscriptions (
étudiant_id INT,
cours_id INT,
FOREIGN KEY (étudiant_id) REFERENCES étudiants(id),
FOREIGN KEY (cours_id) REFERENCES cours(id)
);
Dans cet exemple, nous avons créé trois tables: étudiants, cours et inscriptions. La table étudiants a une colonne id qui est la clé primaire de la table. La table cours a également une colonne id qui est la clé primaire de la table. La table inscriptions est la table intermédiaire qui stocke les associations entre les étudiants et les cours. Cette table a deux colonnes: étudiant_id et cours_id, qui sont des clés étrangères faisant référence aux colonnes id des tables étudiants et cours, respectivement.
Pour insérer des données dans ces trois tables et créer des liens entre elles, vous pouvez utiliser des requêtes INSERT pour insérer des données dans les tables étudiants et cours, puis utiliser des requêtes INSERT pour insérer des données dans la table inscriptions, en spécifiant les valeurs des clés étrangères pour lier les lignes des deux autres tables. Par exemple, pour insérer un étudiant, un cours et une inscription liant cet étudiant à ce cours, vous pouvez utiliser les requêtes suivantes:
INSERT INTO étudiants (nom) VALUES ('Alice');
INSERT INTO cours (titre) VALUES ('Mathématiques');
INSERT INTO inscriptions (étudiant_id, cours_id) VALUES (1, 1);
Ces requêtes insèrent un nouvel étudiant dans la table étudiants, un nouveau cours dans la table cours, puis une nouvelle inscription dans la table inscriptions, en spécifiant les valeurs des colonnes étudiant_id et cours_id pour lier l’étudiant et le cours que nous venons d’insérer.
J’espère que ces informations vous seront utiles pour comprendre comment créer une relation plusieurs à plusieurs avec MySQL.
schéma pour illustrer une relation plusieurs à plusieurs (many-to-many) avec MySQL:
+------------+ +----------------+ +------------+
| Étudiants | | Inscriptions | | Cours |
+------------+ +----------------+ +------------+
| # id | | - étudiant_id | | # id |
| - nom |-----| - cours_id |-----| - titre |
+------------+ +----------------+ +------------+
Dans ce schéma, nous avons trois entités: Étudiants, Inscriptions et Cours. L’entité Étudiants a un attribut id qui est la clé primaire de l’entité. L’entité Cours a également un attribut id qui est la clé primaire de l’entité. L’entité Inscriptions est l’entité intermédiaire qui stocke les associations entre les étudiants et les cours. Cette entité a deux attributs: étudiant_id et cours_id, qui sont des clés étrangères faisant référence aux attributs id des entités Étudiants et Cours, respectivement.
Le symbole # devant les attributs id indique que ces attributs sont des clés primaires. Les symboles - devant les autres attributs indiquent que ce sont des attributs ordinaires. Les lignes entre les entités indiquent qu’il existe une relation entre elles, et les symboles ----- indiquent que cette relation est de type plusieurs à plusieurs.
Résumé
Pour créer une relation plusieurs à plusieurs (many-to-many) dans une base de données MySQL, vous pouvez suivre les étapes suivantes:
- Créez les deux tables qui seront impliquées dans la relation. Ces deux tables représenteront les entités qui ont une relation plusieurs à plusieurs entre elles.
- Créez une table intermédiaire (également appelée table de jonction ou table associative) pour stocker les associations entre les deux tables. Cette table intermédiaire contiendra des clés étrangères faisant référence aux clés primaires des deux tables impliquées dans la relation.
- Utilisez la commande
ADD FOREIGN KEYpour définir des contraintes de clé étrangère entre les clés étrangères de la table intermédiaire et les clés primaires des deux autres tables. Ces contraintes garantissent que les valeurs des clés étrangères dans la table intermédiaire correspondent à des valeurs existantes dans les clés primaires des deux autres tables. - Insérez des données dans les trois tables en spécifiant les valeurs appropriées pour les clés étrangères dans la table intermédiaire pour lier les lignes des deux autres tables.