Notes et transcription du cours Modélisez vos bases de données disponible sur la plateforme Openclassrooms.
Alors. Où en êtes-vous ? Vous avez identifié toutes les classes ainsi que leurs attributs. À ce stade, toutes les colonnes du fichier CSV ont trouvé une place dans votre modélisation. Vous savez par exemple que les informations sur la réalisatrice “Cathy Verney” seront stockées dans la classe Realisateur_ice
, et que la série “Vernon Subutex” sera enregistrée dans la classe SerieTV
.
Mais ces deux informations sont séparées dans deux classes distinctes. Or, il faut que vous puissiez indiquer le lien qui lie “Vernon Subutex” à sa réalisatrice : et à ce stade, ce lien n’est pas encore modélisé.
Vous l’aurez compris, dans ce chapitre, vous allez créer du lien entre les classes.
Pour créer vos associations, je vous propose de tracer des traits qui relient vos classes, et de leur donner un label, de préférence un verbe tel que « réalise », « produit », etc.
Il y a un concept très important quand on définit une association : c’est la notion de multiplicité.
Elle permet de définir si pour notre besoin, un film peut être réalisé par UN SEUL ou par PLUSIEURS réalisateurs, et inversement : si un réalisateur peut produire UN SEUL ou PLUSIEURS films.
Il existe trois types d’associations :
Ensuite, vous pouvez aller plus loin dans la précision des multiplicités.
Par exemple, quand vous dites « au plus 1 », vous pouvez préciser s’il s’agit de « strictement 1 », ou bien « 0 ou 1 ». Aussi, quand vous dites « plusieurs », vous pouvez entendre « 0, 1 ou plus », ou bien « strictement plus que 1 », etc.
Voici comment noter cela :
Au plus 1 :
Notation | Abréviation | Signification |
---|---|---|
0..1 | (pas d'abréviation) | 0 ou 1 |
1..1 | 1 | Exactement 1 |
Plusieurs :
Notation | Abréviation | Signification |
---|---|---|
0..* | * | 0, 1 ou plus |
1..* | (pas d'abréviation) | Au moins 1 |
n..n | n Exactement n (où n est un nombre entier) | |
m..n | (pas d'abréviation) | Au moins m et au plus n (avec m et n nombres entiers tels que m<n) |
Voici comment s’utilisent ces notations :
1..*
) , et un réalisateur peut avoir produit 0, 1 ou plusieurs (noté *
) films :Ajout des multiplicités entre Film et Réalisateur-ice
1
), et une société peut produire 0, 1 ou plusieurs films ( *
) :Les multiplicités entre Film et Société de production
1
), et une adresse donnée ne peut accueillir que 0 ou 1 seul cinéma ( 0..1
) :Les multiplicités entre Cinema et Adresse
Retenez bien de quel côté de l’association placer vos deux multiplicités : ne les inversez pas ! ;)
Le choix du minimum fixé à 0 ou 1 est souvent discutable. Dans l’exemple ci-dessus, considérer qu’un réalisateur peut avoir produit 0, 1 ou plusieurs films, c’est considérer qu’il peut y avoir dans votre BDD un réalisateur qui n’est associé à aucun film.
Si la notion de réalisateur est centrale dans le fonctionnement de votre application, alors vous pouvez décider qu’un réalisateur peut exister sans avoir produit de film.
Mais si la notion de réalisateur est secondaire, alors vous pouvez dire « Non, telle que j’ai conçu mon appli, réalisateur sans film, ça ne sert à rien », et donc choisir une multiplicité de 1..*
au lieu de *
.
Voici donc votre modélisation avec les multiplicités :
Par exemple, on dira qu’une société de production peut produire 0, 1 ou plusieurs films. Cela correspond à une multiplicité de 0..*
.
Et concrètement, dans vos données :
Il arrive de devoir donner des caractéristiques à une association.
Peut-être qu’intuitivement, vous aviez envie de dessiner ce schéma conceptuel…
… au lieu de dessiner trois classes : Film
, Tournage
et Lieu
, comme nous l’avons fait précédemment.
Et vous auriez eu raison ! Mais dans ce cas, vous n’auriez pas réussi à placer les colonnes Date de début
et Date de fin
. En fait, ces deux dates sont des caractéristiques de l’association qui unit un lieu à un film.
Eh bien, sachez qu’il est possible de donner des caractéristiques à un lien, grâce à une classe d’association. Ici, comme l’association s’appelle « est tourné », vous pouvez appeler votre classe « Tournage » :
L'ajout de la classe d'association
Ce n’est pas très différent de ce que l’on avait avant, non ?
C’est vrai : les deux options sont similaires et acceptables, et votre choix n’aura pas d’incidence quand vous entrerez votre modélisation dans le SGBDR.
Il existe un type d’association particulier, appelé l’association de composition. Celle-ci s’utilise quand une classe est un composant d’une autre classe.
Prenez l’exemple d’un circuit électronique : il est composé de composants électroniques : diodes, condensateurs, microprocesseurs, etc. Ainsi, on peut avoir une association de composition entre une classe CircuitElectronique
et une classe CompostantElectronique
.
Imaginez que votre circuit soit défaillant et que vous deviez donc le jeter. Dans ce cas, vous jetez automatiquement tous ses composants. C’est là la particularité de la composition : le composant (une diode, par exemple) ne peut exister que via son composite (circuit électronique).
Pour votre appli, vous pourriez considérer qu’un tournage est un composant du film. En effet, rien ne sert d’enregistrer dans votre BDD un tournage si vous ne savez pas à quel film il est associé.
On peut aussi avoir une composition entre Film
et SocieteDeProduction
. En effet, un film ne peut exister si une société ne l'a pas produit. De plus, il existe parfois des films différents ayant le même nom (exemple : au moins quatre films portent le titre Home). Ainsi, pour identifier un film de manière certaine, on a besoin de son titre mais aussi du nom de sa société de production, ce qui prouve le lien de dépendance entre ces deux classes.
Voici comment cette composition aurait été représentée : avec un losange noir (plein) du côté du composite :
Représentation d'une composition
La composition s’emploie quand ces trois caractéristiques sont réunies :
0..1
, 1
, *
ou 1..*
), et le composant appartient à un et un seul composite (la multiplicité est donc forcément 1
, rien d’autre) : on dit que le composite n’est pas partageable.Tadaaaaaaam ! Je vous présente donc, en exclusivité, la dernière version de notre modélisation UML !
Le modèle de conception de données
Par exemple, vous pouvez être tenté de dire qu’un réalisateur travaille pour une société de production lorsqu’il réalise un film. On aurait donc ceci :
Cependant, on peut déduire l’association travaille pour
grâce aux deux autres associations. En effet, si on sait que “Le Temps des égarés” est réalisé par “Virginie Sauveur” et produit par “Delante Productions”, alors on déduit que “Virginie Sauveur” a travaillé pour “Delante Productions”.
Voici un diagramme de classes représentant des concerts donnés par des groupes de musique. Déterminez les multiplicités possibles des associations :
Le diagramme de classe des concerts
Vous avez réalisé l’exercice ? Découvrez ma solution ci-dessous.
0..1
, 1
, 1..*
, etc.Voilà, vous avez posé les bases de votre diagramme UML. Maintenant, il ne reste plus qu’à le perfectionner grâce aux possibilités du langage UML.