Transformez vos compositions
Une composition, c’est un cas particulier d’association un-à-plusieurs. Comme nous l’avons vu précédemment, il faut donc ajouter 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 ».
Mais vous le savez désormais, ce qui différencie une composition d’une simple association un-à-plusieurs, c’est que le composant ne peut exister sans son composite. Ainsi, on identifie un composant à partir de son composite. C’est-à-dire que la clé primaire du composant inclut/comprend obligatoirement le composite.
C’est le cas entre une œuvre et sa société de production. Car comme vous l’avez vu précédemment, une œuvre se définit par son titre ET par la société qui l’a produite (car il arrive que deux œuvres aient le même titre).
Maintenant que nous avons ajouté une clé étrangèresociete_prod
dans oeuvre
, qui référence societe_de_production
, il est donc possible d’identifier chaque œuvre par son titre et sa société.
Vous avez donc trouvé la dernière des clés primaires de votre modèle relationnel : celle de la table oeuvre
. 😎 La voici : (titre, societe_prod)
.
Maintenant que vous avez la clé primaire de oeuvre
, il faut actualiser la table assoc_oeuvre_real
avec cette nouvelle clé. Voici le résultat :
Transformez vos classes d'associations
Vous l’avez vu dans ce cours, une classe d’association sert à donner des caractéristiques à une association entre deux classes. C’est le cas par exemple pour la classe d’association tournage
, qui caractérise le lien entre une œuvre et un lieu grâce à une date de début et de fin de tournage :
Jusqu’à maintenant, notre table tournage
n’avait que deux attributs. Seules, ces deux dates ne veulent rien dire : il faut pouvoir les lier à l’œuvre et au lieu correspondants. Vous vous en doutez peut-être : il va falloir utiliser des clés étrangères !
Classe d’association sur une relation plusieurs-à-plusieurs
La relation entreoeuvre
et lieu
est de type plusieurs-à-plusieurs.
Vous savez déjà comment traduire une telle relation : en ajoutant une nouvelle table qui contient deux clés étrangères référençant les deux tables de part et d’autre de l’association. Voici ce que cela donnerait :
Mais en plus, il faut ajouter les attributs qui caractérisent cette association. Il suffit d’ajouter ces attributs à notre nouvelle table !
Mais cette nouvelle table dont on parle, c’est notre table tournage
, non ?
Oui, tout à fait, bravo !
Voici donc le résultat final :
Clé primaire
Nous n’avons toujours pas trouvé la clé primaire detournage
!
Effectivement, vous aviez vu au chapitre précédent que les deux dates, à elles seules, ne suffisaient pas à garantir la contrainte d’unicité (deux œuvres peuvent être tournées sur une même période). Mais avec les clés étrangères que nous avons ajoutées, c’est maintenant faisable !
Vous avez vu que par défaut, la clé primaire d’une table issue d’une association plusieurs-à-plusieurs est composée des deux clés étrangères référençant les deux tables de part et d’autre de l’association.
Ici, vous êtes donc sûr que le groupe (titreoeuvre, loc_scene, code_postal) fait partie de la clé primaire de tournage
. Cependant, selon le cas, il faudra parfois ajouter d’autres attributs à la clé. Dans notre cas, il est clairement possible qu’une œuvre soit tournée plusieurs fois au même endroit.
Voici donc une clé primaire possible : (titre_oeuvre, loc_scene, code_postal, date_de_debut)
. En effet, on ne peut pas avoir 2 lignes de tournage
relatives au même film, au même endroit, et commençant le même jour. Si c’est le cas, cela signifie que ces deux lignes correspondent en fait à une seule et unique session de tournage.
Classe d’association sur une relation un-à-plusieurs
Classe d’association sur une relation un-à-un
En résumé
Une composition est traduite de la même manière qu’une association un-à-plusieurs ; mais en plus, on ajoute, à la clé primaire de la table composant, la clé étrangère vers la table composite.
Une classe d’association sur une association plusieurs-à-plusieurs se traduit en une nouvelle table. Cette table contient tous les attributs de la classe d’association, ainsi que deux clés étrangères référençant les deux tables de part et d’autre de l’association.
La seconde étape de traduction de votre diagramme UML en modèle relationnel est terminée. Bravo ! Vous avez transformé vos compositions et vos classes d'associations. Voyons, au chapitre suivant, comment transformer vos relations d'héritage.