- Robustesse: cohérence, intégrité référentielle et clarté des règles métier.
- Scalabilité: capacité d’évolution sans refonte majeure, maîtrise du volume et des accès.
- Interopérabilité: langage commun entre parties prenantes et documentation durable.
La démarche s’organise classiquement en trois niveaux successifs et complémentaires : MCD (conceptuel), MLD (logique) et MPD (physique).
Table des matières :
2. Les trois niveaux de modélisation
2.1 MCD — Modèle Conceptuel de Données
Objectif: Capturer l’essence métier, sans contrainte technique ni dépendance à un SGBD.
Caractéristiques
- Niveau d’abstraction: élevé, compréhensible par les profils métier et techniques.
- Paradigme: Entité–Association (E/R) via Merise ou UML (diagrammes de classes simplifiés).
- Entités: objets du domaine (ex. Utilisateur, Produit, Commande).
- Attributs: propriétés métier (ex. email, prix, date).
- Associations: liens sémantiques (ex. Un utilisateur passe une commande).
- Cardinalités: contraintes min/max (ex. (1,n) = un à plusieurs, (0,1) = optionnel).
Bonnes pratiques
- Validation métier: faire relire et valider le MCD avant toute traduction technique.
- Notation homogène: choisir Merise ou UML et s’y tenir pour toute la documentation.
- Règles métier visibles: consigner règles, exceptions, et glossaire directement liés au diagramme.
- Noms explicites: utiliser un vocabulaire métier stable, éviter les abréviations obscures.
Exemple (extrait)
Entité : Utilisateur
Attributs : id_utilisateur, nom, prénom, email
Association : Utilisateur — passe — Commande
Cardinalité : Utilisateur (1,n) Commande
Contraintes : email unique, commande nécessite un utilisateur
2.2 MLD — Modèle Logique de Données
Objectif: Traduire le MCD en structure relationnelle, indépendante d’un SGBD spécifique.
Caractéristiques
- Normalisation: application des 1NF, 2NF, 3NF pour réduire redondance et anomalies.
- Clés primaires (PK): identifiant unique par table, stable et non sémantique de préférence.
- Clés étrangères (FK): matérialisation des relations entre tables avec intégrité référentielle.
- Tables de liaison: gestion des relations (n,n) avec attributs propres (ex. quantité).
- Contraintes logiques: unicité, non-nullité, domaines de valeurs au niveau logique.
Bonnes pratiques
- Nomenclature claire: préférer utilisateur_id à un id générique pour les FK.
- PK sur une seule colonne: privilégier une PK simple (surrogate key) sauf cas de jointures n-n.
- Référentielle explicite: définir dès ce stade les liens obligatoires vs optionnels.
- Évolutivité: anticiper l’ajout d’attributs via colonnes optionnelles ou tables dédiées.
Exemple (schéma logique)
Table UTILISATEUR (PK: id_utilisateur)
- nom, prénom, email (unique)
Table COMMANDE (PK: id_commande, FK: id_utilisateur → UTILISATEUR.id_utilisateur)
- date_commande, statut
Table PRODUIT (PK: id_produit)
- nom, prix
Table COMMANDE_PRODUIT (PK: id_commande + id_produit)
- FK: id_commande → COMMANDE.id_commande
- FK: id_produit → PRODUIT.id_produit
- quantite
2.3 MPD — Modèle Physique de Données
Objectif: Adapter le MLD au SGBD choisi et produire les scripts d’implémentation.
Caractéristiques
- Types concrets: mappage vers VARCHAR, INT, DATE, DECIMAL, BOOLEAN, etc.
- Indexation ciblée: index sur recherche/tri/jointure fréquents; éviter la sur-indexation.
- Contraintes techniques: NOT NULL, UNIQUE, CHECK, DEFAULT, ON DELETE/UPDATE.
- Paramètres SGBD: moteur, encodage, collation, partitionnement, autovacuum/maintenance.
- Scripts DDL: CREATE/ALTER pour tables, index, contraintes et vues matérialisées si besoin.
Bonnes pratiques
- Types adaptés au volume: choisir tailles précises (ex. VARCHAR(120) plutôt que TEXT).
- Stratégie d’index: mesurer le gain en lecture vs coût en écriture; index partiels/covering si utiles.
- Tests volumétriques: valider performances et plans d’exécution avec des jeux de données réalistes.
- Observabilité: prévoir métriques, logs lent, et budgets de maintenance (reindex, analyze).
Exemple SQL (extrait)
CREATE TABLE utilisateur (
id_utilisateur INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);
CREATE TABLE produit (
id_produit INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nom VARCHAR(150) NOT NULL,
prix DECIMAL(10,2) NOT NULL CHECK (prix >= 0)
);
CREATE TABLE commande (
id_commande INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_utilisateur INT NOT NULL REFERENCES utilisateur(id_utilisateur) ON DELETE RESTRICT,
date_commande TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
statut VARCHAR(30) NOT NULL CHECK (statut IN ('NOUVELLE','PAYEE','EXPEDIEE','ANNULEE'))
);
CREATE TABLE commande_produit (
id_commande INT NOT NULL REFERENCES commande(id_commande) ON DELETE CASCADE,
id_produit INT NOT NULL REFERENCES produit(id_produit) ON DELETE RESTRICT,
quantite INT NOT NULL CHECK (quantite > 0),
PRIMARY KEY (id_commande, id_produit)
);
-- Index ciblés
CREATE INDEX idx_utilisateur_email ON utilisateur(email);
CREATE INDEX idx_commande_date ON commande(date_commande);
CREATE INDEX idx_cp_produit ON commande_produit(id_produit);
3. Synthèse visuelle
| Étape | Objectif | Public cible | Outils / Notation | Livrable |
|---|---|---|---|---|
| MCD | Compréhension métier | Métier + Technique | Merise, UML | Diagramme Entité–Association |
| MLD | Structure relationnelle | Équipe technique | Modèle relationnel | Schéma logique normalisé |
| MPD | Implémentation SGBD | DBA, Dev backend | SQL DDL | Scripts CREATE/ALTER |
Astuce: valider chaque étape (MCD → MLD → MPD) avec les parties prenantes avant de poursuivre, pour éviter les retours coûteux.
4. Points clés pour un chef de projet
- Gouvernance par jalons: valider formellement chaque niveau avant passage au suivant.
- Implication transverse: associer métier, dev, QA et DBA dès le MCD pour aligner vocabulaire et règles.
- Traçabilité des choix: documenter types, index, contraintes et justifications de performance.
- Évolutivité maîtrisée: anticiper les changements via stratégie de migration et compatibilité ascendante.
- Qualité des données: définir règles d’intégrité, valeurs par défaut, et plans de nettoyage.
5. Lexique technique
- Cardinalité: règle min/max d’occurrences entre entités dans une association.
- Clé étrangère (FK): colonne(s) référant la clé primaire d’une autre table; force la relation.
- Clé primaire (PK): identifiant unique d’un enregistrement dans une table.
- Data Definition Language (DDL): sous-ensemble SQL définissant/modifiant la structure des objets.
- Index: structure accélérant les recherches au prix d’un coût en écriture et stockage.
- Merise: méthodologie française structurant MCD, MLD et MPD.
- Normalisation: organisation des données (1NF, 2NF, 3NF) pour réduire redondance et anomalies.
- SGBD: logiciel de gestion de base (ex. MySQL, PostgreSQL, Oracle).
- UML: langage standard de modélisation visuelle des systèmes logiciels.
