Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
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 26/04/2007, 16h17   #1
Membre du Club
 
Inscription : décembre 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 133
Points : 43
Points : 43
Par défaut [CONCEPTION] probleme sur une relation reflexive

Bonjour à tous
Le problème que je m'en vais vous souligné se presente comme suit:
j'ai une table PERSONNE dont j'aimerais faire une requete qui me donne les déscendants par personne où le sexe est "femme".
j'ai d'abord fait une relation avec une autre table PERSONNE ayant comme clé secondaire la primaire de l'autre. celà avait l'air de marcher mais pas du tout. en fait le problème se pose au niveau de la saisie.dans ce cas une meme personne devrait etre saisi dans les ascendants et dans les descendant.
une autre idée a été d'ajouter une propriété parent dans la table PERSONNE,propiriété qui ne sera pas une clé.Le probleme qui s'est posé est qu'on peut saisir pour une personne un parent qui n'existe pas dejà. ce que je ne veux pas.
j'aimerais en definitive savoir comment gerer une relation reflexive.
Merci de votre reponse
__________________
Celui qui est juste dans les petites choses l'est dans les grandes
bambi98 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 16h29   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 482
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 482
Points : 7 577
Points : 7 577
Ta table devrait avoir au moins les deux champs suivants :

IdPersonne (Clef primaire)
IdParrent (Parrent peut être nul)

Dans ta fenêtre des relations tu affiche 2 fois la table personne, ça va te créer Presonne et Personne_1.

Tu fais ensuite une relation d'intégrité entre Personne et Personne_1, en reliant Personne.IdParrent à Personne_1.IdPersonne.

Autorisé Null dans IdParent te permets d'entrer les personnes dont tu ne connais pas le parent, c'est une relation de cardinalité : 0-n.

A+
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 16h38   #3
Membre du Club
 
Inscription : mai 2006
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 75
Points : 51
Points : 51
Par défaut hello!

j'imagine qu'il faut 1 table parent,une table enfant
mais attention si il y a des doublons dans la table parent (2 famille de meme nom)
dans ce cas il faut creer une cle unique et c'est sur cette clef qu'il faut indexer les enfants

le dernier cas si un enfant a lui-meme un enfant il faudrait avoir une 3° table:arriere-enfant indexée par enfant....etc

c'est a mon avis la seule solution pour touver la filiation complete d' un arriere enfant.(requete contenant les 3 tables parent,enfant,arriere-enfant)

j'espere avoir bien repondu a ta question
giloo(94) est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 17h39   #4
Expert Confirmé
 
Inscription : mai 2005
Messages : 3 419
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3 419
Points : 3 768
Points : 3 768
une seule table suffit

idpersonne
idparent (éventuellement null)
j'oubliais le sexe qui est pourtant indispensable.

le problème est ensuite de savoir comment on nourrit les tables
on prévoit pour la saisie de idparent une liste avec les id existants
cela limite la saisie
__________________
Elle est pas belle la vie ?
random est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 11h15   #5
Membre du Club
 
Inscription : décembre 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 133
Points : 43
Points : 43
Bonjur à tous
je vous remercie pour vos reponses. Mon probleme a été résolu avec une table. exactement comme Random l'a dit.En mode creation dans l'onglet liste de choix j'ai fait une requete SQL SELECT CodePersonne FROM PERSONNE.C'est bon
Mais un autre problème c'est posé. c'est qu'il est possible que le parent d'une Personne soit elle meme.Bizare non? J'ai essaye de modifier la requete en ajoutant la condition Parent<>CodePersonne. Mais la liste de choix devient vide:donc requete probablement fausse.
Je me demande donc comment faire pour qu'une personne ne soit son propre parent ou du moins quelle est la bonne requete?
Merci
__________________
Celui qui est juste dans les petites choses l'est dans les grandes
bambi98 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 11h34   #6
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
dans les propriétés de la table (de la TABLE, pas du CHAMP), tu mets un valide si qui fait que ton ID est forcément différent du IDParent

C'est tout (avec un message si erreur en plus pour faire plus clair )
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE 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 02h07.


 
 
 
 
Partenaires

Hébergement Web