Une relation un-à-plusieurs dans une base de données se produit lorsque chaque enregistrement de la table A peut avoir plusieurs enregistrements liés dans la table B, mais chaque enregistrement de la table B ne peut avoir qu'un seul enregistrement correspondant dans la table A.
Une relation un-à-plusieurs dans une base de données est la conception de base de données relationnelle la plus courante et est au cœur d'une bonne conception.
Les bases de données peuvent également implémenter une relation un-à-un et une relation plusieurs-à-plusieurs.
Exemple de relation un-à-plusieurs
Considérez la relation entre un enseignant et les cours qu'il enseigne. Un enseignant peut enseigner plusieurs classes, mais le cours n'aura pas la même relation avec l'enseignant.
Par conséquent, pour chaque enregistrement dans une table Enseignants, il peut y avoir plusieurs enregistrements dans la table Cours. Cet exemple illustre une relation un-à-plusieurs: un enseignant à plusieurs cours.
Pourquoi établir une relation un-à-plusieurs est important
Pour représenter une relation un-à-plusieurs, vous avez besoin d'au moins deux tables. Voyons pourquoi.
Adhésion à la première conception de forme normale
Peut-être avons-nous créé un tableau dans lequel nous voulons enregistrer le nom et les cours enseignés. Nous pourrions concevoir un tableau des enseignants et des cours comme celui-ci:
Teacher_ID | Nom_du_professeur | Cours |
---|---|---|
Teacher_001 | Carmen | Biologie |
Teacher_002 | Véronique | Mathématiques |
Teacher_003 | Jorge | Anglais |
Et si Carmen enseigne deux cours ou plus ? Nous avons deux options avec cette conception. Nous pourrions l'ajouter au disque existant de Carmen, comme ceci:
Teacher_ID | Professeur_Nom | Cours |
---|---|---|
Teacher_001 | Carmen | Biologie, Mathématiques |
Teacher_002 | Véronique | Mathématiques |
Teacher_003 | Jorge | Anglais |
Cependant, la conception ci-dessus n'est pas flexible et peut entraîner des problèmes ultérieurement lorsque vous insérez, modifiez ou supprimez des données. Cela rend difficile la recherche de données.
Cette conception viole également le premier principe de normalisation de la base de données, First Normal Form (1NF), qui stipule que chaque cellule du tableau doit contenir une seule donnée discrète.
La deuxième règle de la forme normale
Une autre alternative de conception pourrait être d'ajouter un deuxième enregistrement pour Carmen:
Professeur_ID | Professeur_Nom | Cours |
---|---|---|
Teacher_001 | Carmen | Biologie |
Teacher_001 | Carmen | Mathématiques |
Teacher_002 | Véronique | Mathématiques |
Teacher_003 | Jorge | Anglais |
Cette approche adhère à 1NF mais reste une conception de base de données médiocre car elle introduit de la redondance et pourrait gonfler inutilement une grande base de données. Plus important encore, les données pourraient devenir incohérentes.
Par exemple, et si le nom de Carmen changeait ? Quelqu'un travaillant avec les données peut mettre à jour son nom dans un enregistrement et ne pas le mettre à jour dans le second enregistrement.
Cette conception enfreint la norme Second Normal Form (2NF), qui adhère à 1NF et doit également éviter les redondances de plusieurs enregistrements. La règle 2NF y parvient en séparant des sous-ensembles de données en plusieurs tables et en créant une relation entre elles.
Comment concevoir une base de données avec des relations un-à-plusieurs
Pour implémenter une relation un-à-plusieurs dans la table Enseignants et Cours, divisez les tables en deux et liez-les à l'aide d'une clé étrangère.
Ici, nous avons supprimé la colonne Cours dans le tableau Enseignants:
Professeur_ID | Professeur_Nom |
---|---|
Teacher_001 | Carmen |
Teacher_002 | Véronique |
Teacher_003 | Jorge |
Et voici le tableau des cours. Notez que sa clé étrangère, Teacher_ID, relie un cours à un enseignant dans la table Teachers:
Course_ID | Course_Name | Teacher_ID |
---|---|---|
Cours_001 | Biologie | Teacher_001 |
Cours_002 | Mathématiques | Teacher_001 |
Cours_003 | Anglais | Teacher_003 |
Nous avons développé une relation entre les tables Enseignants et Cours à l'aide d'une clé étrangère. Cet arrangement nous dit que Carmen enseigne à la fois la biologie et les mathématiques et que Jorge enseigne l'anglais.
Nous pouvons voir comment cette conception évite toute redondance possible, permet aux enseignants individuels d'enseigner plusieurs cours et met en œuvre une relation un-à-plusieurs.