TP - Meurtre à SQL City☘
source
Ce TP est une adaptation en français de l'excellent travail réalisé par le site https://mystery.knightlab.com/, mis au point par la northwestern university (Chicago - San Francisco).
Grâce à vos nouvelles connaissances en SQL, vous avez décidé d'ouvrir votre propre agence de détective privé. Votre client vous a mandaté pour retrouver un meurtrier car il n'a pas confiance dans le travail de la police.
Après un petit peu de « fouinage », vous avez pu récupérer la base de données de la police ainsi que quelques informations incontestables :
- le meurtre a eu lieu le 15 janvier 2018 ;
- le meurtre s'est déroulé à SQL City ;
- le club de sport "Get Fit Now !" a un lien avec cette affaire.
En ouvrant la base de données avec DB Browser et en lançant la requête :
1 2 3 |
|
vous avez pu modéliser le schéma suivant pour la base de données :
Remarque
La requête :
1 2 3 |
|
Attention
Les témoins que vous allez interroger ne sont pas toujours très fiables.
Pour les interrogations sur les chaînes de caractères, il est conseillé
d'utiliser le mot-clef LIKE
...
A présent, deux « enquêtes » s'offrent à vous :
- La partie A n'est pas du tout guidée ;
- La partie B est guidée.
Faites votre choix !
Conseil
Faîtes un clic droit sur le schéma de la base de données pour enregistrer l'image dans votre répertoire personnel. En l'ouvrant, vous pourrez alors mieux visualiser ce schéma en zoomant si nécessaire.
Partie A - Enquête non guidée☘
Recherchez l'assassin en formulant des requêtes SQL successives dans l'éditeur de DB Browser.
Une fois que vous pensez avoir identifié cet assassin, terminez par les deux requêtes suivantes :
-
insertion d'un nouvel enregistrement dans la table solution, dans lequel vous remplacer la chaîne
'le nom du suspect'
par le nom de votre suspect écrit entre apostrophes :1 2
INSERT INTO solution VALUES (1, 'le nom du suspect');
-
vérification de cette proposition à l'aide d'un déclencheur (hors programme) :
1 2
SELECT value FROM solution;
Partie B - Enquête guidée☘
Encore peu sûr de vous, vous faîtes appel à votre prof de lycée pour vous guider.
-
Déterminez toutes les scènes de crime de SQL City.
-
Comme la base n'est pas forcément normalisée, une requête sur les chaînes de caractères peut ne pas renvoyer de réponse si cette requête porte sur
'SQL city'
au lieu de'SQL City'
.
Afin d'éviter ce désagrément, on peut utiliser les fonctionsLOWER()
ouUPPER()
pour passer tous les caractères en minuscule (ou en majuscule).Un exemple
1 2 3
SELECT DISTINCT city FROM crime_scene_report WHERE LOWER(city) = 'sql city';
Centrez votre recherche sur le crime relatif à votre enquête.
-
Identifiez les deux témoins du meurtre sur lequel vous enquêtez.
-
Retrouvez les transcriptions des interrogatoires de ces témoins.
Essayez de les retrouver en utilisant des jointures. -
Complétez à l'aide des requêtes nécessaires et retrouvez le suspect.
-
Une fois que vous pensez avoir identifié cet assassin, terminez par les deux requêtes suivantes :
-
insertion d'un nouvel enregistrement dans la table solution, dans lequel vous remplacer la chaîne
'le nom du suspect'
par le nom de votre suspect écrit entre apostrophes : :1 2
INSERT INTO solution VALUES (1, 'le nom du suspect');
-
vérification de cette proposition à l'aide d'un déclencheur (hors programme) :
1 2
SELECT value FROM solution;
-