← Développement

Diagramme de classes et MLD

Sommaire

Le diagramme de classes décrit la structure des données d'une application. Sa transposition en modèle logique donne le schéma de la base.

1. La classe

Une classe regroupe un nom, des attributs et des opérations. En conception de données, on note l'attribut identifiant avec le stéréotype <<identifiant>>.

┌────────────────────────┐
│        Candidat        │
├────────────────────────┤
│ <<identifiant>> num    │
│ nom                    │
│ prenom                 │
│ dateNaissance          │
└────────────────────────┘

2. Associations et cardinalités

Une association relie deux classes. Chaque extrémité porte une multiplicité qui indique combien d'objets de la classe opposée peuvent être liés.

NotationSignification
1Exactement un
0..1Zéro ou un
1..*Un ou plusieurs
0..* ou *Zéro ou plusieurs
0..2Intervalle borné explicite

Piège de lecture : en UML, la multiplicité se lit à l'extrémité opposée à la classe dont on parle. « Un établissement accueille 0..* candidats » se note en plaçant 0..* du côté Candidat. C'est l'inverse de la convention Merise, d'où les confusions fréquentes.

Une association peut elle-même porter des attributs : c'est la classe-association. Un candidat obtient une note à une épreuve — la note n'appartient ni au candidat ni à l'épreuve, mais au lien entre les deux.

3. Associations réflexives

Les associations réflexives (ou auto-associations) sont des associations binaires dont les deux pattes pointent vers la même classe. Toutes les règles habituelles s'appliquent.

┌──────────────────────────┐
│        Personne          │  0..2   « être parent de »
│ <<identifiant>> id      │◄──────┐
│ nom                      │       │
│ prenom                   │       │
│ dateNaissance            │───────┘
└──────────────────────────┘  0..*   « être enfant de »

Autres exemples : un employé encadre d'autres employés, un article en remplace un autre, une catégorie contient des sous-catégories.

4. Agrégats et compositions

AgrégationComposition
SensLien « ensemble / éléments »Lien fort entre l'ensemble et ses composants
SymboleLosange videLosange plein
Cycle de vieLes éléments survivent à l'ensembleLa destruction de l'ensemble détruit obligatoirement ses composants
ExempleUn lycée et ses enseignants : si le lycée ferme, les enseignants existent toujoursUn bâtiment, ses étages et ses salles : détruire le bâtiment détruit les étages

En base de données, une composition se traduit souvent par un ON DELETE CASCADE sur la clé étrangère : la sémantique du modèle se retrouve dans la contrainte d'intégrité.

5. Héritage

Le principe est de regrouper les attributs communs à plusieurs classes dans une classe mère. Les classes qui en héritent sont les classes enfants, et ajoutent leurs attributs spécifiques.

              ┌─────────────────────┐
              │     Enseignant      │
              │ <<identifiant>> id │
              │ nom / adresse       │
              └──────────△──────────┘
                ┌────────┴────────┐
    ┌───────────┴────────┐  ┌─────┴──────────────┐
    │     Titulaire      │  │   Contractuel      │
    │ dateTitularisation │  │ dateDebutContrat   │
    │                    │  │ dateFinContrat     │
    └────────────────────┘  └────────────────────┘

6. Transposition en MLD

Règles de passage du diagramme de classes au modèle logique relationnel :

CasRègle
ClasseDevient une table ; l'identifiant devient la clé primaire
Association 1 — 0..* / 1..*La clé primaire du côté « 1 » migre comme clé étrangère du côté « plusieurs »
Association 0..* — 0..*Création d'une table de liaison dont la clé primaire est la concaténation des deux clés étrangères
Classe-associationDevient la table de liaison, à laquelle on ajoute ses propres attributs
Association 1 — 0..1Clé étrangère du côté optionnel, ou fusion des deux tables
Réflexive 1 — 0..*Clé étrangère vers la même table (ex. idResponsable)
HéritageTrois stratégies : une table par classe, une table unique avec discriminant, ou tables filles portant la clé de la mère

Exemple complet de MLD, avec conventions de notation (clé primaire soulignée, clé étrangère préfixée de #) :

EPREUVE (codeEpreuve, intituleEpreuve, coeffEpreuve)
    codeEpreuve : clé primaire

ETABLISSEMENT (codeEtab, nomEtab, villeEtab)
    codeEtab : clé primaire

CANDIDAT (numCandidat, nomCandidat, prenomCandidat, naissCandidat, #codeEtab)
    numCandidat : clé primaire
    codeEtab : clé étrangère en référence à codeEtab de ETABLISSEMENT

OBTENIR (#numCandidat, #codeEpreuve, note)
    numCandidat, codeEpreuve : clé primaire
    numCandidat  : clé étrangère en référence à numCandidat de CANDIDAT
    codeEpreuve  : clé étrangère en référence à codeEpreuve de EPREUVE

OBTENIR est la traduction d'une classe-association entre CANDIDAT et EPREUVE : sa clé primaire est composée des deux clés étrangères, et l'attribut note vient de l'association elle-même.