Retour au blog

10 Exercices Corrigés sur la Modélisation de Bases de données : MCD, MLD et SQL

La donnée est le nouvel or noir ! Apprends à concevoir des architectures robustes et à extraire l'information pertinente avec précision grâce à la modélisation et au langage SQL.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Niveau : Moyen — Durée estimée : 120 min — 10 exercices avec corrections détaillées

Rappel des notions clés

La conception d'une base de données relationnelle commence par le MCD (Modèle Conceptuel de Données) utilisant la méthode Merise. On y définit les entités (objets), leurs attributs et les associations qui les lient, avec des cardinalités (0,1, 1,1, 1,n, etc.).

Le passage au MLD (Modèle Logique de Données) suit des règles strictes : une association (1,n) devient une clé étrangère du côté "n", tandis qu'une association (n,n) génère une nouvelle table dite "de jointure". C'est l'étape cruciale pour assurer l'intégrité référentielle.

Enfin, le SQL (Structured Query Language) permet d'interagir avec la base. Les requêtes avancées utilisent des jointures (INNER JOIN, LEFT JOIN) pour lier les tables et des fonctions d'agrégation (COUNT, SUM, AVG) combinées à GROUP BY pour effectuer des statistiques.

Règle MLD (1,n) : Clé primaire du côté "1" migre en clé étrangère côté "n". | Structure SQL : SELECT cols FROM table WHERE cond GROUP BY col HAVING cond ORDER BY col;

Exercices — Niveau Facile

Exercice 1 : Identifie les cardinalités pour l'association "Posséder" entre une entité CLIENT et une entité COMPTE BANCAIRE (un client peut avoir plusieurs comptes, un compte appartient à un seul client).

Correction :

CLIENT --- (0,n) --- Posséder --- (1,1) --- COMPTE Un client peut exister sans compte (0) ou en avoir plusieurs (n). Un compte est obligatoirement lié à un client (1) et un seul (1).

Exercice 2 : Transforme ce mini-MCD en MLD : CLIENT (id, nom) --- (1,n) --- COMMANDE (num, date).

Correction :

CLIENT (id, nom) COMMANDE (num, date, #id_client) L'identifiant du client devient une clé étrangère dans la table COMMANDE.

Exercice 3 : Écris une requête SQL pour lister tous les noms des clients habitant à "Paris".

Correction :

SELECT nom FROM clients WHERE ville = 'Paris';

Exercices — Niveau Moyen

Exercice 4 : MCD complexe. Modélise l'association entre ETUDIANT et COURS (un étudiant suit plusieurs cours, un cours est suivi par plusieurs étudiants). Quelle est la conséquence au niveau du MLD ?

Correction :

MCD : ETUDIANT --- (1,n) --- Inscription --- (0,n) --- COURS. MLD : Création d'une table de jointure INSCRIPTION (#id_etudiant, #id_cours). Une association (n,n) crée toujours une nouvelle table contenant les clés primaires des deux entités.

Exercice 5 : SQL. Affiche le nom des clients et le montant total de leurs commandes passées en 2023.

Correction :

SELECT c.nom, SUM(o.montant) FROM clients c JOIN commandes o ON c.id = o.client_id WHERE o.date LIKE '2023%' GROUP BY c.nom;

Exercice 6 : Qu'est-ce qu'une jointure externe (LEFT JOIN) et dans quel cas est-elle utile ?

Correction :

Un LEFT JOIN retourne tous les enregistrements de la table de gauche, même s'il n'y a pas de correspondance dans la table de droite. Utile pour lister tous les clients, même ceux qui n'ont jamais commandé.

Exercices — Niveau Difficile

Exercice 7 : SQL Avancé. Trouve les noms des produits qui n'ont jamais été vendus (en utilisant une sous-requête avec NOT IN ou un LEFT JOIN).

Correction :

SELECT nom FROM produits WHERE id NOT IN (SELECT produit_id FROM ventes); OU : SELECT p.nom FROM produits p LEFT JOIN ventes v ON p.id = v.produit_id WHERE v.id IS NULL;

Exercice 8 : Normalisation. Une table est en 1ère Forme Normale (1FN) si ses attributs sont atomiques. Explique pourquoi la colonne "Téléphones" contenant "0601. / 0142." viole cette règle.

Correction :

Elle n'est pas atomique car elle contient une liste de valeurs. Pour respecter la 1FN, il faudrait une ligne par numéro ou, mieux, une table séparée pour les téléphones.

Exercice 9 : SQL. Calcule le panier moyen (moyenne des montants de commande) par ville, mais n'affiche que les villes où ce panier moyen est supérieur à 100€.

Correction :

SELECT ville, AVG(montant) FROM commandes GROUP BY ville HAVING AVG(montant) > 100;

On utilise HAVING car la condition porte sur une fonction d'agrégation.

Exercice 10 : Modélisation de l'héritage. Comment modéliser en MLD une entité UTILISATEUR qui se décline en ADMIN et CLIENT ?

Correction :

Il existe 3 stratégies : 1. Une seule table UTILISATEUR avec tous les champs et un champ "type". 2. Deux tables séparées ADMIN et CLIENT (si pas de champs communs). 3. Trois tables : UTILISATEUR (champs communs) et ADMIN/CLIENT (champs spécifiques + clé étrangère vers UTILISATEUR).

Bilan et conseils

Ce qu'il faut retenir : Une bonne base de données commence par un MCD solide. Ne néglige jamais l'étape de modélisation avant de coder. En SQL, maîtrise les jointures et les agrégations, ce sont elles qui donnent toute la puissance à tes analyses.

Comment ORBITECH Peut T'aider

ORBITECH AI Academy met à ta disposition des outils concrets pour réviser plus efficacement et progresser à ton rythme.

Tous ces outils sont disponibles sur ta plateforme ORBITECH. Connecte-toi et explore ceux qui correspondent le mieux à tes besoins !

Contenu en libre diffusion — partage autorisé sous réserve de mentionner ORBITECH AI Academy comme source.

COMMENCE DÈS MAINTENANT

Rejoins ORBITECH et accède à des cours, exercices et quiz personnalisés.

Commencer gratuitement
🌍 ORBITECH AI Academy — Free education in 88 languages for 171 countries