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

  1. Créer la base de données bibliotheque avec les 5 tables ci-dessus
  2. Définir les clés primaires, clés étrangères, contraintes NOT NULL et UNIQUE
  3. Choisir les types de données appropriés pour chaque colonne
  4. Insérer des données de test (5 auteurs, 7 livres, 4 adhérents, 4 emprunts)
  5. Vérifier l'intégrité référentielle en tentant des opérations interdites

📋 Instructions

  1. Démarrez MySQL (XAMPP, WAMP, ou service MySQL)
  2. 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

⬇ Télécharger solution.sql 📖 Revoir le cours 🧠 QCM