logo

Les modèles relationnels

Objectifs pédagogiques
  • Comprendre les concepts fondamentaux d’une base de données relationnelle : table, enregistrement, clé primaire, clé étrangère, relation
  • Identifier les propriétés d’intégrité des données : entité, référentielle, domaine
  • Comprendre l’origine de la méthode Merise et son intérêt dans la modélisation
  • Construire un MCD clair et structuré, puis le traduire en MLD
  • Appliquer les règles de normalisation pour limiter la redondance

MCD : Modèle Conceptuel des Données

Origine et intérêt de Merise

Définition
Merise est une méthode de conception française permettant d’analyser et de modéliser les données et les traitements d’un système d’information.

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.

Exemple
[Client]----------------[Commande]
 idClient                        idCommande
 nom                             dateCommande
 prenom
  

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

Énoncé
Une école gère ses enseignants, ses étudiants, et les cours proposés. Chaque étudiant peut s’inscrire à plusieurs cours. Chaque cours est dispensé par un seul enseignant, mais un enseignant peut enseigner plusieurs cours. Chaque inscription donne lieu à une note.

Étapes de modélisation

MCD final
[Etudiant]----------------[Cours]----------------[Enseignant]
 idEtudiant                          idCours                            idEnseignant
 nom                                intitule                           nom
 prenom                             volumeHoraire                      specialite
                                    note
  

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...).

Règles de passage
- Chaque entité devient une table avec une clé primaire
- Chaque association avec attribut devient une table indépendante
- Les relations sont traduites par des clés étrangères

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

Définition
L’intégrité des données désigne l’ensemble des règles et contraintes mises en place dans une base de données afin d’assurer la validité, la cohérence et la fiabilité des informations stocké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 :

Types d’intégrité

Intégrité d’entité

Définition
L'intégrité d'entité garantit que chaque enregistrement dans une table est identifiable de manière unique à l'aide d'une clé primaire (primary key).

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

Définition
L'intégrité référentielle garantit que les valeurs des clés étrangères correspondent à des valeurs existantes dans une autre table.

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

Définition
L'intégrité de domaine impose des types, formats et contraintes de valeur pour chaque colonne.

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

Définition
La normalisation est un processus de transformation des schémas de données visant à **réduire la redondance**, **éviter les anomalies** (insertion, suppression, mise à jour) et **garantir la cohérence** des informations dans une base relationnelle.

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

Pourquoi normaliser ?

Première Forme Normale (1NF)

1NF – Forme Normale 1
Une table est en 1NF si **toutes les valeurs des attributs sont atomiques**, c’est-à-dire **indivisibles**. Il ne doit y avoir **aucune répétition de colonnes** ou **valeurs multiples dans une même cellule**.

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)

2NF – Forme Normale 2
Une table est en 2NF si elle est en 1NF **et** si **chaque attribut non-clé dépend entièrement de la clé primaire** (pas de dépendance partielle).

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.

Troisième Forme Normale (3NF)

3NF – Forme Normale 3
Une table est en 3NF si elle est en 2NF **et** si **aucun attribut non-clé ne dépend d’un autre attribut non-clé** (pas de dépendance transitive).

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.

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