1 Fermat, 2016/17, TP info TP11 - Bases de données Deux mots sur les mécanismes d'accès • Vous avez peut-être travaillé auparavant sur un serveur distant : vous avez tous accès en lecture à une même base de données, et vos requêtes transitent par internet (interface phpMyadmin pour une base MySQL). • Dans ce TP, chacun de vous va travailler en local sur sa propre base de données (ça ne change pas grand chose tant qu'on n'agit qu'en lecture...), via un logiciel de gestion très simple inclus dans le navigateur. Les requêtes que vous envoyez seront traitées sur votre PC. Pour ceux qui ne connaissent pas les arcanes des découpages administratifs en France La base que j'ai récupéré en est restée aux anciennes subdivisions ; on s'en contentera. Au moins ont-elles un nom ! Les villes françaises sont appelées administrativement "communes". Schématiquement, la France est découpée en régions, qui sont découpées en départements, qui sont découpés en cantons, qui (en fait ce n'est pas vrai à cause des grandes villes mais passons). Chaque département a un chef-lieu (qui est une commune où se trouvent les services départementaux) ; chaque région a aussi un cheflieu. Les départements ont un numéro : par exemple nous sommes en Haute-Garonne = 31. Les numéros à partir de 95 désignent les territoires "outre-mer". contiennent plusieurs communes Manipulations préliminaires Rendez-vous sur le site cahier-de-prepas et suivez les instructions de la page d'en-tête. Notamment • Téléchargez la base de données (version zippée) disponible sur le site cahier-prepas, dézippez-la en villes.sqlite. • Téléchargez l'add-on spécialisé de Firefox " SQLite Manager " ; vous pouvez aussi le télécharger ici https ://addons.mozilla.org/fr/refox/addon/sqlite-manager/ • Installez-le. L'outil de gestion de base de données est alors disponible dans la rubrique "outils". • Vous pouvez ouvrir le fchier villes.sqlite • Vous pouvez commencer à découvrir le contenu de la base de données via les onglets "structure" et "parcourir et rechercher". Mais nous utiliserons principalement l'onglet "exécuter le sql". I. Requêtes sur une seule table 1. Quelques requêtes de base a. Donner la liste alphabétique des communes de moins de 10 habitants, avec leur population (recensement de 2010). b. Dresser la liste des 10 communes françaises les plus étendues en surface. Fermat, 2016/17, TP info 2 c. Même question que b. en se limitant à la métropole (numéro du département <96). 2. Agrégats a. Combien y a-t-il de communes en Haute-Garonne (département numéro 31) ? b. Combien y a-t-il d'habitants dans la Haute-Garonne (= dans l'ensemble des communes de Haute-Garonne) ? c. Quelle est la densité de population de la France (métropole) ? d. Quelles sont les communes de Haute-Garonne dont la densité est supérieure à 10 fois la densité de la France ? II. Requêtes avec jointure Dans ces requêtes on achera les noms des départements et des régions en clair, pas simplement leur code. 1. Simples jointures a. Quelle est la liste des départements contenant une commune nommée Andilly ? b. On cherche les 10 départements dont les chefs lieux sont les plus peuplés. On tape ceci SELECT departement.nom,cheflieu,pop2010 FROM ville JOIN departement ON departement.cheflieu=ville.nom ORDER BY pop2010 DESC LIMIT 0,10 Tester. On essaye ensuite de faire la même chose avec les 10 moins peuplés : que sut-il de faire ? Le tester ; il y a un bug : expliquer pourquoi et critiquer la représentation de données choisie... Qu'aurait-il fallu faire ? c. Quelles sont les villes de Haute Garonne qui ont un homonyme en France ? On demande le nom, l'identiant (idville) de l'homonyme et son numéro de département (qu'on pourra laisser ici sous la forme numdep). Ensuite même question avec juste la liste des communes ayant un homonyme, sans répétition. 2. Agrégats et jointure a. Donnez la liste des 10 départements qui contiennent le plus de communes. On donnera le nom du département et le nombre de communes. b. Donnez la liste des départements qui sont plus denses que la moyenne nationale. c. Donnez la liste des départements qui contiennent plus de communes que la Haute-Garonne. On donnera juste le numéro de département et le nombre de communes dans un premier temps, puis le vrai nom du département ensuite. d. Quelle est la densité de population de chaque région (faire une liste alphabétique) ? III. 1. Exploitation graphique Comment utiliser le module sqlite3 dans Python • Il faut d'abord l'importer : import sqlite3 as sql • Puis ouvrir une connexion avec la base : par exemple Base=sql.connect("C ://Users/Fabrice/Desktop/baselite/villes.sqlite") • Pour eectuer une requête req="SELECT numreg,nom FROM regions" result=Base.execute(req) • Voici un exemple où l'on récupère les diérents enregistrements par un for : les attributs successifs par enreg[0], enreg[1], ... 3 Fermat, 2016/17, TP info for enreg in result : print("Numéro : ",enreg[0]," - ", enreg[1]) • Pour un tracé : on peut utiliser scatter pour créer des points de couleur variable en fonction d'une liste T de valeurs import matplotlib.pyplot as plt plt.axis('equal') # même échelle en x et en y plt.scatter(X,Y,c=T) 2. Mise en ÷uvre Pour rester en métropole on se limitera systématiquement à des numéros de département inférieurs à 95. On passera de la longitude à la coordonnée x en multipliant par cos (ceci approche bien la projection de Mercator pour la zone correspondant à la France). 2π 9 1. Placer les 5000 communes les plus peuplées sur un dessin à partir de leur latitude et leur longitude. 2. Représenter l'altitude maximale de chaque canton. On représentera donc un canton par un seul point, en faisant la moyenne de la latitude et celle de la longitude. 3. Représenter les accroissements de population 1999-2010 de chaque canton, en pourcentage. On représente là aussi un canton par un seul point. Remarque : pour un meilleur résultat j'ai appliqué la fonction T=np.log10(T+1.5) IV. Pour les rapides Comment reprendriez-vous la conception de cette base de données ? On cherchera notamment comment gérer - les chef-lieux - les cantons qui font moins d'une commune, ou qui sont formés d'un bout de commune et d'autre communes - la compatibilité et la durabilité des données lors d'un changement de découpage administratif tel que celui que la France vient de connaître.