|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2009 Messages : 35 ![]() |
Bonjour,
Cherchant à perfectionner ma connaissance d'Access et des BDDR en général, j'essaie d'implémenter des exemples de base de donnée, et à résoudre les problèmes que je rencontre. Je "travaille" donc en ce moment sur une base de donnée de gestion de rencontres sportives. LE PROBLEME: Je rencontre un problème de modélisation que je ne parvient pas à résoudre... J'ai une table Teams (assez explicite selon moi), et une table Matches destinée à accueillir les rencontres. Cette table contient entre autre 2 champs awayTeam et homeTeam. Seul problème : il me faudrait une "double relation" entre Team.idTeam et ces 2 champs ce qui empêche, sous Access, d'activer l'intégrité référentielle. MA SOLUTION (qui ne marche pas, sinon je ne serais pas là ) :De mon côté, je me suis penché sur un contournement possible... J'ai créé des tables intermédiaires AwayTeams et HomeTeams qui contiennent chacune un id en relation 1-1 avec Teams.idTeam . Côté Matches, chacune est en relation 1-n avec son champ correspondant. Mais je ne sais pas du tout gérer la relation 1-1 qui est créée entre ces tables intermédiaires et Teams. La création d'équipe génère une erreur m'indiquant qu'il n'y a pas d'enregistrement équivalent dans les tables intermédiaires - ce qui est logique. MES QUESTIONS - Y a-t-il une solution au problème initial (relation vers 2 champs) qui puisse éviter ma méthode ? - Ma méthode serait nickel si on pouvait faire des relations 1-(0,1) plutôt que la relation 1-1 très contraignante. Est-ce possible ? La relation 1-n (sans indexer mes tables intermédiaires) fonctionnerait pour ça mais permettrait les doublons... (et puis une table sans index,c'est moche - Si vous n'avez pas su répondre aux question précédentes, peut-être saurez-vous me renseigner sur la gestion des relations 1-1 Je suis sous Access 2010, si ça change quoi que ce soit... Merci pour votre aide, quelle qu'elle soit |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour cycloop,
dans ce cas particulier avec la table Match à relier deux fois avec la table Team, Access a une façon bien curieuse de représenter les deux rôles (équipe à domicile, équipe à l’extérieur). Voir un exemple dans le message : Avec ACCESS représenter les deux rôles est possible, même si la façon de devoir procéder est plutôt débile il faut donc ajouter une deuxième fois la table Team dans la fenêtre des relations d'Access. |
|
00
|
|
|
#3 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Cycloop et Fabien,
Citation:
Je ne possède pas d'action chez Microsoft et, en plus, je ne connais pas très bien Access, mais je pense que les analystes de chez Microsoft ont pondu une forme particulière pas trop mal réussie et surtout gérable, par la suite, et plus ou moins facilement, par des assistants divers et variés (cardinalités unidirectionnelles et "réduites").
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
re,
débile, curieuse, particulière… comme tu veux. Le fait est que lorsque tu veux relier la table Equipe deux fois à la table Match(idMatch, DateMatch,…, #idEquipeDomicile, #idEquipeExterieur) au niveau SQL et dans n’importe quel SGBD tu écrirais un truc du genre : Code sql :
Equipe-1-----∞-Match-∞------1-Equipe_1 Par contre, malgré l’affichage précédent, lorsque j’écris une requête avec le QBE en faisant participer les tables Equipe et Match, on obtient par défaut ce qu'on aurait voulu voir dans la fenêtre des relations: Equipe-1------∞-Match |..........................| 1.........................∞ +------------------+ Mais ici cela s’avère très parce que si je veux obtenir la liste des matchs avec les noms des deux équipes, je vais être obligé de casser une des relations pour revenir finalement à :Equipe-1-----∞-Match-∞------1-Equipe_1 Bref, c’est Didier l’embrouille ce truc… Citation:
? Je ne comprends pas ce que cela signifie .
|
|||
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2009 Messages : 35 ![]() |
Merci bien pour vos réponses !
ça a l'air de marcher. Je me demande juste comment je vais gérer les autres relations de la table Teams maintenant. Est ce que je dois systématiquement créer un lien vers "Teams" et vers "Teams_1" ? |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
Code Fabien :
C’est du vocabulaire emprunté à Excel ou à Oracle ? Je ne comprends pas ce que cela signifie. Je voulais dire que toutes les cardinalités habituelles (merisiennes, par exemple) sont remplacées par : A 1---[relation]---∞ B ou A 1---[relation]---1 B ==> réduites, donc, et paraissant dans le même sens : il n'y a que B qui varie. Ceci dit, je trouve que ce n'est pas mal pensé. Les analystes de chez MS ont bien bossé, pour l'objectif qui leur était, sans doute fixé : la simplification maximale des cardinalités.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Citation:
Team-1-----∞-Match-∞------1-Team_1 AutreTable(idAutreTable,..., #idTeam) AutreTable-∞------1-Team EncoreUneAutreTable(id, ..., #idTeam) EncoreUneAutreTable-∞------1-Team DerniereTable(id, ...., #idTeamRoleA, #idTeamRoleB, #idTeamRoleC) DerniereTable-∞------1-Team ......| ......+-∞-------------1-Team_2 ......| ......+-∞-------------1-Team_3 Quoi que ça devrait aussi marcher avec: DerniereTable-∞------1-Team_2 ......| ......+-∞-------------1-Team_3 ......| ......+-∞-------------1-Team_4 |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2009 Messages : 35 ![]() |
Ok ! pas besoin de lier les 2 tables à chaque fois alors !
Merci à tous pour votre aide |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com