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 01/03/2006, 12h41   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 81
Points : 66
Points : 66
Envoyer un message via MSN à jarod_ab
Par défaut Problème d’héritage. (si deux fils ont le même père !)

J’ai une superclasse « personne » et deux sous classes fils voici la structure :

Create table personne (code_pers serail primary key, nom_pers varchar(30), prenom_pers varchar(30), adr_pers text);

Create table enseignant (Code_Ens number primary key, grade_Ens varchar(30)) INHERITS (personne);
Create table administrateur (Code_Adm primary key) INHERITS (personne);

J’ai ce pbm :

Si un administrateur est un enseignant donc je dois créer qu’une seule occurrence de personne le pbm c’est je n’arrive pas à le faire. Quand je crée l’administrateur, le SGBD Postgres crée une autre personne. Comment faire pour que l’administrateur et l’enseignant pointent sur la même personne ! merci pour vos réponses.
jarod_ab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2006, 14h29   #2
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
Bonjour,

si tu pouvais créer un administrateur qui soit également un enseignant, cela reviendrait à créer deux fois la même "personne", ce qui serait en violation de la contrainte de clé primaire sur code_pers.

Tu vas devoir revoir ton schéma de base...
__________________
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 04/03/2006, 09h27   #3
Membre du Club
 
Inscription : décembre 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 81
Points : 66
Points : 66
Envoyer un message via MSN à jarod_ab
Bonjour...

je te remercie pour ta réponse. Moi c'est ce que je veux, une même personne pour enseignant et administrateur. Sous postgres, quand je fais un insert que se soit dans enseignant ou administrateur, il crée une autre personne. Comment je dois faire?
jarod_ab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2006, 11h02   #4
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
Une possibilité serait de considérer un administrateur comme une "spécialisation" d'un enseignant, et donc de créer cette relation d'héritage :

Code :
personne --> enseignant --> administrateur
A toi de voir s'il est encore opportun de conserver la relation personne-->enseignant et s'il n'est pas plus pratique de fusionner les deux tables.
__________________
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 04/03/2006, 13h42   #5
Membre du Club
 
Inscription : décembre 2005
Messages : 81
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 81
Points : 66
Points : 66
Envoyer un message via MSN à jarod_ab
ok merci pour la réponse. oui ta raison il faut fusionner .... encore une fois un grand merci.
jarod_ab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h43.


 
 
 
 
Partenaires

Hébergement Web