MFormations
Modern Information Systems Engineering

Chapitre 2

02-Merise, MCD et MLD

02-Merise, MCD et MLD

Cours 02 : Merise, MCD et MLD

1. Histoire de Merise

Origines

Merise est une méthode de conception de systèmes d'information développée en France à la fin des années 1970 par Hubert Tardieu, Arnold Rochfeld et René Colletti au sein du CETI (Centre d'Études Techniques de l'Informatique).

Diagramme en cours de génération...

Contexte historique

  • À la fin des années 70, les SI français sont souvent mal conçus
  • Les méthodes anglo-saxonnes (Yourdon, Gane & Sarson) ne correspondent pas à la culture française
  • Le CETI développe une méthode systémique adaptée au contexte français
  • Merise est la première méthode à séparer clairement données et traitements

Fondements théoriques

Merise s'appuie sur :

  • L'approche systémique (théorie des systèmes)
  • La théorie des bases de données relationnelles (Codd, 1970)
  • Le modèle entité-association (Chen, 1976)
  • La séparation données/traitements en 3+1 niveaux d'abstraction

2. Les 4 niveaux de Merise

Diagramme en cours de génération...

Niveau Conceptuel

  • Objectif : décrire le SI indépendamment de toute technologie
  • Données : MCD (entités, associations, cardinalités)
  • Traitements : MCT (enchaînements, flux)
  • Questions : QUOI ? (quoi fait le système, quelles données ?)

Niveau Logique (ou Organisationnel)

  • Objectif : organiser les données et traitements selon un formalisme structuré
  • Données : MLD (tables, clés, normalisation)
  • Traitements : MOT (processus, procédures)
  • Questions : COMMENT ? (comment sont organisées les données et les traitements ?)

Niveau Physique

  • Objectif : implémenter sur une plateforme technique spécifique
  • Données : MPD (SQL DDL, index, partitionnement)
  • Traitements : MOPT (code, scripts, batchs)
  • Questions : AVEC QUOI ? (quels SGBD, langages, outils ?)

Niveau Opérationnel

  • Objectif : déployer, exploiter et maintenir le système
  • Artefacts : topologie réseau, scripts d'installation, plans de sauvegarde
  • Questions : OÙ ? QUAND ? (où est déployé le système, quand tournent les batchs ?)

3. MCD - Modèle Conceptuel de Données

Concepts du MCD

Le MCD utilise le modèle Entité-Association (Entity-Relationship model, Peter Chen 1976).

Diagramme en cours de génération...

L'Entité

Une entité est un objet concret ou abstrait pertinent pour le système d'information.

EntitéDescriptionPropriétés
CLIENTPersonne physique ou moraleNom, Adresse, Téléphone
PRODUITArticle venduRéférence, Prix, Stock
COMMANDEAchat d'un clientDate, Montant, Statut
FACTUREDocument comptableNuméro, Date, Total TTC

L'Association

Une association est un lien entre deux ou plusieurs entités.

Diagramme en cours de génération...

Les Cardinalités

Les cardinalités définissent le nombre de participations d'une entité à une association.

CardinalitéNotationSignification
0,10..1Zéro ou un
1,11..1Exactement un
0,n0..*Zéro ou plusieurs
1,n1..*Au moins un

Règles de lecture :

  • Un CLIENT passe 0 ou N COMMANDES (0,n)
  • Une COMMANDE est passée par 1 et 1 seul CLIENT (1,1)

Les Identifiants

Chaque entité possède un identifiant (clé primaire) qui permet d'identifier de manière unique chaque occurrence.

  • Identifiant simple : une seule propriété (ex: numéro client)
  • Identifiant composé : plusieurs propriétés (ex: numéro commande + ligne)
  • Identifiant technique : clé artificielle (ex: auto-incrément)

Les Dépendances Fonctionnelles

Une dépendance fonctionnelle (DF) est une relation entre deux ensembles de propriétés :

  • X → Y signifie : la valeur de X détermine la valeur de Y
  • Exemple : numéro_client → nom, adresse
Diagramme en cours de génération...

4. MLD - Modèle Logique de Données

Règles de transformation MCD → MLD

Diagramme en cours de génération...

Cas 1 : Association One-to-Many (1,N)

CLIENT (0,N) --- (1,1) COMMANDE
Diagramme en cours de génération...

Cas 2 : Association Many-to-Many (N,N)

COMMANDE (0,N) --- (0,N) PRODUIT avec LIGNE_COMMANDE
Diagramme en cours de génération...

Cas 3 : Association réflexive

EMPLOYE (0,N) --- (0,1) EMPLOYE (manager)
Diagramme en cours de génération...

Cas 4 : Héritage (spécialisation)

Diagramme en cours de génération...

5. MPD - Modèle Physique de Données

Implémentation SQL

-- Table CLIENT
CREATE TABLE client (
    id_client INT PRIMARY KEY AUTO_INCREMENT,
    nom VARCHAR(100) NOT NULL,
    adresse VARCHAR(255),
    code_postal VARCHAR(10),
    ville VARCHAR(100)
);

