Bonne nouvelle ! Maintenant que vous maîtrisez les clés primaires et étrangères, vous avez toutes les clés en main pour à présent traduire votre diagramme UML en un modèle relationnel.
Vous verrez, la traduction est automatique : il n’y a qu’à appliquer quelques règles, et le tour est joué !
L’association un-à-plusieurs
Reprenez votre diagramme UML, et regardez l’association entre Oeuvre
et SocieteDeProduction
.
Elle est de type un-à-plusieurs. Certes, c’est aussi une composition. Mais une composition est un cas particulier de un-à-plusieurs. Si vous le voulez bien, oublions donc l’aspect composition pour le moment, pour nous concentrer sur l’aspect un-à-plusieurs :
Comme une société de production produit PLUSIEURS oeuvres, il faut ajouter une clé étrangère dans oeuvre
qui référence la clé primaire desociete_de_production
:
Comme l’associationoeuvre
- societe_de_production
est une composition, elle respecte la règle citée ci-dessus, mais elle a une particularité en plus que je vous explique un peu plus bas. 😉
L’association plusieurs-à-plusieurs
Prenez maintenant l’association oeuvre
- realisateur_ice
, qui est de type plusieurs-à-plusieurs.
Si vous essayez de mettre une clé étrangère dansoeuvre
référençant la clé primaire de realisateur_ice
, alors vous verrez qu’une œuvre ne peut avoir qu’un réalisateur : ce n’est pas ce que vous voulez. Si inversement vous mettez une clé étrangère dans realisateur_ice
, alors vous ne pourrez avoir qu’une œuvre par réalisateur.
Pour mieux visualiser ce problème, je vous conseille cette très bonne vidéo sur Openclassrooms.
Il faut donc trouver une autre solution. 🤓
Vous voyez ici qu’une œuvre peut avoir plusieurs réalisateurs, et qu’un réalisateur peut avoir réalisé plusieurs œuvres.
L’association un-à-un
Mais, c’est la même chose que pour l’association un-à-plusieurs, non ?
Oui, mais il y a un petit détail en plus. 😉 Selon le graphique ci-dessus, un cinéma ne peut avoir qu’une adresse, mais deux cinémas peuvent avoir la même adresse : ce n’est pas ce que l’on veut.
Pour spécifier qu’une adresse ne peut accueillir qu’un seul cinéma, il faut ajouter une contrainte d’unicité sur l’attribut adresse
. Ainsi, la colonne adresse
ne pourra pas contenir deux fois la même valeur. Ce qui signifie que adresse
ne pourra pas contenir deux fois la même référence vers une adresse donnée. Autrement dit, une adresse ne pourra pas accueillir plus d’un cinéma.
En résumé
Une association un-à-plusieurs se traduit en ajoutant une clé étrangère dans la table qui est du côté « plusieurs ». Cette clé étrangère référence la clé primaire de la table qui est du côté « un ».
Une association plusieurs-à-plusieurs se traduit en ajoutant une nouvelle table. La clé primaire de cette nouvelle table sera composée des deux clés étrangères référençant les deux tables à associer.
Pour une association un-à-un entre une table
A
et une tableB
, on utilise aussi une clé étrangère. La clé étrangère est placée dansA
et elle référence la clé primaire deB
.
La première étape de traduction de votre diagramme UML en modèle relationnel est terminée. Bravo ! Vous avez transformé les associations de votre diagramme de classe UML. Voyons, au chapitre suivant comme transformer vos compositions et vos classes d'associations.