PaliSkill
SQL Intermédiaire

Leçon 1 / 9 — Chapitre 8: Mise en pratique : bibliothèque

Les tables livres, adhérents et emprunts

Ce chapitre introduit un nouveau scénario : une médiathèque, avec trois tables indépendantes du reste du catalogue.

livres
id | titre                          | auteur     | genre            | annee_publication
1  | Les Heures Silencieuses                | Farel       | roman            | 2001
2  | Horizons Infinis                         | Delorme      | science          | 1980
3  | Le Pêcheur et le Large       | Vasseur  | roman            | 1952
4  | Comprendre l'Univers    | Norbert    | science          | 1988
5  | L'Éveil des Mondes                      | Kadiri     | science-fiction  | 1951
6  | Les Sables de Kaelis                           | Lenoir    | science-fiction  | 1965

adherents
id | nom      | date_inscription
1  | Amara     | 2022-03-01
2  | Koffi     | 2022-06-15
3  | Nadia     | 2023-01-10
4  | Samuel    | 2023-05-20
5  | Yasmin    | 2024-02-01

emprunts
id | livre_id | adherent_id | date_emprunt | date_retour_prevue | rendu
1  | 1        | 1           | 2024-01-05   | 2024-01-19         | true
2  | 1        | 2           | 2024-02-10   | 2024-02-24         | true
3  | 3        | 1           | 2024-03-01   | 2024-03-15         | false
4  | 4        | 3           | 2024-03-10   | 2024-03-24         | false
5  | 5        | 2           | 2024-03-20   | 2024-04-03         | true
6  | 6        | 4           | 2024-04-01   | 2024-04-15         | false

emprunts est une table de liaison : chaque ligne relie un livre précis à un adhérent précis, via deux clés étrangères (livre_id vers livres.id, adherent_id vers adherents.id). Un même livre peut apparaître dans plusieurs emprunts (à des adhérents différents, ou au même à des dates différentes), et un même adhérent peut emprunter plusieurs livres — c'est cette table qui rend possible une relation plusieurs-à-plusieurs entre livres et adherents, qu'aucune des deux tables ne pourrait exprimer seule.

À retenir :

  • Une table de liaison relie deux tables par deux clés étrangères, une vers chacune.
  • Elle permet une relation plusieurs-à-plusieurs : un livre a plusieurs emprunts, un adhérent aussi.
  • rendu vaut false tant que le livre n'a pas été rapporté — c'est cette colonne qui distingue un emprunt en cours d'un emprunt terminé.

À vous de jouer : comptez, dans emprunts, combien de lignes concernent l'adhérent Amara (id 1).

À vous de jouer

À faire

Voici la table livres (extrait) :

livres
id | titre                          | auteur     | genre            | annee_publication
1  | Les Heures Silencieuses                | Farel       | roman            | 2001
2  | Horizons Infinis                         | Delorme      | science          | 1980
3  | Le Pêcheur et le Large       | Vasseur  | roman            | 1952
4  | Comprendre l'Univers    | Norbert    | science          | 1988
5  | L'Éveil des Mondes                      | Kadiri     | science-fiction  | 1951
6  | Les Sables de Kaelis                           | Lenoir    | science-fiction  | 1965

Combien de livres cette table contient-elle ?

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Un nombre.

À vous de jouer

À faire

Voici la table emprunts :

emprunts
id | livre_id | adherent_id | date_emprunt | date_retour_prevue | rendu
1  | 1        | 1           | 2024-01-05   | 2024-01-19         | true
2  | 1        | 2           | 2024-02-10   | 2024-02-24         | true
3  | 3        | 1           | 2024-03-01   | 2024-03-15         | false
4  | 4        | 3           | 2024-03-10   | 2024-03-24         | false
5  | 5        | 2           | 2024-03-20   | 2024-04-03         | true
6  | 6        | 4           | 2024-04-01   | 2024-04-15         | false

Combien de lignes de emprunts concernent l'adhérent d'id 1 (Amara) ?

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Un nombre.

À vous de jouer

À faire

La table emprunts contient-elle une clé étrangère vers adherents ? Répondez par oui ou non.

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Oui ou non.

Quitter le module