UML-Merise : comprendre et modéliser
Modéliser un système ou une base de données avant de coder. Une heure de schéma économise une journée de refactor.
À la fin du cours, tu sais
- Savoir quand utiliser Merise et quand utiliser UML
- Lire et écrire un MCD propre
- Passer du MCD au MLD puis au SQL
- Construire un diagramme de classes UML
- Documenter une interaction avec un diagramme de séquence
- Versionner ses schémas avec Mermaid ou PlantUML
Prérequis
- Notions de base SQL (idéalement avoir suivi le cours Intro SQL)
- Avoir un projet à modéliser, même fictif
Chapitre 1
Pourquoi modéliser avant de coder
Un schéma t'évite trois jours de refacto. Plus le projet grandit, plus l'absence de modèle coûte cher.
- Clarifier le besoin métier avant d'écrire la moindre ligne
- Détecter les incohérences et les trous fonctionnels tôt
- Aligner dev, PO et client sur un vocabulaire commun
- Anticiper la scalabilité de ta base et de tes services
- Documenter pour les futurs devs (et pour toi dans 6 mois)
La règle du quart d'heure
Chapitre 2
UML vs Merise : quand utiliser quoi
Deux approches complémentaires, pas concurrentes. L'une est plus orientée données, l'autre plus orientée code.
Merise
- Origine francophone, utilisé dans l'enseignement et le secteur public en France
- Orienté base de données et système d'information
- Excelle sur le MCD / MLD / MPD (passage progressif du concept au technique)
- Cardinalités explicites :
1,1,0,n,1,n
UML
- Standard international, orienté code objet et applicatif
- 14 diagrammes possibles, on en utilise 4 à 5 en pratique
- Structure (classes, composants) et comportement (séquence, cas d'usage, activité)
- Multiplicités :
1,0..1,0..*,1..*
Le combo gagnant
Chapitre 3
Le MCD Merise
Le Modèle Conceptuel de Données décrit le quoi, pas le comment. Indépendant de la techno cible.
Les briques de base
- Entité : un objet du métier (Client, Produit, Commande)
- Association : un lien entre entités (passer, contenir)
- Cardinalités :
0,1,1,1,0,n,1,n(min et max) - Propriétés (attributs) : portées par les entités, parfois par les associations
- Identifiant unique : chaque entité en a un (souvent un id technique)
Exemple : boutique en ligne (Mermaid)
erDiagram
CLIENT ||--o{ COMMANDE : passe
COMMANDE }o--|| PRODUIT : contient
CLIENT {
int id PK
string nom
string email
}
COMMANDE {
int id PK
date date_commande
int client_id FK
}
PRODUIT {
int id PK
string libelle
decimal prix
}Lecture : un CLIENT peut passer zéro ou plusieurs commandes (notation ||--o{). Chaque COMMANDE est passée par exactement un client.
Chapitre 4
Du MCD au MLD puis au SQL
Le Modèle Logique de Données traduit le conceptuel en tables. Quelques règles de passage à mémoriser.
Règles de passage
- Chaque entité devient une table
- Association 1,n : clé étrangère côté n
- Association n,n : table de jonction avec les deux clés étrangères
- Les attributs deviennent des colonnes typées
- Les identifiants deviennent des
PRIMARY KEY
Le SQL correspondant
CREATE TABLE client (
id SERIAL PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL
);
CREATE TABLE produit (
id SERIAL PRIMARY KEY,
libelle VARCHAR(150) NOT NULL,
prix NUMERIC(10,2) NOT NULL
);
CREATE TABLE commande (
id SERIAL PRIMARY KEY,
date_commande DATE NOT NULL,
client_id INT NOT NULL REFERENCES client(id)
);
-- Table de jonction pour l'association n,n
CREATE TABLE commande_produit (
commande_id INT NOT NULL REFERENCES commande(id),
produit_id INT NOT NULL REFERENCES produit(id),
quantite INT NOT NULL DEFAULT 1,
PRIMARY KEY (commande_id, produit_id)
);Toujours déclarer les FK
REFERENCES n'est pas optionnel : il garantit que tu ne peux pas créer une commande qui pointe vers un client inexistant. C'est cette contrainte qui fait la solidité d'un schéma relationnel.Chapitre 5
Le diagramme de classes UML
Vue statique de ton code objet : les classes, leurs attributs, leurs méthodes, et les liens entre elles.
Anatomie d'une classe UML
- Nom de la classe en haut
- Attributs au milieu (avec visibilité :
+public,-private,#protected) - Méthodes en bas
- Italique = classe abstraite ou interface
Les liens
- Association simple : flèche pleine (les classes se connaissent)
- Agrégation : losange vide (lien faible, le tout peut exister sans la partie)
- Composition : losange plein (cycle de vie partagé, si le tout meurt la partie aussi)
- Héritage : flèche triangulaire vide
- Implémentation d'interface : flèche triangulaire en pointillés
Exemple Mermaid
classDiagram
class Utilisateur {
-int id
-string email
+seConnecter()
}
class Commande {
-int id
-Date date
+calculerTotal() float
}
class Produit {
-string nom
-float prix
}
Utilisateur "1" --> "*" Commande : passe
Commande "*" --> "*" Produit : contientChapitre 6
Cas d'usage, séquence, activité
Trois diagrammes UML qui décrivent le comportement, pas la structure. Utiles pour spécifier un parcours utilisateur ou une API.
Cas d'utilisation
Vue très haute, côté utilisateur : qui peut faire quoi. Les acteurs (bonhommes) sont reliés à des bulles (les fonctionnalités). Utile en kick-off de projet pour partager le périmètre avec le métier.
Diagramme de séquence
Le plus utile au quotidien. Axe vertical = temps. Tu vois les échanges chronologiques entre objets ou services : appels API, événements, réponses.
sequenceDiagram
participant U as Utilisateur
participant F as Frontend
participant A as API
participant DB as Database
U->>F: Clic "Valider commande"
F->>A: POST /commandes
A->>DB: INSERT INTO commande
DB-->>A: id de la commande
A-->>F: 201 Created { id }
F-->>U: "Commande validée ✓"Diagramme d'activité
Proche d'un organigramme : début, étapes, décisions (losanges), fin. Utile pour documenter un workflow complexe (parcours de validation, processus métier).
Garde simple
Chapitre 7
Outils pratiques et bonnes pratiques
Tu n'as pas besoin d'un outil payant pour bien modéliser. Trois options gratuites couvrent 99 % des besoins.
Les outils recommandés
- Mermaid : diagrammes en markdown, rendu natif dans GitHub/GitLab/Notion. Versionnable. Idéal pour la doc.
- draw.io / diagrams.net : éditeur visuel gratuit, export PNG/SVG, intégration VS Code via extension
- PlantUML : syntaxe texte puissante, plus complet que Mermaid sur les diagrammes UML avancés
- Excalidraw : pour les croquis rapides en brainstorm ou réunion
Bonnes pratiques
- Versionne les sources texte (Mermaid, PlantUML), pas les images PNG
- Range tes diagrammes dans
docs/diagrams/du repo - Lie un diagramme à un cas d'usage ou un ADR, pas en vrac
- Mets à jour quand le code évolue (ou supprime, mieux qu'un schéma faux)
Mermaid dans le README
🛠️ Exercice optionnel
Modéliser une bibliothèque municipale
Tu vas modéliser un mini-système de prêts de livres dans une bibliothèque municipale. L'exercice couvre toute la chaîne : du concept au SQL.
Ta mission
Règles métier :
- Un·e adhérent·e peut emprunter plusieurs livres en même temps
- Un livre a un titre, un auteur et peut avoir plusieurs exemplaires physiques
- Chaque emprunt concerne un exemplaire précis, avec date de début et date de retour prévue
- Un·e bibliothécaire enregistre l'emprunt
Livrables :
- Un MCD Merise (Mermaid
erDiagram) couvrant les entités et leurs associations - Un diagramme de classes UML (Mermaid
classDiagram) côté code applicatif - Un diagramme de cas d'usage côté utilisateur·ice (acteurs + actions)
- Le script SQL
CREATE TABLEcorrespondant au MCD
Tu bloques ? Des indices, à dévoiler quand tu en as besoin.
Indice 1
Indice masqué.
Indice 2
Indice masqué.
Indice 3
Indice masqué.
✅ QCM de fin de cours
Teste tes acquis
10 questions, plusieurs réponses parfois possibles. Coche tout ce qui te semble juste, puis valide pour voir ton score et les explications.
- 1
Le MCD Merise sert à...
- 2
Une cardinalité
1,nsignifie... - 3
Une association n,n devient en MLD...
- 4
UML est plus adapté que Merise pour...
- 5
Le diagramme de séquence montre...
- 6
La composition en UML implique...
- 7
Mermaid est...
- 8
Avant de coder une feature complexe, le bon réflexe est de...
- 9
Tu modélises une boutique en ligne. Quel diagramme est le plus adapté pour décrire le parcours Visiteur ajoute au panier puis paie ?
- 10
Bonne pratique pour archiver ses diagrammes dans un projet...
Tu peux laisser des questions sans réponse, elles compteront comme fausses.
Tu veux ce cours pour ton équipe ?
Je peux adapter et animer ce cours pour tes formateur·ices ou tes apprenant·es, en présentiel ou en distanciel. Parlons-en pendant l'audit gratuit.
Réserver un audit gratuit →