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

PostgreSQL Discussion :

création de table et timestamp


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut création de table et timestamp
    Bonjour

    Une petite question à qui voudra bien m'aider.

    Voila j'ai créer une table avec comme clé primaire un "id" d'un équipement qui vient d'une table EQUIPEMENT et une "date_uptime" qui est en TIMESTAMP le tout dans une table UPTIME qui me permet de sauvegarder les sysUptime d'un EQUIPEMENT.
    Il est entendu que mon "id" d'un équipement est aussi déclaré en FOREIGN KEY et il est déclaré en SERIAL dans la table EQUIPEMENT.

    Je voulais savoir si selon vous le fait d'avoir un timestamp en clé primaire est judicieux et si oui,comment faire pour récupérer la dernière "date_uptime" de l'équipement.

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Pourquoi ne pas crée la PK juste sur l'id ?
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Merci de ta réponse mais pour que cela soit bien clair:
    petite description de mon schéma pour y voir plus clair:

    D'un coté ma table EQUIPEMENT avec:
    id_equip
    desc
    type
    ....

    De l'autre ma table UPTIME avec pour seul entité la date_uptime.

    Et entre les 2 j'ai une association archive qui a pour cardinalités 1,n des 2 cotés.
    Du coup lorsque je passe au relationnel ma j'ai une nouvelle table ARCHIVE qui contient comme clé primaire : id_equip et date_uptime.

    Donc soit ce que je fais n'est pas judicieux (personne n'est parfait :-) soit il y a une autre solution mais je ne la vois pas. Je précise que je cherche à sauvegarder les anciens uptime d'un équipement.

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    3 tables pour cela ça me paraît beaucoup

    Pourquoi ne pas faire juste une table équipement (id_equip, desc, type,...) avec id_equip en PK et une table archive (id_equip,date) avec (id_equip,date) en PK ?
    Avec une Fk entre equipement.id_equip et archive.id_equip

    Si pour un équipement tu veux la dernière date de mise à jour tu fais une jointure entre les 2 tables en prenant le max(archive.date)

    Ou si niveau perfs tu as beaucoup de volumétrie tu rajoutes dans la table equipement une colonne date_uptime qui serait updatée à chaque nouvelle insertion dans la table archive (trigger ou géré par un script)
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Merci pour cette suggestion je vais voir ce que ça donne en essayant avec cette configuration.

    Si vous avez d'autres suggestions je suis toute ouïe !!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Citation Envoyé par scheu Voir le message
    Ou si niveau perfs tu as beaucoup de volumétrie tu rajoutes dans la table equipement une colonne date_uptime qui serait updatée à chaque nouvelle insertion dans la table archive (trigger ou géré par un script)
    Voila ce que j'obtiens

    EQUIPEMENT
    - id_equip :SERIAL
    - desc
    - type
    ...
    PRIMARY KEY (id_equip);

    ARCHIVE
    - id_equip :SERIAL
    - date_uptime
    PRIMARY KEY (id_equip, date_uptime)
    FOREIGN KEY (id_equip) REFERENCES Equipement (id_equip);

    Mais lorsque tu parles d'ajouter une colonne date_uptime dans EQUIPEMENT est-ce que tu sous-entends que cette colonne contient uniquement la dernière date d'uptime d'un équipement ? Ou alors c'est moi qui ai du mal .
    Parceque de la volumétrie je vais en avoir j'ai plus d'une 30aine d'équipements à surveiller !!

  7. #7
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par eden3883 Voir le message
    Mais lorsque tu parles d'ajouter une colonne date_uptime dans EQUIPEMENT est-ce que tu sous-entends que cette colonne contient uniquement la dernière date d'uptime d'un équipement ?
    Oui, enfin ceci serait envisageable seulement si pour chaque équipement tu as plusieurs milliers de lignes dans la table archive et que la requête ci-dessous serait trop longue

    Sinon sans cette colonne (et c'est le plus simple), il te suffit de faire une jointure entre tes 2 tables pour avoir, pour chaque équipement, la date maximale correspondant si j'ai bien compris à ton uptime :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select e.id_equip,e.desc,e.type,max(a.date_uptime)
    from equipement e, archive a
    where e.id_equip = a.id_equip
    group by e.id_equip,e.desc,e.type
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

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

Discussions similaires

  1. (VC++6 /C) Pb de création de table Paradox
    Par Vow dans le forum Paradox
    Réponses: 4
    Dernier message: 28/09/2004, 13h15
  2. Création de table MySQL
    Par dehbi dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/04/2004, 10h59
  3. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59
  4. Création de table avec index
    Par Seb7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2003, 16h11
  5. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 10h17

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