Achievement unlocked
Nicolas B.
← Toolbox CDA

Titre pro CDA

Anti-sèche MERISE & UML

Les schémas à connaître pour le dossier projet, tous construits autour du même cas d’école : la gestion d’une bibliothèque. Pour chaque modèle : la théorie, un exemple, les pièges et les bons outils.
00

MERISE

La méthode et ses livrables

MERISE est la méthode, MCD, MLD et MPD sont les livrables qu’elle produit. Née en France dans les années 1970, elle fait concevoir une base de données en trois niveaux d’abstraction, du métier vers la technique.

  1. Niveau 1 · ConceptuelMCDQuoi ?Modélise le métier, sans aucune considération technique. Entités et associations.
  2. Niveau 2 · LogiqueMLDComment ?Traduit le MCD en tables relationnelles avec clés étrangères. Indépendant du SGBD.
  3. Niveau 3 · PhysiqueMPDAvec quoi ?Implémentation dans un SGBD précis. Script SQL exécutable.

L’analogie : construire une maison

  • MERISELa méthode de l’architecte : les règles et les étapes à suivre.
  • MCDLe croquis du besoin client : « 3 chambres, un salon ».
  • MLDLe plan technique, avec dimensions et matériaux génériques.
  • MPDLe plan d’exécution : béton X, vis Y, références précises.
01

MCD

Modèle Conceptuel de Données

Le MCD représente les données métier sans aucune considération technique. Il décrit ce qu’est l’information dans l’organisation, indépendamment de tout SGBD.

Les éléments

ÉlémentDéfinitionReprésentation
EntitéObjet du monde réel (Client, Livre…)Rectangle, nom en MAJUSCULE au singulier
PropriétéCaractéristique d’une entitéDans le rectangle de l’entité
IdentifiantAttribut qui identifie de façon uniqueSouligné, préfixé # ou id
AssociationLien entre entitésEllipse, verbe à l’infinitif
CardinalitéParticipation min, maxPrès du lien entité – association

Les cardinalités

NotationSignificationExemple
0,10 ou 1 fois (optionnel, unique)Un employé a au plus 1 bureau
1,1Exactement 1 fois (obligatoire)Une commande a 1 client
0,N0 ou plusieurs foisUn client a 0 à N commandes
1,NAu moins 1 foisUne facture a au moins 1 ligne

Exemple : la bibliothèque

Des lecteurs empruntent des livres. L’historique doit être conservé : la date d’emprunt est donc portée par l’association elle-même (association porteuse).

Fig. 01 — MCD · Emprunt en bibliothèque

LIVRE

  • idLivre
  • titre
  • auteur
  • isbn
  • anneePublication

LECTEUR

  • idLecteur
  • nom
  • prenom
  • email
  • dateInscription
Un livre peut être emprunté 0 ou N fois, un lecteur emprunte 0 ou N livres. « dateEmprunt » est portée par l’association.

Checklist MCD

  • Toutes les entités ont un identifiant souligné
  • Associations = verbes, entités = noms
  • Des cardinalités des deux côtés de chaque relation
  • Aucune clé étrangère au MCD (les FK, c’est au MLD)
  • Pas d’information en double (normalisation)
02

MLD

Modèle Logique de Données

Le MLD traduit le MCD en tables relationnelles, toujours indépendamment du SGBD. C’est ici qu’apparaissent les clés étrangères, et que les relations N:N deviennent de vraies tables.

Les règles de passage MCD → MLD

N°RègleTransformation
1EntitéDevient une table. L’identifiant devient clé primaire (PK).
2Relation 1:NLa PK du côté « 1 » migre comme FK du côté « N ».
3Relation N:NCréation d’une table d’association, avec une PK composée des 2 FK.
4Relation 1:1FK du côté (0,1) vers (1,1), ou fusion des tables.
5Association porteuseSes attributs rejoignent la table d’association.

Le MCD bibliothèque, traduit

