Pour mettre en place un principe d'héritage entre trois classes, j'ai
fait comme cela:
Personne
------------
id_personne
nom
prenom
categorie
Passager
--------------
id_personne
adresse
Personnel
------------
id_personne
entreprise
j'ai répéter, la clé primaire "id_personne" dans les deux classes dérivées.
L'attribut "categorie" contiendra soit la chaine de caractères
"Passager" soit "Personnel" ainsi on poura retrouver un élement d'une
des deux classes.ok ca marche.
Mais maintenant, si un Personnel devient un Passager ( parceque celui-ci
est en vacance et decide de voyager avec la même compagnie que celle
dans laquelle il travaille ) , il va y avoir une redondance.On aura par
exemple:
Personne
------------
..
..
14 Dubois Pierre Personnel
15 Dupuis Paul Passager
16 Dubois Pierre Passager <-- redondance
..
..
c'est problematique.Alors comment on fait?
On place les attributs "nom" et "prenom" dans les classes derivées?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michaël
Le 24.11.2003 18:12, no-name2 a écrit :
j'ai répéter, la clé primaire "id_personne" dans les deux classes dérivées. L'attribut "categorie" contiendra soit la chaine de caractères "Passager" soit "Personnel" ainsi on poura retrouver un élement d'une des deux classes.ok ca marche.
Salut,
Je comprends pas très bien pourquoi tu ajoutes le champ "categorie" dans la table "personnel". Un jointure directe (ou via un left/right join) entre la table "personnel" et les tables dérivées, te donnera la liste des personnes comprises (ou pas dans) les tables secondaires. C'est l'identifiant de la table "personnel" qui sert de référence (clef primaire par exemple), dans les autres tables, ce sont des clefs étrangères.
Cdt, Michaël
Le 24.11.2003 18:12, no-name2 a écrit :
j'ai répéter, la clé primaire "id_personne" dans les deux classes dérivées.
L'attribut "categorie" contiendra soit la chaine de caractères
"Passager" soit "Personnel" ainsi on poura retrouver un élement d'une
des deux classes.ok ca marche.
Salut,
Je comprends pas très bien pourquoi tu ajoutes le champ "categorie" dans la
table "personnel". Un jointure directe (ou via un left/right join) entre la
table "personnel" et les tables dérivées, te donnera la liste des personnes
comprises (ou pas dans) les tables secondaires. C'est l'identifiant de la table
"personnel" qui sert de référence (clef primaire par exemple), dans les autres
tables, ce sont des clefs étrangères.
j'ai répéter, la clé primaire "id_personne" dans les deux classes dérivées. L'attribut "categorie" contiendra soit la chaine de caractères "Passager" soit "Personnel" ainsi on poura retrouver un élement d'une des deux classes.ok ca marche.
Salut,
Je comprends pas très bien pourquoi tu ajoutes le champ "categorie" dans la table "personnel". Un jointure directe (ou via un left/right join) entre la table "personnel" et les tables dérivées, te donnera la liste des personnes comprises (ou pas dans) les tables secondaires. C'est l'identifiant de la table "personnel" qui sert de référence (clef primaire par exemple), dans les autres tables, ce sont des clefs étrangères.
Cdt, Michaël
no-name2
supposons alors une nouvelle table "Courrier" qui represente les courriers recu par la compagnie. Un courrier pouvant etre envoyer soit par un "Passager" soit par un "Personnel". Donc , à un courrier donné, je vais pouvoir connaitre la "Personne" qui me l'a envoyé mais en plus de ça, je pourrai aller cherché plus d'informations sur elle en fonction de l'attribut "Catégorie", a savoir, si c'est une "passager", où habite-il OU si c'est un "Personnel", dans quel secteur travail-il. C'est un exemple..
Courrier ---------------- idCourrier dateReception Expediteur ----> idPersonne de la table Personne
Expediteur est un clé étrangère sur la clé primaire de idPersonne.Cela pointe (en quelque sorte) sur un tuple de la table Personne. Si on ne fait pas comme ca, il faudrait créer 2 tables "Courrier". 1 - Pour les courriers envoyés par les Passagers. 2 - Pour les courriers envoyés par les Personnels.
vous comprenez mon problême ? De plus je n'ai cité que 2 tables qui heritent de "Personne" mais ils peut y en avoir beaucoup plus.
Michaël a écrit :
Le 24.11.2003 18:12, no-name2 a écrit :
j'ai répéter, la clé primaire "id_personne" dans les deux classes dérivées. L'attribut "categorie" contiendra soit la chaine de caractères "Passager" soit "Personnel" ainsi on poura retrouver un élement d'une des deux classes.ok ca marche.
Salut,
Je comprends pas très bien pourquoi tu ajoutes le champ "categorie" dans la table "personnel". Un jointure directe (ou via un left/right join) entre la table "personnel" et les tables dérivées, te donnera la liste des personnes comprises (ou pas dans) les tables secondaires. C'est l'identifiant de la table "personnel" qui sert de référence (clef primaire par exemple), dans les autres tables, ce sont des clefs étrangères.
Cdt, Michaël
supposons alors une nouvelle table "Courrier" qui represente
les courriers recu par la compagnie.
Un courrier pouvant etre envoyer soit par un "Passager" soit par un
"Personnel".
Donc , à un courrier donné, je vais pouvoir connaitre la "Personne"
qui me l'a envoyé mais en plus de ça, je pourrai aller cherché plus
d'informations sur elle en fonction de l'attribut "Catégorie", a savoir,
si c'est une "passager", où habite-il OU si c'est un "Personnel", dans
quel secteur travail-il. C'est un exemple..
Courrier
----------------
idCourrier
dateReception
Expediteur ----> idPersonne de la table Personne
Expediteur est un clé étrangère sur la clé primaire de idPersonne.Cela
pointe (en quelque sorte) sur un tuple de la table Personne.
Si on ne fait pas comme ca, il faudrait créer 2 tables "Courrier".
1 - Pour les courriers envoyés par les Passagers.
2 - Pour les courriers envoyés par les Personnels.
vous comprenez mon problême ? De plus je n'ai cité que 2 tables qui
heritent de "Personne" mais ils peut y en avoir beaucoup plus.
Michaël a écrit :
Le 24.11.2003 18:12, no-name2 a écrit :
j'ai répéter, la clé primaire "id_personne" dans les deux classes
dérivées.
L'attribut "categorie" contiendra soit la chaine de caractères
"Passager" soit "Personnel" ainsi on poura retrouver un élement d'une
des deux classes.ok ca marche.
Salut,
Je comprends pas très bien pourquoi tu ajoutes le champ "categorie" dans la
table "personnel". Un jointure directe (ou via un left/right join) entre la
table "personnel" et les tables dérivées, te donnera la liste des personnes
comprises (ou pas dans) les tables secondaires. C'est l'identifiant de
la table
"personnel" qui sert de référence (clef primaire par exemple), dans les
autres
tables, ce sont des clefs étrangères.
supposons alors une nouvelle table "Courrier" qui represente les courriers recu par la compagnie. Un courrier pouvant etre envoyer soit par un "Passager" soit par un "Personnel". Donc , à un courrier donné, je vais pouvoir connaitre la "Personne" qui me l'a envoyé mais en plus de ça, je pourrai aller cherché plus d'informations sur elle en fonction de l'attribut "Catégorie", a savoir, si c'est une "passager", où habite-il OU si c'est un "Personnel", dans quel secteur travail-il. C'est un exemple..
Courrier ---------------- idCourrier dateReception Expediteur ----> idPersonne de la table Personne
Expediteur est un clé étrangère sur la clé primaire de idPersonne.Cela pointe (en quelque sorte) sur un tuple de la table Personne. Si on ne fait pas comme ca, il faudrait créer 2 tables "Courrier". 1 - Pour les courriers envoyés par les Passagers. 2 - Pour les courriers envoyés par les Personnels.
vous comprenez mon problême ? De plus je n'ai cité que 2 tables qui heritent de "Personne" mais ils peut y en avoir beaucoup plus.
Michaël a écrit :
Le 24.11.2003 18:12, no-name2 a écrit :
j'ai répéter, la clé primaire "id_personne" dans les deux classes dérivées. L'attribut "categorie" contiendra soit la chaine de caractères "Passager" soit "Personnel" ainsi on poura retrouver un élement d'une des deux classes.ok ca marche.
Salut,
Je comprends pas très bien pourquoi tu ajoutes le champ "categorie" dans la table "personnel". Un jointure directe (ou via un left/right join) entre la table "personnel" et les tables dérivées, te donnera la liste des personnes comprises (ou pas dans) les tables secondaires. C'est l'identifiant de la table "personnel" qui sert de référence (clef primaire par exemple), dans les autres tables, ce sont des clefs étrangères.