-- Table COMMANDE
CREATE TABLE commande (
    id_commande INT PRIMARY KEY AUTO_INCREMENT,
    date_commande DATE NOT NULL,
    statut VARCHAR(20) DEFAULT 'EN_ATTENTE',
    id_client INT NOT NULL,
    FOREIGN KEY (id_client) REFERENCES client(id_client)
);

-- Table PRODUIT
CREATE TABLE produit (
    id_produit INT PRIMARY KEY AUTO_INCREMENT,
    libelle VARCHAR(200) NOT NULL,
    prix_ht DECIMAL(10,2) NOT NULL,
    stock INT DEFAULT 0
);

-- Table LIGNE_COMMANDE (table de jonction)
CREATE TABLE ligne_commande (
    id_commande INT,
    id_produit INT,
    quantite INT NOT NULL,
    prix_unitaire DECIMAL(10,2) NOT NULL,
    PRIMARY KEY (id_commande, id_produit),
    FOREIGN KEY (id_commande) REFERENCES commande(id_commande),
    FOREIGN KEY (id_produit) REFERENCES produit(id_produit)
);

Index et performance

-- Index composé pour recherche par client et date
CREATE INDEX idx_client_date ON commande(id_client, date_commande);

-- Index unique sur email
CREATE UNIQUE INDEX idx_email ON client(email);

-- Index full-text pour recherche textuelle
CREATE INDEX idx_produit_libelle ON produit USING gin(to_tsvector('french', libelle));

6. Normalisation (1NF → 3NF)

1ère Forme Normale (1NF)

Une table est en 1NF si toutes les valeurs sont atomiques (une seule valeur par cellule).

Diagramme en cours de génération...

2ème Forme Normale (2NF)

Une table est en 2NF si elle est en 1NF et que toutes les colonnes non-clés dépendent de toute la clé primaire.

Violation : LIGNE_COMMANDE(id_cmd PK, id_prod PK, libelle_produit, quantite)

  • libelle_produit ne dépend que de id_prod, pas de id_cmd

Correction : séparer en LIGNE_COMMANDE(id_cmd, id_prod, quantite) et PRODUIT(id_prod, libelle)

3ème Forme Normale (3NF)

Une table est en 3NF si elle est en 2NF et qu'il n'y a pas de dépendance transitive.

Violation : COMMANDE(id_cmd, date, id_client, nom_client, ville_client)

  • nom_client dépend de id_client, qui dépend de id_cmd
  • Donc nom_client dépend transitivement de id_cmd

Correction : COMMANDE(id_cmd, date, id_client) et CLIENT(id_client, nom, ville)

Diagramme en cours de génération...

7. MOT - Modèle Opérationnel de Traitements

Le MOT (ou MCT au niveau conceptuel) décrit les traitements et les flux.

Diagramme en cours de génération...

Règles de gestion

Chaque traitement est associé à des règles de gestion :

RG-01 : Une commande ne peut être validée si le client est connu
RG-02 : Le stock est vérifié avant toute expédition
RG-03 : Une facture est émise après expédition
RG-04 : Le délai maximum de livraison est de 48h

8. Exemple complet : Gestion des commandes

MCD

Diagramme en cours de génération...

MLD

CLIENT(id_client, nom, adresse, email)
COMMANDE(id_commande, date, statut, #id_client)
PRODUIT(id_produit, reference, libelle, prix_ht, stock)
LIGNE_COMMANDE(#id_commande, #id_produit, quantite)

MPD (SQL)

CREATE TABLE client (
    id_client SERIAL PRIMARY KEY,
    nom VARCHAR(100) NOT NULL,
    adresse TEXT,
    email VARCHAR(255) UNIQUE
);

CREATE TABLE commande (
    id_commande SERIAL PRIMARY KEY,
    date_commande TIMESTAMP DEFAULT NOW(),
    statut VARCHAR(20) DEFAULT 'créée',
    id_client INT NOT NULL REFERENCES client(id_client)
);

CREATE TABLE produit (
    id_produit SERIAL PRIMARY KEY,
    reference VARCHAR(50) UNIQUE NOT NULL,
    libelle VARCHAR(255) NOT NULL,
    prix_ht DECIMAL(10,2) NOT NULL,
    stock INT DEFAULT 0
);

CREATE TABLE ligne_commande (
    id_commande INT REFERENCES commande(id_commande),
    id_produit INT REFERENCES produit(id_produit),
    quantite INT NOT NULL CHECK (quantite > 0),
    PRIMARY KEY (id_commande, id_produit)
);

Résumé

Diagramme en cours de génération...

Pour aller plus loin

  • "Merise - Guide pratique" - Tardieu, Rochfeld, Colletti
  • "Le modèle relationnel" - E.F. Codd
  • "Entity-Relationship Model" - Peter Chen