![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Conception Le forum qui vous aide à résoudre vos questions relatives à la modélisation de votre base de données sous Access. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: juin 2008
Messages: 44
|
Bonjour,
J'ai une relation plusieurs a plusieurs entre 2 tables A et B. Je sais un peut comment fonctionne les relation plusieurs a plusieurs : il faut une table intermédiaire que j'appelle A_B. Actuellment mes tables intermédiaires n'ont pas de clés primaires (c'est ce qu'on m'a conseillé) mais... Ma question est la suivante : Si le même A peut être relié a un même B alors faut il une clé primaire dans ma table A_B pour les distinguer ? merci d'avance Cydonia |
|
|
|
|
|
#2 (permalink) | |
![]() |
Chaque ligne d'une table doit être identifiable de manière unique.
Si tu as deux fois le couple (A,B), c'est un doublon et donc : - Soit ton schéma présente une anomalie ; - Soit le couple (A,B) n'est pas suffisant pour identifier la ligne de ta table. Peut-être que l'association entre A et B est porteuse d'informations ? Auquel cas une information supplémentaire permettra d'identifier de manière unique chaque couple (A,B) présent dans la table. Un bémol sur ce que tu as écrit : Citation:
La clé primaire d'une table associative est composée des clés primaires des tables entrant dans l'association. Dans le cas qui te préoccupe, tu peux ajouter à cette clé primaire une information supplémentaire portée par l'association. Un exemple pour mieux expliquer tout ça... 1) Le schéma Employés -0,n----Participer----0,n- Projets Ici, un employé peut participer à plusieurs projets et un projet peut avoir plusieurs participants employés. Si je souhaite mémoriser chaque participation d'un employé à un même projet, je dois ajouter la date de participation dans la table associative et dans la clé primaire de cette dernière. 2) J'obtiens donc les tables : Employés(EmpId, ...) Projets(PrjId, ...) EmpPrj([u]EPEmployé, EPProjet, EPDate[u], ...) L'identifiant de la table associative EmpPrj est la clé primaire composée de l'identifiant de l'employé, de l'identifiant du projet et de la date de participation.
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
|
|
|
|
|
|
#3 (permalink) | |
|
Membre à l'essai
![]() Date d'inscription: juin 2008
Messages: 44
|
salut merci de ta réponse
quand tu dit Citation:
Ma table intermédiaire est une table créneau qui représente les créneaux horaire entre 2 table A et B cad qu'on peut avoir des cas similaires du style imaginons que ma table soit ainsi créneau {id_A,id_B,info1,info2} On peut avoir toutes les combinaisons possibles {id_A1,id_B1,info1X,info2Y} {id_A1,id_B1,info1X,info2Z} {id_A1,id_B2,info1X,info2Z} {id_A2,id_b2,info1X,info2Y} {id_A3,id_b3,info1R,info2S} alors si on veut identifier les créneaux il faut garder les 4 champs comme clés ? |
|
|
|
|
|
|
#4 (permalink) | ||
![]() |
Citation:
Citation:
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
||
|
|
|
|
|
#5 (permalink) | |
|
Membre à l'essai
![]() Date d'inscription: juin 2008
Messages: 44
|
table A{id_a,...}
table B{id_b,...} table Créneau{id_a,id_b,date,heure,..} J'avais fait un jeu d'essai pour montrer que tous les cas sont possibles Celà représente différents créneaux : {id_a1,id_b1,dateX,heureY,...} {id_a1,id_b1,dateX,heureZ,...} {id_a1,id_b2,dateX,heureZ,...} {id_a2,id_b2,dateX,heureY,...} {id_a3,id_b3,dateR,heureT,...} C'était juste pour montrer que les créneaux ne dépendent pas que de 2 valeurs :/ Citation:
|
|
|
|
|
|
|
#6 (permalink) |
![]() |
On voit bien dans ton exemple que le couple (id_a,id_b) n'est pas suffisant pour identifier les lignes de la table.
Tu peux donc utiliser la méthode décrite plus haut : intégrer la date et l'heure à la clé primaire de la table.
__________________
Philippe Leménager. Futur ingénieur CNAM, en CDD à l'INRA Toulouse jusqu'au 31/12 suite au stage effectué. Je reste ouvert aux propositions d'emploi. |
|
|
|
![]() |
![]() |
||
Relation plusieurs à plusieurs (clé)
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|