Valider et livrer le rapport
Objectif : Tester le rapport de fréquentation et de retards sur des cas limites, contrôler ses totaux et expliciter les hypothèses de calcul avant sa livraison.
Un rapport peut sembler juste tout en oubliant les adhérents sans emprunt ou en comptant deux fois certaines lignes. Avant de le livrer, vous devez vérifier sa granularité, ses cas limites et ses totaux. Ces contrôles ne remplacent pas la requête du rapport : ils cherchent à révéler les erreurs qu’une lecture rapide ne permet pas de voir.
Vérifier les cas limites
Le rapport final doit conserver une ligne par adhérent, y compris si cette personne n’a aucun emprunt. Commencez par rechercher ces adhérents : la requête de contrôle ne doit pas les faire disparaître. Les colonnes supposées ici sont adherents.id_adherent et emprunts.id_adherent, conformément au schéma de la médiathèque utilisé dans les requêtes du cours.
SELECT
a.id_adherent
FROM adherents AS a
LEFT JOIN emprunts AS e
ON e.id_adherent = a.id_adherent
WHERE e.id_emprunt IS NULL
ORDER BY a.id_adherent;Une ligne par adhérent sans emprunt. Si aucun adhérent n’est renvoyé, le jeu de données ne contient pas ce cas limite : vous ne pouvez donc pas vérifier directement que le rapport le traite correctement.Contrôlez également le cas d’un emprunt sans retard en cours. Un emprunt rendu, ou dont l’échéance n’est pas dépassée, ne doit pas augmenter l’indicateur des retards. La règle déjà définie dans le projet est stricte : un retard en cours a une échéance antérieure à CURRENT_DATE et aucune date de retour.
SELECT
e.id_emprunt,
e.id_adherent,
e.date_echeance,
e.date_retour
FROM emprunts AS e
WHERE e.date_retour IS NOT NULL
OR e.date_echeance >= CURRENT_DATE
ORDER BY e.id_emprunt;Les emprunts retournés ou dont l’échéance n’est pas dépassée. Pour ces lignes, le compteur de retards en cours doit rester à zéro.Réconcilier les totaux
Un premier contrôle compare le nombre de lignes du rapport au nombre d’adhérents. Il faut aussi comparer séparément le total des emprunts et celui des retards avec des calculs directs sur leurs tables sources. Vous avez déjà vu pourquoi une chaîne de jointures peut répéter les lignes ; ici, les contrôles indépendants aident à repérer ce type d’écart sans reprendre toute la construction du rapport.
-- Nombre de lignes attendu pour un rapport à une ligne par adhérent.
SELECT COUNT(*) AS nombre_adherents
FROM adherents;
-- Nombre total d'emprunts enregistré dans la table source.
SELECT COUNT(*) AS nombre_emprunts
FROM emprunts;
-- Nombre de retards encore en cours selon la règle du rapport.
SELECT COUNT(*) AS nombre_retards_en_cours
FROM emprunts AS e
WHERE e.date_echeance < CURRENT_DATE
AND e.date_retour IS NULL;Le premier total doit correspondre au nombre de lignes du rapport. La somme des emprunts par adhérent doit correspondre à nombre_emprunts, et la somme des retards par adhérent à nombre_retards_en_cours. Un écart signale une différence de périmètre, une ligne perdue ou une duplication.Faites ces comparaisons avec les mêmes filtres temporels que le rapport. Si le rapport compte les emprunts d’une période de fréquentation, le contrôle du total des emprunts doit appliquer cette même période ; le nombre de toutes les lignes de emprunts ne serait alors pas comparable. Notez également que les retards peuvent concerner un emprunt déjà compté dans l’indicateur de fréquentation : ces deux nombres décrivent des mesures distinctes, pas des catégories mutuellement exclusives.
Documenter les limites avant livraison
Les résultats dépendent de la définition retenue : période des emprunts, date d’exécution et traitement des retours. CURRENT_DATE rend le nombre de retards susceptible de changer d’un jour à l’autre, même si aucune ligne n’est modifiée. Indiquez donc la date de génération du rapport et rappelez que seul un emprunt non rendu dont l’échéance est passée est compté comme retard en cours.
À retenir
- Vérifiez qu’un adhérent sans emprunt reste présent avec des compteurs nuls.
- Confirmez qu’un emprunt rendu ou non échu n’est pas compté comme retard en cours.
- Comparez les lignes du rapport et ses totaux à des requêtes de contrôle indépendantes.
- Appliquez aux contrôles le même périmètre et les mêmes dates que dans le rapport.
- Documentez la définition du retard et la date de génération des résultats.
La prochaine étape consiste à présenter les résultats dans les tableaux de la page de la médiathèque, en conservant les hypothèses documentées ici.