Contexte
En mission pour un groupement d’agence immobilière, il fallait créer une base de donnée immobilière à partir de plusieurs fichiers csv fournis provenant de différentes sources (DVF et INSEE).
- La liste de toutes les transactions immobilières au premier semestre 2020
- La liste de toutes les communes de France
- Le fichier des répartition des communes par département et région
Démarche
Dictionnaire de données
La première étape était de recréer le dictionnaire de données, en respectant le format imposé par le client.

Schéma de la base de données
Puis la conception de la base de données en schéma UML, tout en respectant la norme 3NF.

Ici la notion centrale était celle de bien, l’objectif étant de déterminer des informations sur le nombre de biens vendus, les prix moyen, les prix en fonction des superficies ou du nombre de pièces…
Tout l’objet de cette étape est de déterminer les cardinalités, afin de déterminer les primary keys et l’ordre de création des tables de la BDD.
L’autre notion importante était celle de Zone géographique, ici représentée par la commune. On a fait le choix de stocker les informations relatives à la région dans une table à part (et non le département dont les informations qui n’était pas demandées par l’entreprise). La primary key de la commune devait nécessairement être la concaténation du code département et du code commune de l’INSEE.
Création de la base de données (code SQL)
Une fois le schéma déterminé, on a procédé à la création de la base de données (en local uniquement pour ce projet).
Ayant fait plusieurs petites optimisations par la suite, on a ajouté DROP TABLE IF EXISTS avec l’ordre adapté de suppression des données.

Ce code est en suite exécuté par un SGDB, en le choix a été fait d’utiliser SQLite studio. J’ai également pu le faire avec MySQL Workbench par curiosité.
Le SGDB nous permet de visualiser notre base de données sous forme graphique comme suit.

Importation des données
L’étape suivant est d’importer les données depuis les fichiers CSV contenant de nombreuses colonnes que l’on ne souhaitait pas conserver.
Le choix qui a été fait est d’utiliser un script Python :

On s’assure également que l’importation s’est bien déroulée et qu’on a bien le bon nombre de lignes.


Requêter la base de données
L’étape finale était de répondre aux questions posées par le client, comme par exemple le prix au mètre carré par région des appartements de plus de 4 pièces :
Ou encore la moyenne des valeurs foncières des 3 communes les plus onéreuses de certains départements donnés :
Ce que j’ai appris lors de ce projet
Tout d’abord l’importance de prendre le temps de consulter et comprendre les données, puis les besoins métier avant de commencer à modéliser.
Puis la réflexion de modélisation, notamment sur les cardinalités, les clés primaires, mais également sur l’optimisation de l’espace de stockage en évitant la redondance.
Enfin, la logique nécessaire pour construire des requêtes complexes en liant plusieurs tables et notamment la nécessité de faire des schémas pour bien comprendre ce que l’on essaie de faire avant de le transcrire en code (étape de pseudo code).