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é | Description | Propriétés |
|---|---|---|
| CLIENT | Personne physique ou morale | Nom, Adresse, Téléphone |
| PRODUIT | Article vendu | Référence, Prix, Stock |
| COMMANDE | Achat d'un client | Date, Montant, Statut |
| FACTURE | Document comptable | Numé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é | Notation | Signification |
|---|---|---|
| 0,1 | 0..1 | Zéro ou un |
| 1,1 | 1..1 | Exactement un |
| 0,n | 0..* | Zéro ou plusieurs |
| 1,n | 1..* | 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_produitne dépend que deid_prod, pas deid_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_clientdépend deid_client, qui dépend deid_cmd- Donc
nom_clientdépend transitivement deid_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