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 30/08/2004, 11h30   #1
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 111
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 111
Points : 29
Points : 29
Par défaut question sur les requetes table héritée

bonjour,

dans le cas ou l'on crée un tuple dans la table parente est il possible de faire un update sur la table fille en effectuant la recherche sur la table parente. Exemple
une table "personnes" avec id, nom, prenom.
une table "usagers" qui herite de personnes avec le champ estUnUsager.

je remplit la table personnes. Plus tard l'une des personnes devient un usager. peut on faire un update sur la table usagers en réalisant une close where sur la table personnes façon à récuperer les valeurs de personnes?
champion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2004, 11h51   #2
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149
je crois que tu as un petit probleme de conception et de normalisation de ta base.
en effet, d'apres ce que j'ai compris, tu as des infos en double, ce qui induit de la redondance.

il faudrait que tu nous montre les schemas de tes tables Personne et Usager, pour resoudre ce probleme car normalement le probleme que tu as ne se pose meme pas.
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2004, 12h15   #3
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Citation:
peut on faire un update sur la table usagers en réalisant une close where sur la table personnes façon à récuperer les valeurs de personnes?
Non, c'est impossible. Comme l'INSERT s'est fait sur la table "personnes", l'enregistrement est inconnu pour "usagers" et l'UPDATE échouera.

Maintenant, je suis d'accord avec torvalds17 pour dire qu'il y a un problème de conception : quel est l'intérêt d'utiliser l'héritage ? Pourquoi ne pas mettre directement le champ estUnUsager dans Personnes ?

L'héritage aurait un intérêt si les "usagers" étaient des "personnes" avec des champs en plus.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2004, 12h32   #4
Membre Expert
 
Avatar de David Guillot
 
Homme David Guillot
Chef de projet en SSII
Inscription : mars 2004
Messages : 879
Détails du profil
Informations personnelles :
Nom : Homme David Guillot
Âge : 28
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2004
Messages : 879
Points : 1 149
Points : 1 149
Citation:
Envoyé par GrandFather
Pourquoi ne pas mettre directement le champ estUnUsager dans Personnes ?
peut etre tout simplement parce que sa table Usager a beaucoup de champs, et qu'il ne veut pas tous les mettres en NULL dans sa table Personne.

dans ce cas je suggere de faire effectivement une table Usager, mais ne reprenant pas les proprietes de Personne, reprenant seulement l'identifiant de Personne pour faire une dependance de reference. c'est ce qui me parait le plus simple...

et dans ce cas son probleme trouverait solution en inserant une ligne dans Usager quand une personne devient usager. dans cette ligne inseree figurera l'identifiant de la Personne pour satisfaire la dependance de reference...
__________________
Avant de poser une question ici :

Après résolution de votre question : un clic sur , un et un vote pour les personnes qui vous ont aidé
David Guillot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2004, 14h02   #5
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 111
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 111
Points : 29
Points : 29
merci de toutes vos réponses.
champion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2004, 14h19   #6
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Citation:
dans ce cas je suggere de faire effectivement une table Usager, mais ne reprenant pas les proprietes de Personne, reprenant seulement l'identifiant de Personne pour faire une dependance de reference. c'est ce qui me parait le plus simple...
Plus simple, pas forcément. Surtout avec la limitation inhérente à l'héritage sous PostgreSQL, le fait que les contraintes de clés étrangères référençant une table ne s'appliquent pas aux tables enfants de cette table. Ainsi, les autres tables pourront donc référencer des "personnes", mais pas des "users". Une limitation plutôt sévère, qui impose de bien réfléchir avant d'opter pour l'héritage.

[EDIT] J'ai un peu lu de travers... La solution de torvalds n'a rien à voir avec l'héritage.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather 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 03h59.


 
 
 
 
Partenaires

Hébergement Web