Bonjour,
Je vous expose mon problème, je souhaite créer une base de données qui permettrait d’analyser les comptages voiture dans une ville à partir de bornes.
Pour simplifier, j’ai pris des données fictives et supprimé certaines colonnes inutiles pour la lisibilité des données, et juste modifié les noms des id de chaque table pour éviter les ambiguïtés dans mon explication.
Pour mieux se représenter les choses et comprendre la suite, voici la structure de ma BDD :
J’ai en gros ces données en entrée, qui proviennent d’un fichier csv, les noms de colonnes, de 0 à 23, correspondent aux heures de la journée et les valeurs aux nombres de voitures détectées :
id_station | date | 0 | 1 | 2 | 3 | 4 | … | 23 |
---|---|---|---|---|---|---|---|---|
747 | 05/04/2020 | 2 | 3 | 2 | 2 | 6 | 15 | |
822 | 05/04/2020 | 2 | 2 | 3 | 4 | 5 | 12 | |
514 | 06/04/2020 | 1 | 5 | 1 | 2 | 7 | 14 |
J’ai alors créé une table Mesure, un id Mesure correspond à une station à un jour donné, j’ai réalisé un total quotidien par station que j’ai concaténé à un autre fichier (qui ne possédait que les totaux quotidiens et non pas par heure). En bref, le df final, que j’ai exporté en csv puis insérer dans la BDD, ressemble à cela :
id_mesure | id_station | date | total |
---|---|---|---|
1 | 747 | 05/04/2020 | 67 |
2 | 822 | 05/04/2020 | 85 |
3 | 514 | 06/04/2020 | 68 |
J’aimerais maintenant relier une table ‹ Découpage_heure › afin d’avoir une granularité horaire pour les mesures qui possèdent cette précision. En bref, j’aimerais que la table ‹ Découpage_heure › ressemble à cela :
id_decoupage | id_mesure | heure | valeur |
---|---|---|---|
1 | 1 | 0 | 2 |
2 | 1 | 1 | 3 |
3 | 1 | 2 | 2 |
4 | 1 | 3 | 2 |
5 | 1 | 4 | 6 |
… | |||
24 | 1 | 23 | 15 |
25 | 2 | 0 | 2 |
26 | 2 | 1 | 2 |
27 | 2 | 2 | 3 |
28 | 2 | 3 | 4 |
29 | 2 | 4 | 5 |
… | |||
48 | 2 | 23 | 12 |
49 | 3 | 0 | 1 |
50 | 3 | 1 | 5 |
51 | 3 | 2 | 1 |
52 | 3 | 3 | 2 |
53 | 3 | 4 | 7 |
… | |||
72 | 3 | 23 | 14 |
C’est après réflexion la structure de la BDD qui me semble la plus logique et facile à exploiter.
Seulement, je rencontre 2 problèmes :
-Comment récupérer les données horaires initiales (1ère image) et les faire correspondre à l’id_mesure, étant donné que dans la création et l’insertion des données Mesures, j’ai totalement laissé de côté les données horaires pour me concentrer sur les totaux quotidiens ? (Faudrait-il, au lieu de générer un identifiant unique ‹ id_mesure › dans la table Mesures, créer une double clé primaire associée id_station/date et ajouter ces 2 données comme attributs dans la table Découpage_heure, ainsi il détecterait la station/date correspondante ?)
-Comment insérer les données horaires dans la table Découpage_heure, les 0, 1, 2 …, 23 passant de nom de colonnes d’un fichier csv à valeur dans une table ?
J’ai bien conscience que c’est un pavé et peut-être pas clair par moment, je suis tout-à-fait prêt à fournir plus d’explications si besoin.
En tout cas, un énorme merci à toute personne qui pourra m’aiguiller sur ce sujet.
Bonne journée !