Leçon 11 : Modélisation des Relations : Plusieurs à Plusieurs (M:N) et Tables de Jonction
La relation M:N est la plus complexe à modéliser directement, car elle ne peut pas exister naturellement dans la structure relationnelle.
Définition d'une Relation Plusieurs à Plusieurs
Une relation M:N signifie qu'un enregistrement dans la Table A peut être lié à plusieurs enregistrements dans la Table B, et un enregistrement dans la Table B peut être lié à plusieurs enregistrements dans la Table A.
Exemple : Étudiants et Cours
- Un Étudiant peut s'inscrire à plusieurs Cours.
- Un Cours peut être suivi par plusieurs Étudiants.
La Solution : La Table de Jonction
Pour résoudre une relation M:N, nous introduisons une troisième table appelée Table de Jonction (ou Table d'Association/Table Pont). Cette table convertit la relation M:N en deux relations 1:N distinctes.
Étapes d'Implémentation :
- Identifier les deux entités principales (
StudentsetCourses). - Créer une nouvelle table de jonction (
Enrollments). - La table de jonction contient des Clés Étrangères pointant vers les Clés Primaires des DEUX tables originales.
sql -- 1. Table Principale (Students) CREATE TABLE Students ( StudentID INTEGER PRIMARY KEY, StudentName VARCHAR(100) );
-- 2. Table Principale (Courses) CREATE TABLE Courses ( CourseID INTEGER PRIMARY KEY, CourseTitle VARCHAR(100) );
-- 3. Table de Jonction (Enrollments) CREATE TABLE Enrollments ( EnrollmentID INTEGER PRIMARY KEY, -- PK facultative pour le lien lui-même StudentID INTEGER, -- FK 1 (Côté Plusieurs de Student) CourseID INTEGER, -- FK 2 (Côté Plusieurs de Course) EnrollmentDate DATE,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
Désormais, un étudiant peut avoir plusieurs entrées dans Enrollments, et un cours peut avoir plusieurs entrées dans Enrollments.