Du besoin au schéma : Merise
La méthode Merise (très utilisée en BTS SIO) distingue trois niveaux :
- MCD — entités et associations, indépendant de la techno.
- MLD — traduction en tables et clés étrangères.
- MPD — le SQL concret avec ses types.
À l'international on parle de diagramme entité-association (ERD), que Workbench dessine en diagramme EER.
Cardinalités & passage au relationnel
| Association | Traduction |
|---|---|
| 1:N (un fournisseur, plusieurs campagnes) | clé étrangère côté « N » (campagne.fournisseur_id) |
| N:N (participants ↔ campagnes) | table d'association (commande) avec 2 clés étrangères |
| 1:1 | clé étrangère unique, ou fusion des entités |
CREATE TABLE commande (
id INT AUTO_INCREMENT PRIMARY KEY,
participant_id INT NOT NULL,
campagne_id INT NOT NULL,
litres INT UNSIGNED NOT NULL,
FOREIGN KEY (participant_id) REFERENCES participant(id),
FOREIGN KEY (campagne_id) REFERENCES campagne(id),
UNIQUE (participant_id, campagne_id) -- un foyer une fois par campagne
);
La normalisation (1FN, 2FN, 3FN)
- 1FN — colonnes atomiques (pas de liste dans une cellule), une clé existe.
- 2FN — 1FN + chaque attribut dépend de toute la clé.
- 3FN — 2FN + aucun attribut ne dépend d'un autre attribut non-clé.
Anomalie type — stocker la commune et le prix du fournisseur dans
commande les duplique à chaque inscription. La 3FN dit : ces données appartiennent à campagne / fournisseur.Dénormalisation maîtrisée — on peut copier le
prix_litre retenu dans la commande : ce n'est pas une redondance mais la photo du prix au moment de l'inscription, qui ne doit pas bouger si le tarif change ensuite.🛢️ Sur le projet Fioul Groupé
Le MCD du projet en relationnel : Participant (0,n) — passe — (1,1) Commande (1,1) — concerne — (0,n) Campagne (1,1) — servie par — (0,n) Fournisseur. C'est le même domaine que le document MongoDB du cours principal, vu « à plat » en tables. Comparer les deux modélisations est un excellent exercice de synthèse SLAM.
À retenir
- Merise : MCD (conceptuel) → MLD (tables) → MPD (SQL).
- 1:N = clé étrangère côté N ; N:N = table d'association.
- Normaliser (jusqu'à la 3FN) supprime les redondances et anomalies.
- Fil rouge : même domaine que MongoDB, modélisé en tables reliées.