Fig. 02 — MLD · Tables relationnelles

LIVRE

  • PKidLivre
  • titre
  • auteur
  • isbn
  • anneePublication

EMPRUNTER

  • PK/FKidLivre
  • PK/FKidLecteur
  • PKdateEmprunt
  • dateRetour

LECTEUR

  • PKidLecteur
  • nom
  • prenom
  • email
  • dateInscription
La relation N:N du MCD devient la table EMPRUNTER, avec une clé primaire composée (idLivre, idLecteur, dateEmprunt).

La notation textuelle

Souvent demandée en complément du schéma.

LIVRE (idLivre, titre, auteur, isbn, anneePublication)

LECTEUR (idLecteur, nom, prenom, email, dateInscription)

EMPRUNTER (#idLivre, #idLecteur, dateEmprunt, dateRetour)

La clé primaire est soulignée, les clés étrangères sont préfixées par #. La PK d’EMPRUNTER compte trois colonnes, pour garder plusieurs emprunts du même livre par le même lecteur à des dates différentes.

Checklist MLD

  • Chaque entité du MCD → une table
  • Chaque relation N:N → une table d’association
  • Les FK placées côté N pour les relations 1:N
  • Le respect de la 3e forme normale (3FN)
  • PK et FK clairement identifiées dans la notation
03

MPD

Modèle Physique de Données

Le MPD est l’implémentation concrète dans un SGBD précis (MySQL, PostgreSQL…) : c’est le script SQL qui crée la base.

Ce qui apparaît au MPD (et pas avant)

  • Types propres au SGBDVARCHAR(50), INT, DATE, DECIMAL(10,2), BOOLEAN
  • ContraintesNOT NULL, UNIQUE, DEFAULT, CHECK
  • ClésPRIMARY KEY, FOREIGN KEY … REFERENCES …
  • Auto-incrémentAUTO_INCREMENT (MySQL), SERIAL (PostgreSQL)
  • Actions référentiellesON DELETE CASCADE / RESTRICT / SET NULL
  • IndexPour accélérer les requêtes fréquentes

Le script SQL, MySQL 8

gestion_bibliotheque.sql
-- Base : gestion_bibliotheque | SGBD : MySQL 8.0

CREATE TABLE LIVRE (
  idLivre          INT AUTO_INCREMENT PRIMARY KEY,
  titre            VARCHAR(200) NOT NULL,
  auteur           VARCHAR(100) NOT NULL,
  isbn             VARCHAR(13) UNIQUE,
  anneePublication YEAR,
  dateAjout        DATE DEFAULT (CURRENT_DATE),
  INDEX idx_auteur (auteur)
) ENGINE=InnoDB CHARSET=utf8mb4;

CREATE TABLE LECTEUR (
  idLecteur       INT AUTO_INCREMENT PRIMARY KEY,
  nom             VARCHAR(50) NOT NULL,
  prenom          VARCHAR(50) NOT NULL,
  email           VARCHAR(100) UNIQUE NOT NULL,
  dateInscription DATE DEFAULT (CURRENT_DATE),
  actif           BOOLEAN DEFAULT TRUE
) ENGINE=InnoDB CHARSET=utf8mb4;

CREATE TABLE EMPRUNTER (
  idLivre     INT NOT NULL,
  idLecteur   INT NOT NULL,
  dateEmprunt DATETIME NOT NULL,
  dateRetour  DATETIME DEFAULT NULL,
  PRIMARY KEY (idLivre, idLecteur, dateEmprunt),
  FOREIGN KEY (idLivre) REFERENCES LIVRE(idLivre)
    ON DELETE RESTRICT ON UPDATE CASCADE,
  FOREIGN KEY (idLecteur) REFERENCES LECTEUR(idLecteur)
    ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB CHARSET=utf8mb4;

Checklist MPD

  • Le SGBD cible est précisé (MySQL 8, PostgreSQL 15…)
  • Des types adaptés : jamais d’INT pour un code postal français !
  • Les contraintes (NOT NULL, UNIQUE, CHECK) sont définies
  • Des index sur les FK et les colonnes de recherche
  • Des actions ON DELETE / ON UPDATE réfléchies, pas laissées par défaut
04

UML

Le diagramme de classes

UML est un langage de modélisation orienté objet. Le diagramme de classes est le plus demandé en CDA : il décrit les classes, leurs attributs, leurs méthodes et leurs relations. Ce n’est pas un MCD : il ajoute méthodes, visibilités, héritage et interfaces.

Les visibilités

  • +publicaccessible partout
  • –privatela classe seule
  • #protectedla classe et ses sous-classes
  • ~packagele même package

Les relations

  • AssociationLien simple entre classes
  • AgrégationLosange vide : « a un »
  • CompositionLosange plein : « est composé de »
  • HéritageTriangle vide : « est un »
  • DépendanceUtilise temporairement
  • RéalisationImplémente une interface

Les cardinalités UML

NotationSignification
1Exactement 1
0..10 ou 1 (optionnel)
* ou 0..*0 à plusieurs
1..*1 à plusieurs
n..mEntre n et m

Exemple : la bibliothèque en UML

Le même domaine, modélisé pour une application orientée objet : on voit apparaître l’héritage (Personne, abstraite), la composition (un Livre composé d’Exemplaires) et une association classique.

Fig. 03 — UML · Diagramme de classes
Diagramme de classes UML : Personne (abstraite) héritée par Lecteur et Bibliothecaire, Livre composé d’Exemplaires, Lecteur emprunte des Livres
Héritage
Lecteur et Bibliothecaire héritent de Personne (classe abstraite) : flèche à triangle vide.
Composition
Un Livre est composé de 1 à plusieurs Exemplaires : losange plein côté Livre.
Association
Un Lecteur emprunte de 0 à 5 Livres en même temps : ligne simple avec cardinalités.

Checklist UML

  • Une visibilité (+, –, #) sur tous les attributs et méthodes
  • Les types de retour des méthodes précisés
  • Des cardinalités sur toutes les associations
  • Les bons symboles (losange vide ou plein selon l’intention)
  • Les classes abstraites en italique ou avec «abstract»

Le snippet Mermaid à connaître

diagramme.mmd
classDiagram
  class Personne {
    <<abstract>>
    -nom : String
    +getNomComplet() String
  }
  Personne <|-- Lecteur
  Lecteur "0..5" -- "0..*" Livre : emprunte
05

Les 5 erreurs

Ce qui fait tiquer le jury

Elles reviennent dans presque tous les dossiers, et le jury les repère tout de suite. Les connaître, c’est éviter de les faire.

  1. 01

    Confondre les cardinalités MERISE et UML

    En MERISE on lit vers l’association, en UML vers la classe cible : le sens est inversé. Cette confusion fait inverser les cardinalités en passant d’un formalisme à l’autre.

  2. 02

    Mettre des clés étrangères au MCD

    Les FK n’apparaissent qu’au MLD. Au MCD, il y a des associations, pas des colonnes techniques. Un champ « idClient » dans l’entité COMMANDE au MCD est une faute classique.

  3. 03

    Oublier les visibilités en UML

    Un attribut ou une méthode sans +, – ou # devant est incomplet. C’est le premier détail que le jury vérifie sur un diagramme de classes.

  4. 04

    Confondre agrégation et composition

    Losange vide : les parties sont indépendantes du tout. Losange plein : elles sont détruites avec lui. Les mélanger montre que la nuance n’est pas comprise.

  5. 05

    Mélanger MLD et MPD

    Pas de VARCHAR(50), d’AUTO_INCREMENT ni d’ENGINE=InnoDB au MLD : ces détails n’apparaissent qu’au MPD. Le MLD reste indépendant du SGBD.