ETS
Plateforme ETSRessources, chapitres & exercices interactifs
?Se connecter
BDD · mcd-mld

Les modèles relationnels

MCD : Modèle Conceptuel des Données

Origine et intérêt de Merise

Elle repose sur trois niveaux de modélisation :

| Niveau | Objectif | Représentation | |--------|----------|----------------| | MCD | Décrire les données indépendamment de la technique | Entités, associations | | MLD | Adapter les entités au modèle relationnel | Tables, clés | | MPD | Implémenter les structures dans un SGBD réel | SQL, index, contraintes |

Le Modèle Conceptuel des Données

Un MCD représente les entités, leurs attributs, et les associations entre elles.

  • Entité : élément principal du système (rectangle).
  • Attribut : information propre à une entité.
  • Association : relation entre entités (losange).
  • Cardinalité : nombre de liens possibles entre entités.

Exemple guidé : de l’énoncé au MCD

Étapes de modélisation

  • Entités : Etudiant, Cours, Enseignant
  • Associations : Inscription (avec note), Dispense
  • Cardinalités :
    • Etudiant (0,n) ←→ Inscription ←→ (0,n) Cours
    • Cours (1,n) ←→ Dispense ←→ (1,1) Enseignant

MLD : Modèle Logique des Données

Le MLD traduit le MCD en tables relationnelles, prêtes à être implémentées dans un SGBD (MySQL, PostgreSQL...).

Traduction du MCD précédent

Etudiant(idEtudiant PK, nom, prenom)
Cours(idCours PK, intitule, volumeHoraire)
Enseignant(idEnseignant PK, nom, specialite)
Inscription(idEtudiant PK, idCours PK, note, 
            FOREIGN KEY (idEtudiant) REFERENCES Etudiant,
            FOREIGN KEY (idCours) REFERENCES Cours)
Cours(idCours PK, ..., idEnseignant FK)

Intégrité des données

Les systèmes de gestion de bases de données (SGBD) utilisent plusieurs types de contraintes pour garantir cette intégrité. Ces contraintes sont essentielles pour :

  • Éviter les incohérences,
  • Prévenir les erreurs de saisie,
  • Maintenir une structure logique fiable.

Types d’intégrité

Intégrité d’entité

  • Aucune ligne ne peut avoir une clé primaire vide (NULL).
  • Deux lignes ne peuvent avoir la même valeur de clé primaire.

Exemple :

CREATE TABLE Etudiant (
  idEtudiant INT PRIMARY KEY,
  nom VARCHAR(50),
  prenom VARCHAR(50)
);

Ici, idEtudiant doit être unique et non nul pour chaque étudiant.

Intégrité référentielle

Cela assure que les relations entre les tables sont valides.

Exemple :

CREATE TABLE Inscription (
  idEtudiant INT,
  idCours INT,
  FOREIGN KEY (idEtudiant) REFERENCES Etudiant(idEtudiant),
  FOREIGN KEY (idCours) REFERENCES Cours(idCours)
);

On ne peut pas inscrire un étudiant ou un cours qui n’existe pas dans la table de référence.

Intégrité de domaine

  • Chaque colonne est définie avec un type de données (INT, VARCHAR, DATE...).
  • On peut ajouter des contraintes : NOT NULL, CHECK, DEFAULT, etc.

Exemples :

CREATE TABLE Produit (
  idProduit INT PRIMARY KEY,
  nom VARCHAR(100) NOT NULL,
  prix DECIMAL(10,2) CHECK (prix >= 0)
);

Ici :

  • nom est obligatoire (NOT NULL)
  • prix ne peut pas être négatif (CHECK)

Normalisation et Formes Normales

Elle repose sur l’identification des dépendances fonctionnelles et la décomposition des relations en formes normales (FN).

Pourquoi normaliser ?

  • Éviter les données dupliquées ou contradictoires.
  • Améliorer la clarté du modèle.
  • Faciliter la maintenance et l’évolutivité.
  • Garantir une structure logique fiable.

Première Forme Normale (1NF)

Exemple incorrect (non 1NF) :

| idClient | nom | téléphones | |----------|---------|---------------------| | 1 | Alice | 06 11 22 33 44, 07 55 66 77 88 |

La colonne téléphones contient plusieurs valeurs.

Exemple en 1NF :

| idClient | nom | téléphone | |----------|---------|-------------------| | 1 | Alice | 06 11 22 33 44 | | 1 | Alice | 07 55 66 77 88 |

Deuxième Forme Normale (2NF)

Exemple incorrect (non 2NF) :

| idCommande | idProduit | nomProduit | prixUnitaire | |------------|-----------|------------|--------------| | 10 | P01 | Clavier | 40 |

nomProduit et prixUnitaire dépendent uniquement de idProduit, pas de la combinaison (idCommande, idProduit).

Solution en 2NF : séparer les produits dans une autre table.

  • Table Commande_Produit : (idCommande, idProduit, quantité)
  • Table Produit : (idProduit, nomProduit, prixUnitaire)

Troisième Forme Normale (3NF)

Exemple incorrect (non 3NF) :

| idClient | nomClient | ville | codePostal | |----------|-----------|-----------|------------| | 1 | Alice | Paris | 75000 |

codePostal dépend de ville, pas directement de la clé idClient.

Solution en 3NF : isoler la ville dans une table dédiée.

  • Table Client : (idClient, nomClient, ville)
  • Table Ville : (ville, codePostal)

Résumé des formes normales

| Forme normale | Condition principale | Objectif | |---------------|-----------------------------------------------------------|--------------------------------------------| | 1NF | Aucune colonne multivaluée ou répétée | Atomicité des valeurs | | 2NF | Aucune dépendance partielle | Éliminer les redondances liées aux clés | | 3NF | Aucune dépendance transitive | Meilleure structure logique et cohérence |


Ressources complémentaires

← Retour au module BDD