info@mp2i-pv
Tous les fichiers nécessaires sont installés sur les machines de la salle de TP.
Ceux qui voudraient faire le TP sur leur propre machine doivent installer un SGBD (de préférence postgreSQL ) et créer une base avec les données du fichier communes.sql. Si vous utilisez un autre SGBD, les commandes seront sans doute différentes de celles de postgresql.
Dans ce TP, on se propose d’interagir avec une base de données sur le thème des communes de France. On va chercher à répondre à des questions comme :
Pour chaque question, je vous donnerai une information qui ne devrait pas vous aider à trouver la réponse, mais devrait vous aider à vérifier l’exactitude de votre réponse.
Les données proviennent du site de l’INSEE :
communes
, departements
et
regions
ont été créées à partir de données téléchargées à
l’adresse
https://www.insee.fr/fr/information/2560452.demographie
et equipements
ont été
créées puis téléchargées à partir de l’adresse suivante :
https://statistiques-locales.insee.fr.La base de données communes
regroupe les informations
nécessaires. Vous pouvez lancer postgres
sur cette base sur les
machines de la salle TP avec les commandes
su - utilisateur # pour devenir l'utilisateur utilisateur
psql communes # connexion en tant qu'utilisateur
(attention: c’est bien utilisateur
qu’il faut mettre, pour tout le
monde, c’est le seul compte qui peut accéder à la base de données)
Avant de commencer à écrire les requêtes, je vous
conseille de bien vous familiariser avec les schémas des tables, que
vous pouvez obtenir sur postgres
grâce à la commande \d
suivi du nom de la table. La liste des tables peut être obtenue grâce
à la commande \dt
.
On garantit que les données sont cohérentes (les informations récupérées sur le site de l’INSEE ne concernent pas toutes la même année, mais elles ont été légèrement modifiées pour que les tables soient cohérentes entre elles). Dans toute la suite, on fera comme si toutes les données portaient sur une seule et même année.
Dans toute la suite on demande d’écrire une requête en SQL
qui
permet de répondre à la question posée. Toutes les requêtes doivent
s’exécuter en moins de 2 s. Lorsque rien n’est précisé, le contexte
détermine si la réponse peut ou non contenir des doublons. Si l’on
demande par exemple quelles sont les communes qui … ou
pour chaque commune donner …, la réponse ne doit pas
contenir de doublons, on attend une ligne par commune. En revanche si
la question est quels sont les noms des communes qui …,
sans précision supplémentaire, on attend a priori toujours une ligne
par commune. Comme plusieurs communes peuvent avoir le même nom, le
résultat de cette requête peut contenir des doublons.
Nota:
on fera un autre TP bases de données la semaine prochaine avec des agrégats,
pour certaines requêtes, je mets une indication pour que vous puissiez tester votre réponse,
cette base est volontairement mal conçue, mais il faut faire avec, on la retravaillera ensemble la semaine prochaine.
Dans cette section, nous utilisons uniquement les tables
communes
, departements
et regions
.
a
est un facteur de b
avec a
LIKE '%b%'
où ‘%’ désigne une chaîne quelconque.Dans cette section, nous utilisons en plus la table demographie
.
communes
. On pourra utiliser
l’étoile préfixée par le nom ou l’alias de la table. [6 lignes]LENGTH
sur les chaînes de caractères. [5 lignes]Enfin, dans cette section, nous utilisons également la table
equipements