• 8 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 5/13/24

Associez vos classes pour garder du lien dans vos données

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érieVernon Subutexsera enregistrée dans la classeSerieTV.

Mais ces deux informations sont séparées dans deux classes distinctes. Or, il faut que vous puissiez indiquer le lien qui lieVernon Subutexà sa réalisatrice : et à présent, ce lien n’est pas encore modélisé.

Vous l’aurez compris, dans ce chapitre, vous allez créer du lien entre les classes.

Constituez vos associations

Pour créer vos associations, je vous propose de tracer des traits qui relient vos classes, et de leur donner un nom, de préférence un verbe tel que « réalise », « produit », etc.

Modélisation avec ajout et nommage des associations entre les classes
Voilà la réponse !

Définissez les multiplicités de vos associations

Il y a un concept très important quand on définit une association : c’est la notion de multiplicité.

Elle permet de dire si 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 :

  • Plusieurs à plusieurs (many-to-many) :

    • un film peut être réalisé par plusieurs réalisateurs, et un réalisateur peut avoir réalisé plusieurs films ;

  • Un à plusieurs (one-to-many) ou plusieurs à un (many-to-one) :

    • un film n’est réalisé que par au plus 1 société de production, et une société peut produire plusieurs films ;

  • Un à un (one-to-one) :

    • vous n’avez pas ce cas dans vos données, mais c’est lorsqu’une instance d’une classe A ne peut être associée qu’à au plus 1 instance d’une classe B. Et qu’une instance de B ne peut être associée qu’à au plus 1 instance de A.
      Par exemple, un cinéma n’a qu’une seule adresse, et une adresse donnée ne peut accueillir qu’un seul cinéma.

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 :

  • Un film peut être réalisé par au moins 1 réalisateur (noté   1..*  ) , et un réalisateur peut avoir produit 0, 1 ou plusieurs (noté   *  ) films :

Screenshot de la table, zoomant sur Film et Réalisateur-ice, avec les multiplicités d'annotées.
Ajout des multiplicités entre Film et Réalisateur-ice
  • Un film est réalisé par exactement 1 société de production (   1  ), et une société peut produire 0, 1 ou plusieurs films (   *  ) :

    Screenshot de la table, zoomant sur Film et Société de production, avec les multiplicités d'annotées
    Les multiplicités entre Film et Société de production
  • Un cinéma a exactement 1 adresse (   1  ), et une adresse donnée ne peut accueillir que 0 ou 1 seul cinéma (   0..1  ) :

    Screenshot de la table, zoomant sur Cinema et Adresse, avec les multiplicités d'annotées
    Les multiplicités entre Cinema et Adresse

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 :

Caractérisez vos associations grâce aux classes d’association

Il arrive de devoir donner des caractéristiques à une association.

Peut-être qu’intuitivement, vous aviez envie de dessiner ce schéma conceptuel...

Screenshot du schéma conceptuel avec les tables Lieu et Film
Le schéma conceptuel

... au lieu de dessiner trois classes : Film,TournageetLieu, 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ébutetDate 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 » :

Screenshot du précédent schéma conceptuel, avec l'ajout de la table 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.

Renforcez vos associations grâce à la composition

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 classeCircuitElectroniqueet une classeCompostantElectronique.

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 entreFilmetSocieteDeProduction. 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 entre les tables Film et SocieteDeProduction. On y voit un sur le trait les reliants toutes les deux, un losange noir, du côté de SocieteDeProduction.
Représentation d'une composition

La composition s’emploie quand ces trois caractéristiques sont réunies :

  1. Le composite est « composé » de composants.

  2. L’association de composition est de type un-à-plusieurs, car le composite peut avoir plusieurs composants (0..11*ou1..*), et le composant appartient à un et un seul composite (la multiplicité est donc forcément1, rien d’autre) : on dit que le composite n’est pas partageable.

  3. Il y a un lien entre le cycle de vie du composite et du composant : un composant disparaît dès que l'objet composite auquel il appartient est supprimé.

Tadaaaaaaam ! Je vous présente donc, en exclusivité, la dernière version de votre modélisation UML ! 😃

Représentation du modèle de conception de données avec l'ensemble des tables Lieu, SocieteDeProduction, Film, Tournage, Realisateur-ice
Le modèle de conception de données

Prenez garde à la redondance !

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 :

représentation du schéma conceptuel
Le schéma conceptuel

Cependant, on peut déduire l’associationtravaille pourgrâ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.

À vous de jouer

Voici un diagramme de classes représentant des concerts donnés par des groupes de musique. Déterminez les multiplicités possibles des associations :

4 tables. Groupe de Musique, avec la caractéristique Nom : Texte. Donne Concert. Caractéristique dateDuConcert : Date.  Accueil SalleDeConcert. Caractéristiques nom : texte. capacite : Numérique. Est situé Adresse.
Le diagramme de classe des concerts

Voici une réponse possible :

Même diagramme, où les associations ont été ajoutées :  entre GroupeDeMusique et Concert, sur le lien Donne : . 1...* et *  Entre Concert et SalleDeConcert, sur le lien Accueil : * et 1.  Entre SalleDeConcert et Adresse, sur le lien Est situé : * et
Le diagramme de classe des concerts avec les associations
  • Un groupe de musique peut donner 0, 1 ou plusieurs concerts ;

  • Un même concert peut accueillir plusieurs groupes (mais au moins 1) ;

  • Par contre, un même concert ne peut se tenir que dans une seule salle de concert ;

  • Cette salle peut quant à elle accueillir 0, 1 ou plusieurs concerts (à des dates différentes) ;

  • Une salle de concert a obligatoirement une et une seule adresse ;

  • Mais une adresse donnée n’accueille pas forcément de salle de concert, ou peut en accueillir plusieurs.

En résumé

  • Graphiquement, on modélise les associations entre les classes par des traits qui les relient.

  • Une association peut être de trois types :

    • plusieurs-à-plusieurs ;

    • un-à-plusieurs ;

    • un-à-un.

  • On précise ces trois types grâce aux multiplicités :0..111..*, etc.

  • Une association peut avoir des caractéristiques, que l’on indique dans une classe d’association.

  • Pour indiquer qu’une association est de type « composant », on utilise une composition.

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. 

Example of certificate of achievement
Example of certificate of achievement