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

Base de données avec relations plusieurs-à-plusieurs - SQL/NoSQL - Programmation

Marsh Posté le 12-12-2006 à 11:14:57    

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.

Reply

Marsh Posté le 12-12-2006 à 11:14:57   

Reply

Marsh Posté le 12-12-2006 à 11:36:16    

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é.

Reply

Marsh Posté le 12-12-2006 à 12:04:51    

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
Reply

Marsh Posté le 12-12-2006 à 12:19:09    

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.

Reply

Marsh Posté le 12-12-2006 à 15:59:39    

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?
 

Reply

Marsh Posté le 12-12-2006 à 16:04:26    

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

Reply

Marsh Posté le 12-12-2006 à 16:31:16    

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?

Reply

Marsh Posté le 13-12-2006 à 14:05:15    

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;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed