1 / 13

Modélisation de Bases de Données

MCD
→
MLD
→
MPD

De la conception à l'implémentation

📚 Apprenez à créer des bases de données comme un pro, étape par étape !

Qu'est-ce qu'une base de données ?

Imaginez une bibliothèque : les livres sont rangés sur des étagères (tables), classés par catégories (colonnes), avec une fiche pour chaque livre (lignes). Une base de données fonctionne pareil, mais pour stocker des informations numériques !

Pourquoi en avons-nous besoin ?

Une base de données, c'est comme un classeur Excel super puissant qui peut gérer des millions de lignes et faire des liens entre différentes feuilles !

Les 3 étapes de création d'une base de données

Étape Nom Question Analogie
1️⃣ MCD Quoi stocker ? Le plan d'architecte
2️⃣ MLD Comment organiser ? Le plan détaillé des pièces
3️⃣ MPD Comment construire ? La construction réelle
C'est comme construire une maison : d'abord on fait un croquis (MCD), puis un plan détaillé (MLD), et enfin on construit vraiment (MPD) !
On commence toujours par réfléchir à ce qu'on veut stocker AVANT de créer la base de données. C'est plus facile de corriger un dessin qu'une maison déjà construite !

MCD - Le Modèle Conceptuel de Données

💭 Le MCD, c'est comme faire un dessin pour expliquer votre idée !

Les 4 éléments de base (comme des LEGO !) :

1. Les Entités 📦

Ce sont les "choses" qu'on veut stocker

CLIENT

Exemples : Client, Produit, Commande, Employé...

2. Les Attributs 🏷️

Les caractéristiques de chaque entité

nom
prénom
email

Ce sont les informations qu'on veut garder

3. Les Associations 🔗

Les liens entre les entités

ACHETER

Exemples : acheter, emprunter, travailler...

4. Les Cardinalités 🔢

Combien de fois peut se produire le lien

0,1 = 0 ou 1 fois
1,1 = exactement 1 fois
0,n = 0 ou plusieurs fois
1,n = au moins 1 fois

Pensez aux entités comme des boîtes, aux attributs comme des étiquettes sur les boîtes, et aux associations comme des ficelles qui relient les boîtes !

MCD - Exemple simple : Gestion de Bibliothèque

Créons ensemble le MCD d'une petite bibliothèque. On veut gérer les livres et les adhérents qui les empruntent.
LIVRE titre auteur année genre EMPRUNTER dateEmprunt dateRetour 0,n Un livre peut être emprunté 0 ou plusieurs fois 0,n Un adhérent peut emprunter 0 ou plusieurs livres ADHERENT nom prenom email dateInscription 📚 Ce qu'on stocke sur chaque livre 📅 On garde aussi les dates d'emprunt 👤 Ce qu'on stocke sur chaque adhérent
Pour lire ce schéma : "Un adhérent peut emprunter plusieurs livres (0,n), et un livre peut être emprunté par plusieurs adhérents (0,n)". C'est comme dire qu'un lecteur peut prendre plusieurs livres, et qu'un livre peut passer entre plusieurs mains !

MLD - Le Modèle Logique de Données

📊 Le MLD transforme notre dessin en plan de tables (comme des tableaux Excel)

Les transformations magiques ✨

Avant (MCD)

CLIENT

avec ses attributs

Après (MLD)

Table CLIENT
id_client
nom
prenom
email

Les nouvelles notions importantes :

Imaginez que chaque table est une feuille Excel. La clé primaire est comme le numéro de ligne, et la clé étrangère est comme un lien hypertexte vers une autre feuille !

Les règles de transformation MCD → MLD

C'est comme traduire un dessin en instructions de montage IKEA !

Les 4 règles principales :

📦 Règle 1 : Chaque entité devient une table

LIVRE → Table LIVRE

ADHERENT → Table ADHERENT

🏷️ Règle 2 : On ajoute un identifiant unique (clé primaire)

Table LIVRE : on ajoute id_livre ou ISBN

Table ADHERENT : on ajoute num_adherent

C'est comme donner un numéro unique à chaque personne ou objet !

🔗 Règle 3 : Les associations deviennent...

Si (0,n) - (0,n) : Une nouvelle table de liaison

Si (1,1) - (0,n) : Une clé étrangère dans la table côté (0,n)

Exemple : EMPRUNTER devient une table car c'est du (0,n) - (0,n)

📎 Règle 4 : Les attributs des associations vont dans les bonnes tables

dateEmprunt et dateRetour → dans la table EMPRUNT

Retenez : (0,n) - (0,n) = toujours une table de liaison ! C'est la règle la plus importante.

MLD - Notre bibliothèque transformée

Voici comment notre MCD de bibliothèque devient 3 tables reliées entre elles
LIVRE ISBN (PK) 🔑 titre auteur annee genre ADHERENT numAdherent (PK) 🔑 nom prenom email dateInscription EMPRUNT ISBN (FK) 🔗 numAdherent (FK) 🔗 dateEmprunt dateRetour 🔑 PK: (ISBN + numAdherent + dateEmprunt) Référence le livre Référence l'adhérent 💡 La table EMPRUNT relie les livres et les adhérents. Chaque ligne = un emprunt !
La table EMPRUNT est comme un registre où on note : "Qui a emprunté quoi et quand". Les FK (clés étrangères) sont comme des flèches qui pointent vers le livre et l'adhérent concernés.

MPD - Le Modèle Physique de Données

💻 Le MPD, c'est quand on construit vraiment la base de données dans l'ordinateur !

C'est quoi la différence avec le MLD ?

MLD (Le plan) MPD (La construction)
nom (texte) nom VARCHAR(50)
age (nombre) age INT
prix (nombre décimal) prix DECIMAL(10,2)
date_naissance (date) date_naissance DATE

Les nouveaux éléments à définir :

C'est comme passer de "je veux une étagère pour mes livres" à "je veux une étagère en bois de 2m x 1m avec 5 planches espacées de 30cm" !

MPD - Schéma de la base de données créée

🏗️ Voici à quoi ressemble notre base de données une fois créée dans le système
📚 LIVRE 🔑 ISBN VARCHAR(13) PK titre VARCHAR(200) auteur VARCHAR(100) annee INT genre VARCHAR(50) 👤 ADHERENT 🔑 numAdherent INT AI PK nom VARCHAR(50) prenom VARCHAR(50) email VARCHAR(100) dateInscription DATE 🤝 EMPRUNT 🔗 ISBN VARCHAR(13) FK 🔗 numAdherent INT FK 🔑 dateEmprunt DATE dateRetour DATE PK: (ISBN + numAdherent + dateEmprunt) FOREIGN KEY FOREIGN KEY 💡 PK = Primary Key | FK = Foreign Key | AI = Auto Increment | VARCHAR(n) = Texte max n caractères
Dans ce schéma, on voit exactement comment les tables sont liées dans la vraie base de données. Les flèches rouges montrent les contraintes de clés étrangères qui garantissent l'intégrité des données !
Avec ce MPD, l'ordinateur sait exactement : quels types de données accepter, comment vérifier la cohérence, et comment optimiser les recherches grâce aux index et contraintes !

MPD - Notre bibliothèque en vrai code SQL

SQL est le langage pour "parler" aux bases de données. CREATE TABLE = créer une table !

📚 Table LIVRE

-- Création de la table des livres
CREATE TABLE Livre (
  ISBN VARCHAR(13) PRIMARY KEY, -- Code unique du livre
  titre VARCHAR(200) NOT NULL, -- Titre obligatoire, max 200 caractères
  auteur VARCHAR(100) NOT NULL, -- Auteur obligatoire
  annee INT CHECK (annee >= 1900), -- Année >= 1900
  genre VARCHAR(50), -- Genre optionnel
  INDEX idx_auteur (auteur) -- Index pour chercher par auteur
);

👤 Table ADHERENT

-- Création de la table des adhérents
CREATE TABLE Adherent (
  numAdherent INT AUTO_INCREMENT PRIMARY KEY, -- Numéro automatique
  nom VARCHAR(50) NOT NULL, -- Nom obligatoire
  prenom VARCHAR(50) NOT NULL, -- Prénom obligatoire
  email VARCHAR(100) UNIQUE NOT NULL, -- Email unique et obligatoire
  dateInscription DATE DEFAULT CURRENT_DATE -- Date du jour par défaut
);

📋 Table EMPRUNT

-- Création de la table des emprunts
CREATE TABLE Emprunt (
  ISBN VARCHAR(13), -- Référence vers le livre
  numAdherent INT, -- Référence vers l'adhérent
  dateEmprunt DATE, -- Date de l'emprunt
  dateRetour DATE, -- Date de retour (peut être NULL)
  PRIMARY KEY (ISBN, numAdherent, dateEmprunt), -- Clé composite
  FOREIGN KEY (ISBN) REFERENCES Livre(ISBN), -- Lien vers Livre
  FOREIGN KEY (numAdherent) REFERENCES Adherent(numAdherent), -- Lien vers Adherent
  CHECK (dateRetour >= dateEmprunt) -- Vérification logique
);
Les commentaires (après --) expliquent chaque ligne. C'est comme ça qu'on crée vraiment les tables dans MySQL, PostgreSQL, etc. !

Exemple complet : Site E-commerce 🛒

Créons ensemble la base de données d'une petite boutique en ligne !

Étape 1 : MCD (Le dessin conceptuel)

CLIENT nom prenom email PASSER 1,n Un client fait au moins 1 commande 1,1 Une commande a 1 seul client COMMANDE dateCommande montantTotal statut PRODUIT libelle prix stock CONTENIR quantité prixVente 1,n 0,n

Étape 2 : MLD (Les tables)

Client(#idClient, nom, prenom, email, motDePasse)

Commande(#numCommande, dateCommande, montantTotal, statut, idClient)

Produit(#refProduit, libelle, prix, stock)

LigneCommande(#numCommande, #refProduit, quantite, prixVente)

💡 Notez : PASSER devient une FK dans Commande (car 1,1 - 1,n)
💡 CONTENIR devient une table LigneCommande (car 1,n - 0,n)

Une commande peut contenir plusieurs produits, et un produit peut être dans plusieurs commandes. C'est pour ça qu'on crée la table LigneCommande !

Les erreurs de débutant à éviter 🚫

❌ Erreur 1 : Mettre des ID dans le MCD

Mauvais : CLIENT avec attributs (id_client, nom, prenom)

Bon : CLIENT avec attributs (nom, prenom)

Les identifiants techniques apparaissent seulement au MLD !

❌ Erreur 2 : Oublier les cardinalités

Toujours se poser les questions :

  • Un client peut-il n'avoir aucune commande ? (0 ou 1)
  • Un produit peut-il être dans plusieurs commandes ? (n)

❌ Erreur 3 : Créer des tables inutiles

Exemple : Si un client a une seule adresse, pas besoin d'une table ADRESSE séparée !

Mettez simplement les attributs (rue, ville, codePostal) dans CLIENT.

❌ Erreur 4 : Choisir les mauvais types de données

Mauvais : age INT (change chaque année !)

Bon : dateNaissance DATE (ne change jamais)

Stockez toujours des données stables dans le temps !

Ces erreurs sont normales au début ! L'important est de bien réfléchir avant de coder. Rappelez-vous : il est plus facile de corriger un dessin qu'une base de données en production !

Récapitulatif et conseils pratiques 🎯

Les 3 étapes en résumé :

1️⃣ MCD

Je dessine mes entités

✏️ Papier + crayon

2️⃣ MLD

Je crée mes tables

📊 Plan détaillé

3️⃣ MPD

Je code en SQL

💻 CREATE TABLE...

✅ Checklist avant de commencer :

Commencez petit ! Faites d'abord un MCD simple avec 2-3 entités. Une fois que vous maîtrisez, ajoutez de la complexité progressivement.
Pour vous entraîner, modélisez des situations du quotidien : votre collection de films, la gestion d'un club de sport, un système de réservation... C'est en pratiquant qu'on devient expert !

Bonne modélisation ! 🚀

N'oubliez pas : une bonne base de données = une application qui fonctionne bien !