IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Gestion des années pour des statistiques [MCD]


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Gestion des années pour des statistiques
    Bonjour à tous,

    je suis actuellement en stage où je dois, pour la première étape de mon travail, automatiser certaines tâches. Il s'agit en effet d'insérer des données issues de différents fichiers excel dans une base de données. Il me faut créer cette BdD en fonction de l'en-tête du fichier excel.

    Voici comment se présente un fichier:

    lieu CP série(intitulé de la stat) unité 1990 1991 2001 200n
    Ville 37 "conso elecricité" GWh 1600 1700 1800 2000
    Ville 37 "conso gaz" GWh 164000 162000 161000 164000

    Les attributs en en-tête sont utilisés comme attribut dans la BdD.
    Mon problème se situe au niveau des années et de leur données, que je ne suis pas sur d'avoir correctement modélisé.

    J'aimerai avoir votre avis sur le MCD que j'ai mis en place. Vous le trouverez en piece jointe.

    Merci d'avance!
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Bonsoir squale45,


    A première vue, il n'y a pas d'erreur quant à la modélisation des entités-types STATISTIQUE, ANNEE et de l'association CONCERNER.

    On pourrait seulement chipoter sur les points mineurs, par exemple de l'opportunité de définir une table des CP (codes postaux ?) et une table des unités.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci de ta réponse fsmrel.

    J'ai considéré le fait d'ajouter une table CP et unité, mais finalement je ne vais pas le faire. En revanche j'ai de nouveau réfléchi sur le mcd et j'en suis arrivé au résultat en pièce jointe

    Comme la table "date" ne contient que l'attribut "annee", l'attribut se retrouve dans l'association stat_donnee. Par contre je ne sais pas s'il faut que je laisse l'association "contenir" entre la table "donnee" et la table "fichier".
    Images attachées Images attachées  

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Comme la table "date" ne contient que l'attribut "annee", l'attribut se retrouve dans l'association stat_donnee.
    Et lorsque tu voudras faire des statistiques et que tu n'auras pas de données pour une année, cela pourra induire en erreur à l'interprétation des résultats.

    Je laisserais l'entité-type "Année" si l'année te suffit mais inutile de lui donner en plus un identifiant ; l'année se suffit à elle-même puisqu'il s'agit d'un entier.

    Par contre je ne sais pas s'il faut que je laisse l'association "contenir" entre la table "donnee" et la table "fichier".
    C'est plutôt la patte de l'association "stat_annee" vers l'entité type "fichier" qu'il faudrait supprimer puisque on peut trouver ce fichier via la donnée.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    D'accord je suis tes conseils CinePhil, ils me parraissent bon.

    Merci !

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par CinePhil Voir le message
    Je laisserais l'entité-type "Année" si l'année te suffit mais inutile de lui donner en plus un identifiant ; l'année se suffit à elle-même puisqu'il s'agit d'un entier.
    Un identifiant doit être invariant : ça n’est pas le type entier qui garantit l’invariance. C’est plutôt le rôle d’une contrainte (par exemple IDENTITY ou équivalent, en association avec une colonne utilisée pour la clé primaire d’une table SQL).


    Citation Envoyé par CinePhil Voir le message
    Citation Envoyé par squale45 Voir le message
    Comme la table "date" ne contient que l'attribut "annee", l'attribut se retrouve dans l'association stat_donnee.
    Et lorsque tu voudras faire des statistiques et que tu n'auras pas de données pour une année, cela pourra induire en erreur à l'interprétation des résultats.
    Je laisserais l'entité-type "Année" si l'année te suffit.
    Pourquoi et comment la conservation de l’entité-type ANNEE permet d’éviter les erreurs d’interprétation ?


    Citation Envoyé par CinePhil Voir le message
    C'est plutôt la patte de l'association "stat_annee" vers l'entité type "fichier" qu'il faudrait supprimer puisque on peut trouver ce fichier via la donnée.
    Sans aucun doute !

    Si on conservait la ternaire, il y aurait du dégât au niveau SQL, car la structure de la table STAT_ANNEE serait la suivante :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE STAT_ANNEE
    (
            NumStat      INT           NOT NULL
          , Annee        INT           NOT NULL
          , NumFichier   INT           NOT NULL 
          , Donnee       VARCHAR(32)   NOT NULL
          , CONSTRAINT STAT_ANNEE_PK PRIMARY KEY (NumStat, Annee, NumFichier)
          , CONSTRAINT STAT_ANNEE_ANNEE_FK FOREIGN KEY (Annee) REFERENCES ANNEE
          , CONSTRAINT STAT_ANNEE_FICHIER_FK FOREIGN KEY (NumFichier) REFERENCES FICHIER
          , CONSTRAINT STAT_ANNEE_STAT_FK FOREIGN KEY (NumStat) REFERENCES DONNEE
                       ON DELETE CASCADE
    ) ;

    C'est-à-dire que la même statistique (NumStat) pourrait être associée à plusieurs fichiers, en contradiction avec la règle qui veut que ce soit à un seul fichier (cardinalité 1,1 portée par la patte connectant DONNEE et CONTENIR).
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour ces éclaircissements fsrmel.

    J'ai ajouté une table territoire en faite, et pris en compte les différents conseils.
    Du coup j'en suis arrivé là :
    Images attachées Images attachées  

  8. #8
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Je ne vois pas l’intérêt de conserver la table DATE (que je renomme ici en ANNEE car « DATE » est un mot réservé du vocabulaire SQL). Pour ma part, je la virerai (comme j’ai passé 40 ans à le faire un peu partout en France et ailleurs, ad nauseam) et me limiterai à la colonne Annee de la table STAT_ANNEE, colonne de type ENTIER.

    Par exemple, avec SQL Server 2005 la fonction GETDATE permet d’obtenir la date du jour, tandis que la fonction YEAR(date) permet d’obtenir l’année d’une date. Si on veut que l’année d’une statistique soit dans la plage de valeurs qui convient, on peut définir en SQL une contrainte ad-hoc (STAT_ANNEE_CHK ci-dessous, où 2003 représente la 1re année hypothétique de production de stats).

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE STAT_ANNEE
    (
            IdDonnee       INT           NOT NULL
          , Annee          INT           NOT NULL
          , Statistique    INT           NOT NULL
          , CONSTRAINT STAT_ANNEE_PK PRIMARY KEY (IdDonnee, Annee)
          , CONSTRAINT STAT_ANNEE_ANNEE_FK FOREIGN KEY (Annee) REFERENCES ANNEE
          , CONSTRAINT STAT_ANNEE_STAT_FK FOREIGN KEY (IdDonnee) REFERENCES DONNEE
                       ON DELETE CASCADE
          , CONSTRAINT STAT_ANNEE_CHK CHECK (Annee BETWEEN 2003 AND YEAR(GETDATE()))
    ) ;


    L’entité-type TERRITOIRE est correcte du point de vue de la modélisation, mais supposons que la colonne Region_Departement concerne les départements français. Vous pouvez mettre en œuvre une entité-type DEPARTEMENT (ne serait-ce que pour disposer des noms), ou à la limite définir une contrainte comme pour les années (incidemment, comme vous utilisez le type ENTIER, je suppose que les départements 2A et 2B ne sont pas partie prenante dans cette affaire).
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci fsmrel pour tes conseils, j'ai pu finaliser ma bdd

  10. #10
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Bonjour squale45,

    Voilà une bonne nouvelle ! Il ne vous reste plus qu'à voter !
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. xyplot et gestion des années pour axe des x
    Par mauriceletendu dans le forum R
    Réponses: 8
    Dernier message: 02/09/2014, 13h32
  2. Gestion des frames et des liens pour la navigation
    Par JEANAEJ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/12/2012, 22h32
  3. [MCD] Gestion de formations pour des entreprises
    Par nanouaa dans le forum Schéma
    Réponses: 7
    Dernier message: 11/04/2011, 21h00
  4. Réponses: 6
    Dernier message: 04/06/2010, 22h17
  5. Quel SGBD choisir pour la gestion de stock pour des laboratoires ?
    Par waspy59 dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 25/12/2007, 07h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo