01
Schéma Bibliothèque
Modélisez et créez une base de données complète pour gérer une bibliothèque municipale : livres, auteurs, adhérents et emprunts.
CREATE TABLE
FOREIGN KEY
Types de données
Débutant
📐 Schéma entité-relation
genres auteurs
id ─────────── id
nom nom, prenom
nationalite, naissance
│
│ (1,n)
▼
livres
id, titre, isbn
annee, nb_pages
disponible
auteur_id ──→ auteurs.id
genre_id ──→ genres.id
│
│ (1,n)
▼
emprunts
id, date_emprunt
date_retour_prevue
date_retour_effective
livre_id ──→ livres.id
adherent_id ──→ adherents.id
▲
│ (1,n)
│
adherents
id, nom, email
telephone
date_inscription
actif
🎯 Objectifs
- Créer la base de données
bibliothequeavec les 5 tables ci-dessus - Définir les clés primaires, clés étrangères, contraintes NOT NULL et UNIQUE
- Choisir les types de données appropriés pour chaque colonne
- Insérer des données de test (5 auteurs, 7 livres, 4 adhérents, 4 emprunts)
- Vérifier l'intégrité référentielle en tentant des opérations interdites
📋 Instructions
- Démarrez MySQL (XAMPP, WAMP, ou service MySQL)
- Exécutez le script solution via CLI ou phpMyAdmin :
mysql -u root -p < solution.sql
# ou via phpMyAdmin : Importer → Choisir le fichier → Exécuter
🧪 Requêtes à tester
-- 1. Liste de tous les livres avec auteur et genre
SELECT l.titre, CONCAT(a.prenom, ' ', a.nom) AS auteur, g.nom AS genre
FROM livres l
JOIN auteurs a ON l.auteur_id = a.id
LEFT JOIN genres g ON l.genre_id = g.id;
-- 2. Livres actuellement empruntés
SELECT l.titre, ad.nom AS adherent, e.date_retour_prevue
FROM emprunts e
JOIN livres l ON e.livre_id = l.id
JOIN adherents ad ON e.adherent_id = ad.id
WHERE e.date_retour_effective IS NULL;
-- 3. Nombre de livres par auteur
SELECT CONCAT(a.prenom, ' ', a.nom) AS auteur, COUNT(*) AS nb_livres
FROM livres l
JOIN auteurs a ON l.auteur_id = a.id
GROUP BY a.id, a.nom, a.prenom;
✅ Critères de validation
- Toutes les FK sont correctement définies avec ON DELETE approprié
emaildes adhérents est UNIQUEisbnest UNIQUE mais nullable- Les données de test s'insèrent sans erreur
- Impossible de supprimer un auteur ayant des livres (ON DELETE RESTRICT)