Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1084 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Base de données avec relations plusieurs-à-plusieurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Base de données avec relations plusieurs-à-plusieurs

n°1490082
Nikus
Posté le 12-12-2006 à 11:14:57  profilanswer
 

Bonjour,
 
Je travaille sur une base données et mes maigres compétences se heurtent à des difficultés que je vous soumets:
 
La base a pour objectif de permettre la saisie d'informations diverses sur des projets de développement. Rien de bien compliqué. Mon problème est qu'un projet peut par exemple être mis en place dans plusieurs pays, et que plusieurs projets peuvent avoir lieu dans un même pays. Outre les pays, les équipes de travail concernées ainsi que les différents types d'activités sont également soumises à cette contrainte. D'après ce que j'ai pu trouver sur le net, cela nécessite l'utilisation de relations plusieurs-à-plusieurs et donc de tables intermédiaires. J'ai donc organisé mes tables comme ceci :
 
http://images6.theimagehosting.com/relationships.th.PNG
 
Je voudrais savoir si j'ai tout faux ou pas  :sweat:  
 
Ensuite je voudrais comprendre comment faire un formulaire qui me permette de selectionner plusieurs pays/activités/équipes par projet. Il faudrait que ça ressemble à ça:
 
http://images6.theimagehosting.com/form.th.PNG
 
J'ai cru comprendre qu'un sous-formulaire par combo-box pourrait être une solution, mais je suis vraiment perdu. Si quelqu'un a un peu de temps, j'apprécierai bien un petit coup de main. Merci de m'avoir lu.

mood
Publicité
Posté le 12-12-2006 à 11:14:57  profilanswer
 

n°1490106
MagicBuzz
Posté le 12-12-2006 à 11:36:16  profilanswer
 

1/ Oui, ça me semble juste, quoique tu perds une information.
 
Par exemple, j'imagine qu'un intervenant "peu intervenir" dans X pays. Et parallèlement, il "intervient" dans Y pays (avec Y inclu dans X évidement).
 
Donc il faudra rajouter un flag dans certaines de tes tables de correspondances afin de gérer cette différence si tu en as besoin.
 
2/ Pour le formulaire, en gros il manque un bouton à côté de chaque liste déroulante "add". Ensuite faudra faire un peu de prog, mais rien de bien compliqué.

n°1490147
Nikus
Posté le 12-12-2006 à 12:04:51  profilanswer
 

Hello et merci pour la rapidité de ta réponse  :jap:  

Citation :

1/ Oui, ça me semble juste, quoique tu perds une information.
Par exemple, j'imagine qu'un intervenant "peu intervenir" dans X pays. Et parallèlement, il "intervient" dans Y pays (avec Y inclu dans X évidement).
 
Donc il faudra rajouter un flag dans certaines de tes tables de correspondances afin de gérer cette différence si tu en as besoin.


En fait ce sont des équipes qui travaillent sur plusieurs projets en même temps (sans être physiquement sur place). Je pensais donc rajouter une table intermédiaire entre [Unit] et [Country]. Ca se tient?
 

Citation :

2/ Pour le formulaire, en gros il manque un bouton à côté de chaque liste déroulante "add". Ensuite faudra faire un peu de prog, mais rien de bien compliqué.


D'accord pour le bouton "add". Dans ce cas je crois que ça serait plus clair avec une list box plutôt qu'une combo box. Ce que j'ai du mal à comprendre, c'est dans quelle table (et quel champ) va être stockée l'information "ce projet se passe dans tel et tel pays".

Message cité 1 fois
Message édité par Nikus le 12-12-2006 à 12:07:58
n°1490156
MagicBuzz
Posté le 12-12-2006 à 12:19:09  profilanswer
 

Nikus a écrit :

Hello et merci pour la rapidité de ta réponse  :jap:  
 
En fait ce sont des équipes qui travaillent sur plusieurs projets en même temps (sans être physiquement sur place). Je pensais donc rajouter une table intermédiaire entre [Unit] et [Country]. Ca se tient?
 
 
D'accord pour le bouton "add". Dans ce cas je crois que ça serait plus clair avec une list box plutôt qu'une combo box. Ce que j'ai du mal à comprendre, c'est dans quelle table (et quel champ) va être stockée l'information "ce projet se passe dans tel et tel pays".


1/ En effet, un lien entre Unit et Country me semble opportun. Il faudra ensuite filtrer les pays en fonction des pays du projet afin de n'affecter que des unités qui travaillent dans ce pays. Cette contrainte ne peut être que "manuelle" avec Access. Avec un SGBD plus évolué, on peut écrire une contrainte appelant une PS ou plus simplement, un trigger.
2/ En effet, deux listes déroulantes me semblent judicieuses. L'info sera évidement dans la table de jointure entre Project et Country. A noter que pour que ça marche, il faut que le projet soit créé dès le début : donc à la création d'un projet, tu crées le projet (avec tout à vide) et tu affiches le formulaire ensuite, afin de modifier.

n°1490372
Nikus
Posté le 12-12-2006 à 15:59:39  profilanswer
 

Citation :

A noter que pour que ça marche, il faut que le projet soit créé dès le début : donc à la création d'un projet, tu crées le projet (avec tout à vide) et tu affiches le formulaire ensuite, afin de modifier.


 
Comment ça? Ca ne me parraît compliqué pour l'utilisateur final (et pour moi aussi :pt1cable:). Y'a pas plus simple?
 

n°1490379
MagicBuzz
Posté le 12-12-2006 à 16:04:26  profilanswer
 

C'est transparent pour l'utilisateur...
 
Dans ton form principal, t'as un bête bouton "Create new project".
 
On click sur ce truc, tu fais :
- insertion d'un nouveau projet dans la base
- récupération de l'id du projet créé
- ouverture de ta form avec l'id de ce projet

n°1490440
Nikus
Posté le 12-12-2006 à 16:31:16  profilanswer
 

Ok, c'est très clair.
 
Encore une question et j'arrête de faire le noob pour aujourd'hui. Dans mon formulaire, j'ai donc 2 listes déroulantes, une avec la liste des pays, et l'autre, vide, qui attends que j'y ajoute les différents pays concernés par le projet. Comment faire que le contenu de la 2e liste soit envoyé dans la table de jointure [ProjectCountry] quand j'enregistre le projet?

n°1490844
MagicBuzz
Posté le 13-12-2006 à 14:05:15  profilanswer
 

moi j'enregistrerais surtout les modifs au fur et à mesure, c'est bien plus simple à gérer.
et t'as toutes les infos nécessaires pour le faire;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Base de données avec relations plusieurs-à-plusieurs

 

Sujets relatifs
transfert de données a partir du c++ vers Excelrecuperer aleatoirement des donnees d'un tableau [RESOLU]
[VBA] Joindre plusieurs documents word ensemble en arrière-planEffectuer une recherche avec des SELECT Option à plusieurs niveaux
Replication de bases Access pour plusieurs sites distants ?Lecture de données sur port USB en C/C++
Diviser un calque en plusieursAjout de header GPL dans plusieurs fichers source
cache de donnéesPartager un dossier avec plusieurs sites
Plus de sujets relatifs à : Base de données avec relations plusieurs-à-plusieurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR