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

Modélisation Discussion :

Creation bases de données


Sujet :

Modélisation

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut Creation bases de données
    Bonjour a vous tous, voila actuellement en réflexion sur la création d'une base de donnée pour gérer des machines. je comprends que chaque machines a des specificités différentes, donc des tables avec toutes les specificités afin de constitué une table info avec toutes les informations. voila j'ai un petit problème dans ma conception, avec le temps certaines machines sont remplacées et donc les specificitées change, mon seul point est que le numéro de references de la machine ne change pas donc dans la table info je créer une nouvelle ligne avec le meme numéro de machine mais avec des nouvelles specificités. Jusque la je comprends, maintenant chaque machine a un résultat journalier, que je saisi dans une table résultat. mon problème viens vraiment de la, quand je saisi le numéro de la machine, elle peut faire reference a deux ligne de la table info, donc j'ai rajouter un numéro unique sur ma table info.
    Quand j'avais quelques machines c'est bon, je me souvenais du numéro unique, mais avec le temps ça deviens ingérable.
    Donc ma question est comment faire pour gérer ce genre de problème.
    En espérant être assez clair dans mes explications, je vais essayer de vous joindre une vue de mes tables et mes jointures.
    Encore un grand merci par avance
    HB

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Tu as donc
    - des machines ;
    - des spécificités ;
    - des résultats.
    Donc probablement, une série de tables telles que
    - tMachines qui permet d’identifier chaque machine ;
    - tSpecificites qui liste toutes les spécificités possibles ;
    - tMachineSpecif qui fait la liaison entre chaque machine et ses spécificités propres ;
    - tResultats qui donne sans doute le résultat de chaque machine aux différentes dates.

    Je ne comprends pas l’histoire de ton « numéro unique ».
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour hboisteau, Claude,

    Si j'ai bien compris ton problème, la façon de le résoudre est le suivant: La machine à un nom spécifique exemple Machine_1. Ce nom ne devrait pas être ta clé primaire. Un numéro auto pour la clé primaire pour identifier chaque machines. Tu fais les associations comme Claude te l'a proposé. Tu ajoutes un champ dans la table tMachines genre Périmé, champ Oui/Non.

    À chaque changement de machine la machine qui avait le nom Machine_1 et qui est remplacé par une autre machine tu la mets périmé. La nouvelle machine qui porte désormais le nom Machine_1 devient la bonne. Pour la saisie des données tu te sert uniquement des machine qui ne sont pas périmée.

    Pour l'impression des états tu te sert du nom de la machine et selon les dates tu vas avoir les bonnes spécifications puisque le lien se fait avec le numéro et non le nom.

    Bonne chance
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  4. #4
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    Bonjour a vous deux et merci encore pour vos reponses.
    Je m'excuse pour le temps de la reponse, mais en faites je voulais savoir s'il etait possible dans la conception de cette base de donnés de supprimer ce numero unique ou autre identifiant unique pour ses numeros de machines.
    Le numero de machine ne suffit-il pas dans ce cas la?
    bref je coince a ce niveau, le probleme et que j'importe un grand cantité de donnés par mois, et quand je fait un modification d'une machine, il faut que je pense a change l'identifiant a la bonne date.
    Ci-joint un visuel de ma base de données.
    Encore un grand merci.
    HBNom : base de données.JPG
Affichages : 81
Taille : 135,5 Ko

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Pourquoi ID n’est-il pas la clé de la table Delta ? En d'autres mots pourquoi crées-tu un nouvel enregistrement avec ID1 comme clé ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #6
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    bonsoir et merci beaucoup pour cette remarque, je pensais que chaque table devait avoir son propre ID et que je ne pouvais pas utiliser un ID d'une table comme ID d'une autre table.
    A vrai dire et pour faire suite a ta remarque, je ne me suis jamais poser la question.
    Merci par avance pour votre aide.
    Herve

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Merci par avance pour votre aide.
    OK mais si ID devient la clé, je ne comprends plus où est ton problème.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    Bonjour et encore merci pour toutes ses idées,
    mais donc voila ou est mon probleme, sur la table INFO quand je creer une nouvelle machine, je creer donc un nouvel ID et il se peut et c'est le cas que j'ai plusieurs fois le meme N° de MAS.
    Donc ma question initiale etait de savoir si le pouvais prendre le N° MAS comme ID, sachant que par exemple la machine 1 à travailler avec certainnes specificités du 1/1/14 au 5/1/14 et qu'apres elle a travaille avec d'autres specificites.
    Merci encore pour votre aide.
    HB

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Tu devrais peut-être expliquer plus en détail l’activité et ce que tu veux capter comme information dans la db.

    Perso, je ne devine pas le fonctionnement.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    bonsoir, en faite je gere des machines a sous dans un casino.
    chaque machine a sous a des specificités particulieres, la denomination, la marque, le %, le model, etc.
    pour des raisons legales, dans certains pays il n'est pas possible de changer le numero de la machine, si nous la modifions. Ce qui donne par exemple la machine 1 (bally, 0,1€, etc) ne fonctionne pas reelement alors nous allons la changer par la machine 1 (IGT, 0,1€, etc).
    mon probleme se pose quand je saisie les resultats journalier de la machine. Aujourd'hui j'utilise un numero unique dans la table INFO et j'aimerais, si possible, n'utiliser que le numero de la machine.
    encore un grand merci
    HB

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Désolé, je n'y comprends rien.

    Espérons que d'autres participants pourront t'aider.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #12
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour hboisteau,

    Regarde ce que ça pourrait donner:Nom : T_Machine.PNG
Affichages : 83
Taille : 10,3 Ko

    Toutes les spécifications de la machine sont dans la table T_Machine. Le nom de la machine ainsi que l'emplacement dans la table T_Machine_Nom. La date du début et la date de fin de la machine relié à T_Machine. Pour tes résultats ils sont basé sur la table T_Resultat avec le lien sur la table T_Machine_Nom.

    Tu peux ainsi sortir des stats sur le nom de la machine pour la machine_1 ayant le ID X ou ID Y. Tu peux aussi sortir des stats sur l'utilisation, spécification etc de la machine ayant le ID X qui seront différentes des stats de la machine ayant le ID Y. Tu gardes aussi l'historique: La machine ayant le nom machine _1 a eu comme machine la machine ayant le ID X du 1 janvier 2014 au 15 mars 2014 et le ID Y du 16 mars 2014 à aujourd'hui.

    Bonne chance
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  13. #13
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    bonsoir et merci encore,
    mais malheureusement je pense que cela ne marche pas, puisque dans la table [T_Machine_Nom] le [Nom_Machine] est unique alors que je voudrais travailler toujours avec le meme numero c-a-d si la machine possede le numero 1 le jour de l'installation, alors toute sa vie elle aura le numero 1.
    Merci pour ton aide.
    HB

  14. #14
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    Bonsoir à tous,

    je me suis inspiré du schéma de Robert pour en proposer un autre :


    Dans T_Machine, la référence de la machine avec les spécificités en cours.
    Dans T_HistoSpecif, on historise les spécificités anciennes.

    Lorsqu'une machine est changée, on remplit une nouvelle ligne dans T_HistoSpecif et on remplace les spécificités par les nouvelles dans T_Machine.

    Pour un idResultatMachine donné, on se sert de idMachine et DateResultat pour retrouver la référence de la machine et ses spécificités à ce moment-là (DateResultat entre DateDebut et DateFin).
    Images attachées Images attachées  

  15. #15
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    bonjour F-Leb et encore merci pour cette réponse, mais je me pose encore une petite question qui est pour la détermination des résultats.
    Du dit "pour un idResultatMachine donné, on se sert de idMachine et DateResultat pour retrouver la référence de la machine et ses specificités à ce moment là (DateResultat entre DateDebut et DateFin)" mais comment ce passe techniquement, c'est sur une requête?
    A vrai dire je suis un peu perdu, si tu peux m'éclairer sur ce point ce serais super.
    Encore merci par avance
    HB

  16. #16
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    bonsoir hboisteau,

    oui avec des requêtes.
    Si la DateResultat>=DateDepuis pour la machine, il faut chercher les spécificités en cours dans T_Machine :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT NumReference,
           DateResultat,
           Resultat,
           U.specif1, U.specif2, U.specif3
    FROM   T_ResultatMachine T
           INNER JOIN T_Machine U
                   ON T.idMachine = U.idMachine
    WHERE  DateResultat >= DateDepuis

    Sinon, il faut chercher dans l'historique et trouver les spécificités pour DateResultat entre DateDebut et DateFin :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NumReference,
           DateResultat,
           Resultat,
           V.specif1, V.specif2, V.specif3
    FROM   (T_ResultatMachine T
            INNER JOIN T_Machine U
                    ON T.idMachine = U.idMachine)
           INNER JOIN T_HistoSpecif V
                   ON U.idMachine = V.idMachine
    WHERE  DateResultat BETWEEN DateDebut AND DateFin

    Pour avoir la synthèse, tu fais l'UNION des deux :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SELECT NumReference,
           DateResultat,
           Resultat,
           U.specif1, U.specif2, U.specif3
    FROM   T_ResultatMachine T
           INNER JOIN T_Machine U
                   ON T.idMachine = U.idMachine
    WHERE  DateResultat >= DateDepuis
     
    UNION ALL
     
    SELECT NumReference,
           DateResultat,
           Resultat,
           V.specif1, V.specif2, V.specif3
    FROM   (T_ResultatMachine T
            INNER JOIN T_Machine U
                    ON T.idMachine = U.idMachine)
           INNER JOIN T_HistoSpecif V
                   ON U.idMachine = V.idMachine
    WHERE  DateResultat BETWEEN DateDebut AND DateFin

  17. #17
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    Bonsoir, je viens de completer ma base et j'ai encore un petit souci.
    je n'avais pas penser dans la creation que je pourrais supprimer une machine, donc dans le T_Machine on ne trouve plus son numero mais quand je veux le saisir dans la table T_HistoSpecif il est impossible de saisir.
    Es-ce possible de pouvoir faire cela, ou bien je dois penser a faire une autre chose.
    Je vous remercie de votre aide.
    HB

  18. #18
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    si tu supprimes physiquement une machine dans T_Machine, tu dois supprimer (en cascade) son historique et les résultats de la machine.

    Le mieux est sans doute de faire une suppression "logique" en rajoutant un champ booléen [inactif] dans T_Machine. Si la machine n'existe plus, tu bascules [inactif]=Vrai.

    Les machines actives : ...WHERE not([Inactive]).
    Les machines inactives : ... WHERE [Inactive].

  19. #19
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,
    Wouah! malheureusement je viens de me faire larger en plein vol!
    Depuis toute à l'heure j'essaie de comprendre ou inseré cela dans la table T_machine mais sans succes.
    Je voudrais vraiment comprendre pour apprendre.
    je joint ma base pour comprehension.
    Encore un immense merci.
    HB
    Fichiers attachés Fichiers attachés

  20. #20
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    rien d'extraordinaire de nouveau avec la suppression logique...

    je précise que dans ma rasta-requete R1 UNION ALL R2, ne fait que retourner les résultats des machines avec ses spécificités.
    Si DateResultat >= DateDepuis, alors les spécificités sont celles de la machine en cours dans T_Machine.
    Si DateResultat entre DateDebut et DateFin, alors les spécificités sont dans l'historique

    Dans le 1er cas R2 ne retourne rien, dans le 2è cas c'est R1 qui ne retourne rien, l'union des deux permet de simuler un Si (DateResultat >= DateDepuis) alors (pécho dans les spécifs en cours) sinon si (DateResultat entre DateDebut et DateFin) alors (pécho les spécifs dans l'historique) en une seule requête.

    Pour supprimer des machine, tu rajoutes un champ booléen (de type "oui/non") [Active]=Vrai par défaut (ou [inactive]=Faux par défaut comme tu veux), uniquement dans T_Machines.
    Puis tu rajoutes un filtre dans la condition WHERE dans R1 et R2 pour n'afficher que les machines actives (ou inactives selon le besoin).

Discussions similaires

  1. demande conseil creation base de données
    Par calitom dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 20/03/2008, 15h44
  2. creation base de données
    Par kermed dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 09/07/2007, 16h46
  3. [MySQL] Creation base de données "at run time"
    Par sozie9372 dans le forum JDBC
    Réponses: 1
    Dernier message: 28/06/2006, 13h29
  4. [VB.NET] Programmer la creation base de données
    Par papy27 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 02/09/2004, 13h00

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