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 :

Plusieurs Tables ou une seule [Normalisation]


Sujet :

Schéma

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut Plusieurs Tables ou une seule
    Salut tout le monde,

    J'ai actuellement une base de données normalisée.
    Elle est prévue pour recevoir des mesures de plusieurs équipements.
    Un équipement est prévue pour faire des centaines mesures sur des milliers d'entités.

    J'ai donc une table de mesure par équipement (les équipements étant tous différents, ils ne renvoient pas forcement les mêmes types de mesure).

    Chaque table à donc la forme suivante:

    Pour l'équipement A

    Entity Id
    Mesure A
    Mesure B
    Mesure C


    Pour l'équipement B

    Entity Id
    Mesure A
    Mesure D
    Mesure G


    Maintenant je dois faire des statistiques sur ces tables, et je suis "embêté" car je dois écrire une requête par table alors, que je fais toujours le même calcul derrière....
    Je demande donc si je ne devrais pas plutot faire une seule table pour tous les équipements du style :

    Equipment Id
    Entity Id
    Mesure Id
    Value

    Vous en pensez quoi ?

    Cordialement

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Rvzip64,

    Citation Envoyé par Rvzip64
    Equipment Id
    Entity Id
    Mesure Id
    Value

    Vous en pensez quoi ?
    ==> auto-réponse éclairée d'un membre éclairé.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  3. #3
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Donc on est d'accord que cela va prendre beaucoup plus d'espace au niveau des index que la première méthode, mais que ce n'est pas grave ?
    Ce que je vais "perdre", je vais le gagner en facilité de développement et d'évolutivité

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par Rvzip64
    ... cela va prendre beaucoup plus d'espace au niveau des index que la première méthode...
    ==> eh bien, non :
    • méthode actuelle : 1 index par équipement ;
    • nouvelle méthode : 1 seul index unique (identifiant) sur le triplé Equipment Id/Entity Id/Mesure Id.

    mais, peu importe.

    Citation Envoyé par Rvzip64
    Ce que je vais "perdre", je vais le gagner en facilité de développement et d'évolutivité
    ==> ça, en revanche, c'est certain !...
    D'autant que, conceptuellement, la nouvelle méthode est la bonne : créer plusieurs entités (conceptuel) pour un même type d'objet (réel) n'est jamais très bon.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  5. #5
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Aller dernière petite question ...

    Vu que j'ai plusieurs "Mesure Id", je peux avoir des types différents entre les "Mesure Id" : Double; Int; ...
    Comment je peux faire vu que je n'ai qu'un seul champ "Value" ?

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Tu ne peux pas définir ton champ Value en "réel double" ?
    Qui peut le plus peut le moins...
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  7. #7
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour,

    Petite remarque (peut-être stupide) :
    D'où vient ton idée de faire une table de mesure par équipement ?

    En général, le choix de la création d'une table vient d'un MCD-MPD.
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  8. #8
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    On va dire que c'est une question d'historique ...
    Et que à l'époque ça a simplifié certaine tâche de développement en isolant les équipes de dev...

    Avec l'expérience on voit que ce n'est pas forcément adapté

  9. #9
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Lorsque tu dis :

    Equipment Id
    Entity Id
    Mesure Id
    Value

    Ce sont des noms de colonnes ?
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  10. #10
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Exact

  11. #11
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour,

    Si on suit ton idée :

    Equipment Id
    Entity Id
    Mesure Id
    Value

    Il risque d'y avoir des enregistrements où seuls l'id de mesure et la value changeront.
    Il pourrait être logique de faire deux tables : une avec les equipements et entités et l'autre avec les mesures et valeurs accompagnés de equipment id et entity id en clé étrangère.
    Je ne suis pas admin BDD donc à confirmer.

    Mais en soit ta proposition semble alléger quand même grandement le système actuel.

    Tout dépend de ta marge de manoeuvre sur ce sujet.
    Si tu as la possibilité, refais un MCD et une base etc ...
    Sinon une évolution comme tu le proposes aura son petit impact positif.

    A voir si cela ne perturbes un autre service ou le fonctionnement d'autre chose.
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  12. #12
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Je suis d’accord avec toi Miistik, il faut optimiser le principe.
    Le point le plus important pour moi était d'avoir votre avis sur un stockage par ligne plutôt qu'un stockage par colonne.

    J'ai une grande marge de manœuvre sur le système, j'ai lancé la conversation d'une table hier soir.
    Je vais maintenant lancer des tests pour voir l'impact que cela peut avoir au niveau du système.

    Je laisse le post ouvert, je vois déjà des petits problèmes qui vont arriver

  13. #13
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Finalement, c'est le principe des métadonnées
    http://sqlpro.developpez.com/cours/m...n/metadonnees/

    Quelqu'un à déjà fait mis en place un système de métadonnées en suivant le principe de sqlpro ?

  14. #14
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Le système exposé par SQLPro, c'est surtout si tu veux pouvoir ajouter dynamiquement par la suite des nouveaux type de mesures.

    Mettre des types de mesures différents dans une même colonne ça peut être pratique, mais tu peux perdre en intégrité des données. En effet tu ne pourras pas garantir que tes données de type A sont bien de type Int et tes données de type B de type Double (Via contraintes et/ou trigger tu pourrais, mais ça impactera des perfs en insertion).

    En toute logique donc tu devras faire de la conversion de données dans tous les sens. Surtout si tu commences à avoir des types de mesures en format texte.

    La question à se poser est donc sur l'utilisation de tes données. Quel est le besoin, quelles sont les requêtes que tu devras faire ?
    Si tu travailles tout le temps par Type d'Equipement, mettre tout dans une même table n'est pas forcément judicieux.

    Après si tu laisses sur plusieurs tables séparées, tu peux utiliser des vues qui regroupent tes données pour faciliter les quelques requêtes transverses aux équipements.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  15. #15
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    C'est certain qu'avec les méta données je vais avoir pas mal de cast et que cela va prendre du temps !
    D'ailleurs je me demande s'il n'était pas possible de faire un cast "automatique", vu que dans une table il y a le type qui est stocké ... mais aucune idée de comment on pourrait faire ça

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

Discussions similaires

  1. plusieurs table vers une seule table
    Par rrbenez dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 02/09/2009, 21h51
  2. Groupement de plusieurs tables dans une seule
    Par kemiolek dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/06/2008, 17h27
  3. Réponses: 2
    Dernier message: 23/04/2007, 00h10
  4. Réponses: 4
    Dernier message: 08/06/2006, 20h06
  5. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19

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