🛢️Parcours Fioul GroupéMySQL · Chapitre 13
Accueil › MySQL › Chapitre 13
Chapitre 13 / 16 · clé 🔑

Modélisation d'une base de données

Avant d'écrire du SQL, on conçoit. Entités, associations, cardinalités, clés et normalisation : un bon modèle évite redondances et incohérences pour des années. Chapitre clé, transversal avec le cours de MongoDB.

1 Méthode

Du besoin au schéma : Merise

La méthode Merise (très utilisée en BTS SIO) distingue trois niveaux :

À l'international on parle de diagramme entité-association (ERD), que Workbench dessine en diagramme EER.

2 Notion

Cardinalités & passage au relationnel

AssociationTraduction
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:1clé é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
);
3 Notion

La normalisation (1FN, 2FN, 3FN)

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
← Chapitre 12