Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/04/2008, 09h32   #1
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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.
eden3883 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 10h07   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 10h19   #3
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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.
eden3883 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 11h27   #4
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 13h19   #5
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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 !!
eden3883 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 13h33   #6
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
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 !!
eden3883 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 14h53   #7
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
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 :
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 15h01   #8
Invité de passage
 
Inscription : avril 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 8
Points : 1
Points : 1
Ca se rapproche de ce que je pensais faire au début.

Je vais avancer avec cette solution et puis je verrais bien. L'essentiel était de pouvoir sauvegarder les upTime de chaque équipement pour faire une comparaison entre le plus récent contenu dans la table et celui que je recupère avec une requête SNMP.

Merci encore pour ton aide
eden3883 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h27.


 
 
 
 
Partenaires

Hébergement Web