etalab / schema-irve

TableSchema pour les Infrastructures de Recharge de Véhicules Electriques (IRVE)
10 stars 10 forks source link

Ajout d'un modèle de données IRVE #63

Open loco-philippe opened 3 months ago

loco-philippe commented 3 months ago

Contexte

Le guide data.gouv.fr lié à la qualité des données open-data présente les 6 thèmes principaux pour bien documenter un jeu de données et notamment celui dédié au "modèle de données".

Il rappelle notamment qu'un modèle de données (modèle entité-association) est avant tout un outil de dialogue entre les différents intervenants en agrégeant sur un même support d'une part les concepts métier/client/utilisateur (ex. les entités manipulées et les relations entre ces entités) et d'autre part la traduction de ces concepts en structures physiques et logiques (ex. les attributs, les cardinalités) que l'on retrouve en partie dans le schéma de données.

Application aux IRVE

Les données IRVE correspondent à une structure de données complexe (concepts de 'point de charge', 'station', 'opérateur', 'aménageur', 'enseigne', 'localisation') qui se traduit par un ensemble de champs important (une cinquantaine pour le schéma statique).

Cette structure est décrite principalement dans les schémas de données statiques et dynamiques.

Cependant les schémas décrivent clairement comment chaque champ doit être documenté mais ne décrivent pas la cohérence qui doit être assurée entre certains champs ou entre certaines lignes.

Les jeux de données partagés sont donc constitués de données unitairement bien documentées (grace au schéma de données) mais qui peuvent être globalement difficilement exploitables.

Par exemple, comment représenter sur une carte une station qui a deux coordonnées géographiques différentes ou bien comment interpréter qu'une même station soit indiquée ouverte 24h/24h et en même temps 9h-19h ?

Evolution proposée

La proposition est d'une part de compléter la documentation des jeux de données IRVE conformément au guide data.gouv.fr avec:

et d'autre part d'adapter la chaine de contrôle des jeux de données aux évolutions du schéma.

Ces dispositions permettent d'améliorer et de garantir la qualité des jeux de données IRVE en amont (par une meilleure compréhension des informations à documenter) et en aval par un contrôle complet des données. Elles permettront également de réduire notablement la charge de travail récurrente liée à la recherche et à la correction des erreurs.

Mise en oeuvre

Trois aspects sont à prendre en compte : l'existant, la chaîne de contrôle et les futures évolutions.

Annexe : modèle de données proposé

---
title: Modele - schema statique v2.3.1
--- 
erDiagram
    AMENAGEUR ||..|{ STATION : amenage
    AMENAGEUR {
        string nom_amenageur
        string siren_amenageur
        string contact_amenageur 
    }
    OPERATEUR ||..|{ STATION : "exploite pour le compte de l enseigne"
    OPERATEUR {
        string contact_operateur PK "M"
        string nom_operateur 
        string telephone_operateur 
    }
    ENSEIGNE ||..|{ STATION : "heberge"
    ENSEIGNE {
        string nom_enseigne PK "M" 
    }
    STATION {
        string  id_station_itinerance PK "M"
        string  nom_station "M"
        enum    implantation_station "M"
        integer nbre_pdc "M"
        string  condition_acces "M"
        string  horaires "M"
        boolean station_deux_roues "M"
        date    date_maj "M"
        string  id_station_local
        enum    raccordement
        string  num_pdl
        date    date_mise_en_service 
    }
    LOCALISATION ||--|{ STATION : "localise"
    LOCALISATION {
       array   coordonneesXY PK "M"
       string  adresse_station "M"
       string  code_insee_commune 
    }
    STATION ||--|{ POINT_DE_CHARGE : regroupe
    POINT_DE_CHARGE {
        string id_pdc_itinerance PK "M Root"
        number puissance_nominale "M"
        boolean prise_type_ef "M"
        boolean prise_type_2 "M"
        boolean prise_type_combo_ccs "M"
        boolean prise_type_chademo "M"
        boolean prise_type_autre "M"
        boolean paiement_acte "M"
        boolean reservation "M"
        enum    accessibilite_pmr "M"
        string  restriction_gabarit "M"
        string  id_pdc_local
        boolean gratuit
        boolean paiement_autre
        boolean paiement_cb
        string  tarification
        string  observations
        boolean cable_t2_attache 
    }