Modélisation des données

Initialisation
La modélisation des données est une étape structurante de l’ingénierie logicielle. Elle permet de passer d’une vision métier abstraite à une implémentation technique optimisée, en garantissant la robustesse, la scalabilité et l’interopérabilité entre équipes métier et techniques.

  • 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).

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.

6. Références

 

par