Projet de conception et de normalisation de données
Projet de conception de bases de données en M1 MIAGE UNC 2023-2024.
Travail à réaliser
Le projet est à réaliser seul ou en binôme (pas de trinômes). Les principaux jalons sont comme suit :
- Choisir un jeu de données Open Data (NC ou FR) :
- pas trop simple, pas trop compliqué : s’il y a trop de colonne, le travail de modélisation va être fastidieux, si le métier est trop complexe, cela sera difficile (sauf si vous avez une expertise particulière) ;
- pas trop petit, pas trop gros : disons un volume suffisamment pour en rendre l’utilisation avec un tableur difficile voir impossible. Attention aussi à ne pas prendre “trop gros” ;
- on donnera la volumétrie, le dictionnaire des colonnes, les statistiques de valeurs uniques, des jeux de données pour motiver leurs choix.
- Faire un schéma E/A avec https://www.mocodo.net et le traduire en relationnel PostgreSQL en le complétant et le simplifiant si besoin ;
- Préparer un (des) script(s) (psql, SQL pur ou Python, pas d’autres langages ou format) de chargement des données originales (CSV généralement) dans le modèle normalisé.
- Proposer quelques requêtes analytiques/statistiques intéressantes, qui révèlent une information non visible par l’humain ou qui serait difficile à obtenir avec un tableur. Vous pouvez générer des graphiques afférents dans le rapport pour illustrer ces résultats. Vous pouvez aussi donner des requêtes pour retrouver des erreurs dans les données.
Il est très conseillé de faire valider le choix du jeu de données par l’enseignant (IRL, via Discord ou mail) avant le 17/11.
Il y a un équilibre à trouver entre volume est complexité : si c’est simple, alors il faut viser un peu plus gros, si c’est complexe, on peut accepter un volume plus réduit. Si les données ne sont pas suffisamment complexes vous pouvez les croiser avec d’autres (e.g., limites administratives).
On attend un import le plus automatisé possible, idéalement, une fois configuré avec les accès BD, un script ou quelques scripts devrait tout faire sans autre intervention que l’exécution.
Pour l’import recommande de commencer par une table d’import simple qui suit le(s) CSV source(s) et à partir de là faire des requêtes du type INSERT INTO ... (SELECT ... FROM source_csv)
. Pour générer la table d’import, on peut utiliser csvsql de csvkit.
S’il faut des outils particuliers ou des bibliothèques Python (comme Pandas), les préciser, et dans tous les cas ne prenez que des outils communs et standards.
Exemples de jeux de données
Vous trouverez des jeux de données sur https://data.gouv.nc/pages/accueil/, https://www.kaggle.com/, https://data.esr.gouv.fr/FR/, https://ressources.data.sncf.com/pages/accueil/ ou https://www.data.gouv.fr/fr/, par exemple :
- Demandes de Valeurs Foncières (transactions immobilières), voir https://app.dvf.etalab.gouv.fr/
- résultats électoraux (sauf les élections présidentielles en France qui ont déjà été traitées dans le passé)
- inscriptions dans les établissements d’enseignement supérieur en France
- données IMDB
- données de l’ISEE
Modalités de rendu et d’évaluation
Le rendu prendra la forme d’un rapport rédigé en Markdown (exclusivement) dont le plan sera les 4 étapes précédentes avec au surplus une courte introduction et une conclusion. Chaque partie donnera le résultat et motivera les choix effectués. Les éléments techniques seront généralement renvoyés en annexe et cités dans le corps du texte. Certains points techniques peuvent toutefois mériter un développement dans le corps du rapport.
Le rapport sera donc accompagné d’annexes le tout regroupé au format zip
.
L’archive contiendra l’ensemble du matériel pour rendre le projet reproductible sur une machine Ubuntu Linux 23.04 avec PostreSQL 16 et Python 3.11 d’installés, dans une base bdav
vide.
Ne mettez pas les données dans les annexes, indiquez où les télécharger.
L’ensemble est à transmettre au plus tard vendredi 08/12 à 23:59 (GMT+11) par email à romuald.thion@univ-lyon1.fr.