Vérifier et livrer les résultats
Objectif : Contrôler que les requêtes répondent aux demandes et présenter des résultats reproductibles dans un fichier SQL.
Une requête qui s’exécute sans erreur n’est pas nécessairement correcte : elle peut oublier une condition ou compter les mauvaises lignes. Pour livrer un suivi fiable, vous devez confronter chaque résultat à la demande, au schéma et aux données réellement disponibles. Vous allez terminer le fichier requetes.sql en ajoutant des contrôles explicites, sans modifier les requêtes déjà préparées.
Reprendre les critères avant de livrer
Pour les retards enregistrés, le résultat doit présenter les emprunts associés à une ligne de retards, avec les informations de retard demandées. Pour le classement des œuvres, chaque ligne doit correspondre à une œuvre et son indicateur doit compter ses emprunts ; le classement doit être décroissant. Ces critères reprennent le travail préparé dans les deux leçons précédentes : ne changez ni la question métier ni la signification des colonnes en cours de vérification.
Exécutez le fichier dans la base de la médiathèque avec un client compatible MariaDB 11. Vérifiez d’abord qu’il ne comporte pas d’erreur de syntaxe, puis examinez les en-têtes, le nombre de lignes et quelques valeurs représentatives. Pour le classement, contrôlez notamment qu’une œuvre très empruntée n’apparaît pas après une œuvre moins empruntée ; en cas d’égalité, l’ordre secondaire doit rester celui indiqué dans la requête.
Contrôler des résultats reproductibles
Vous pouvez vérifier certaines propriétés avec des requêtes de contrôle indépendantes, placées à la suite des requêtes de suivi. La première vérifie que chaque retard est bien relié à un emprunt existant ; la seconde recalcule le nombre d’emprunts par œuvre pour contrôler le classement. Elles ne remplacent pas la lecture du résultat : elles donnent un point de comparaison à partir des mêmes tables.
-- Contrôle : aucun retard ne doit référencer un emprunt absent
SELECT COUNT(*) AS retards_sans_emprunt
FROM retards AS r
LEFT JOIN emprunts AS e
ON e.id_emprunt = r.id_emprunt
WHERE e.id_emprunt IS NULL;
-- Contrôle indépendant : nombre d'emprunts par œuvre
SELECT o.id_oeuvre, o.titre, COUNT(e.id_emprunt) AS nombre_emprunts
FROM oeuvres AS o
LEFT JOIN exemplaires AS ex
ON ex.id_oeuvre = o.id_oeuvre
LEFT JOIN emprunts AS e
ON e.id_exemplaire = ex.id_exemplaire
GROUP BY o.id_oeuvre, o.titre
ORDER BY nombre_emprunts DESC, o.titre ASC;La première requête renvoie une seule valeur : 0 signifie qu’aucun retard ne référence un emprunt absent. La seconde affiche le nombre d’emprunts par œuvre, y compris les œuvres sans emprunt, placées après celles qui en ont.Le contrôle des retards attend une valeur égale à zéro dans un jeu de données cohérent avec la clé étrangère. Pour le classement, comparez les nombres obtenus à ceux de la requête livrée : les deux résultats doivent utiliser le même périmètre et le même ordre de départage. Le LEFT JOIN conserve ici les œuvres sans emprunt ; si votre requête de suivi visait uniquement les œuvres empruntées, comparez seulement les œuvres ayant un nombre supérieur à zéro.
Livrer le fichier SQL
Avant livraison, vérifiez que chaque requête possède un commentaire qui annonce son objectif, que les instructions sont séparées par des points-virgules et que les noms de tables et de colonnes correspondent au schéma. Gardez les requêtes précédentes dans leur ordre et ajoutez les contrôles en fin de fichier ; aucun autre fichier du projet ne change dans cette leçon. Un autre lecteur doit pouvoir exécuter le même fichier sur la même base et retrouver les mêmes résultats, sous réserve que les données n’aient pas changé.
À retenir
- Vérifiez chaque résultat par rapport aux critères de la demande métier, pas seulement à l’absence d’erreur SQL.
- Comparez les résultats de suivi à des contrôles indépendants construits sur les mêmes tables et le même périmètre.
- Interprétez un résultat vide selon les données disponibles ; n’inventez pas une information absente du schéma.
- Livrez requetes.sql avec des commentaires, des instructions terminées et les contrôles ajoutés à la suite du contenu existant.