Sql - Gestion De Bibliotheque
Parfait ! Voici un autre exercice complet de SQL (SQLite), cette fois-ci sur une gestion de bibliothèque.
1. Modèle Logique des Données (MLD) en ER Diagram
Extrait de code
erDiagram
LIVRE ||--o{ EMPRUNT : est_emprunte
ADHERENT ||--o{ EMPRUNT : emprunte
EMPRUNT {
INTEGER id_emprunt PK
INTEGER id_livre FK
INTEGER id_adherent FK
DATE date_emprunt
DATE date_retour_prevue
DATE date_retour_effective
}
AUTEUR ||--o{ LIVRE : a_ecrit
LIVRE {
INTEGER id_livre PK
VARCHAR titre
VARCHAR isbn
INTEGER id_auteur FK
INTEGER id_genre FK
INTEGER nombre_exemplaires
}
GENRE ||--o{ LIVRE : est_de_genre
ADHERENT {
INTEGER id_adherent PK
VARCHAR nom
VARCHAR prenom
VARCHAR adresse
VARCHAR telephone
DATE date_inscription
}
AUTEUR {
INTEGER id_auteur PK
VARCHAR nom_auteur
VARCHAR prenom_auteur
}
GENRE {
INTEGER id_genre PK
VARCHAR nom_genre
}
2. Création de la Base de Données et des Tables (À faire par vous)
Créez une nouvelle base de données nommée bibliotheque.db
et exécutez les instructions SQL pour créer les tables basées sur le diagramme ER ci-dessus. N’oubliez pas les clés primaires et étrangères.
3. Insertion de Données (Instructions et Données)
Insérez les données suivantes dans les tables que vous avez créées.
Table ADHERENT
:
id_adherent | nom | prenom | adresse | telephone | date_inscription |
1 | Traoré | Fatou | Cité Keur Gorgui, Thiès | 77 123 45 67 | 2024-01-15 |
2 | Diop | Aliou | Quartier Grand Standing, Mbour | 76 987 65 43 | 2024-03-20 |
3 | Sow | Aminata | Centre Ville, Saly Portudal | 78 555 11 22 | 2024-05-10 |
4 | Mbaye | Moussa | Sicap Liberté, Dakar | 70 777 88 99 | 2024-07-01 |
Table AUTEUR
:
id_auteur | nom_auteur | prenom_auteur |
1 | Sembène | Ousmane |
2 | Kane | Cheikh Hamidou |
3 | Ba | Mariama |
4 | Soyinka | Wole |
Table GENRE
:
id_genre | nom_genre |
1 | Roman |
2 | Essai |
3 | Théâtre |
4 | Poésie |
Table LIVRE
:
id_livre | titre | isbn | id_auteur | id_genre | nombre_exemplaires |
1 | Les Bouts de Bois de Dieu | 9782708701506 | 1 | 1 | 3 |
2 | L’Aventure Ambiguë | 9782253033682 | 2 | 1 | 2 |
3 | Une si longue lettre | 9782842140047 | 3 | 1 | 4 |
4 | La Tragédie du Roi Christophe | 9782080703414 | 1 | 3 | 2 |
5 | Le Soleil des Indépendances | 9782253014933 | 4 | 1 | 3 |
6 | Anthologie de la nouvelle poésie nègre et malgache de langue française | 9782708700301 | 4 | 4 | 1 |
Table EMPRUNT
:
id_emprunt | id_livre | id_adherent | date_emprunt | date_retour_prevue | date_retour_effective |
1 | 1 | 1 | 2025-03-10 | 2025-03-31 | 2025-03-28 |
2 | 2 | 2 | 2025-03-15 | 2025-04-05 | NULL |
3 | 3 | 1 | 2025-03-25 | 2025-04-15 | 2025-04-12 |
4 | 1 | 3 | 2025-04-01 | 2025-04-22 | NULL |
5 | 4 | 2 | 2025-04-05 | 2025-04-26 | NULL |
Instructions pour l’insertion (À faire par vous) :
Utilisez l’instruction INSERT INTO
pour ajouter ces données dans les tables correspondantes.
4. Requêtes SQL (Beaucoup !) (À faire par vous)
Voici une autre longue liste de requêtes SQL pour votre base de données de bibliothèque.
Requêtes Simples:
- Affichez tous les adhérents.
- Affichez les noms et prénoms des auteurs.
- Affichez tous les livres.
- Affichez les titres et ISBN des livres.
- Affichez les livres du genre ‘Roman’.
- Affichez les adhérents inscrits après le 1er mars 2024.
- Affichez les emprunts en cours (date_retour_effective est NULL).
- Affichez les livres dont le nombre d’exemplaires est inférieur à 3.
- Affichez les genres de livres disponibles.
- Affichez les livres écrits par l’auteur dont l’id est 1.
Requêtes avec JOIN:
- Affichez les titres des livres et les noms de leurs auteurs.
- Affichez les noms des adhérents et les titres des livres qu’ils ont empruntés.
- Affichez les titres des livres et les noms de leurs genres.
- Affichez les détails des emprunts (id_emprunt, titre du livre, nom de l’adhérent).
- Affichez les noms des auteurs et le nombre de livres qu’ils ont écrits.
- Affichez les noms des genres et le nombre de livres dans chaque genre.
- Affichez les adhérents qui ont des emprunts en cours.
- Affichez les livres qui n’ont jamais été empruntés (en utilisant LEFT JOIN).
- Affichez les emprunts avec le nom de l’adhérent et le titre du livre, en incluant les dates d’emprunt et de retour prévue.
- Affichez les livres avec leur titre et le nom de l’auteur, triés par titre.
Requêtes avec fonctions d’agrégation et GROUP BY, HAVING:
- Comptez le nombre total d’adhérents.
- Comptez le nombre total de livres.
- Comptez le nombre d’emprunts effectués.
- Comptez le nombre de livres par auteur.
- Comptez le nombre de livres par genre.
- Trouvez le genre avec le plus de livres.
- Trouvez l’auteur avec le plus de livres.
- Comptez le nombre d’emprunts par adhérent.
- Affichez les adhérents qui ont emprunté plus d’un livre.
- Trouvez le livre le plus emprunté (nécessite une sous-requête ou une jointure et un regroupement).
- Calculez le nombre moyen d’exemplaires par livre.
- Trouvez le livre avec le moins d’exemplaires.
Requêtes avec LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN (si supporté):
- Affichez tous les livres et leurs emprunts correspondants (même les livres non empruntés).
- Affichez tous les adhérents et les livres qu’ils ont empruntés (même les adhérents sans emprunt).
- Affichez tous les auteurs et leurs livres (même les auteurs sans livre).
- Affichez tous les genres et les livres associés (même les genres sans livre).
Requêtes avec sous-requêtes:
- Affichez les livres du même genre que ‘Les Bouts de Bois de Dieu’.
- Affichez les adhérents qui ont emprunté au moins un livre écrit par ‘Sembène Ousmane’.
- Affichez les livres qui n’ont jamais été empruntés.
- Affichez les adhérents qui ont emprunté le livre avec le plus grand nombre d’exemplaires.
- Affichez les livres dont le nombre d’exemplaires est supérieur à la moyenne du nombre d’exemplaires de tous les livres.
Requêtes de modification de données:
- Ajoutez un nouvel exemplaire du livre ‘Les Bouts de Bois de Dieu’.
- Mettez à jour la date de retour effective de l’emprunt dont l’id est 2 à la date d’aujourd’hui.
- Modifiez le genre du livre ‘Anthologie de la nouvelle poésie nègre et malgache de langue française’ à ‘Poésie et Essai’ (nécessite potentiellement une nouvelle table de relation si un livre peut avoir plusieurs genres, sinon choisissez l’un des deux).
- Supprimez l’adhérent dont l’id est 4 (attention aux contraintes).
- Supprimez tous les emprunts qui ont une date de retour effective antérieure au 1er janvier 2025.
Requêtes avancées:
- Créez une vue qui affiche le titre du livre et le nom de l’adhérent pour tous les emprunts en cours.
- Sélectionnez toutes les informations de cette vue.
- Trouvez les livres qui ont été empruntés plus de deux fois.
- Identifiez les adhérents qui ont emprunté des livres de tous les genres disponibles (requête plus complexe).
J’espère que cet exercice vous plaira ! N’hésitez pas si vous avez des questions sur la structure ou l’insertion des données. À vous de jouer avec ces requêtes !