Bonjour à tous,
Dans ma base de données, j'ai une table projet (clé primaire: N°Projet).
Chaque projet est constitué de deux sites distincts (A et B), car l'entreprise intervient sur deux sites pour un projet donné. J'ai donc également une table Site (clé primaire: N°Site).
Pour chaque site sur lequel on intervient, on a une multitude d'information qui dépendent du projet auquel il s'associe.
J'avais donc créer ma base de cette manière:
Projet (N°Projet, ...infos sur le projet ...)
Site_par_Projet(N°Projet, N°Site, Position_site (A ou B), ... infos sur le site en rapport avec le projet)
Site(N°Site, ... infos sur le Site)
Jusque là cela me semblait une bonne solution... jusqu'à ce que je m'attaque aux formulaires...
En effet, si je veux par exemple: N°Projet, N°Site A, Nom site A, N°Site B, Nom Site B, ect... Alors je passe par 2 requêtes et il faut que je fasse le formulaire "a la main" avec création de table, modif formulaire et MAJ faites par requête.
Je pensais pouvoir simplifier avec une table contenant 3 clés primaires, je m'explique:
Projet (N°Projet, ...infos...)
Projet_Sites (N°Projet, N°Site A, N°Site B)
Site_par_Projet(N°Projet, N°Site, ...infos...)
Sites(N°Site, Nom_Site, infos...)
Le problème est que je n'arrive pas à relier la table PROJET_SITES à la table SITE_PAR_PROJET. Si j'essaie d'associer N°Projet et N°SiteA de la table P_S à N°Projet et N°Site de la table S_P_P, j'obtiens le message d'erreur "Index unique introuvable pour le champ référencé d'une table principale".
J'ai lu quelque part qu'il faut qu'un des deux champs mis en relation soit indexé sans doublon, mais dans mon cas, un numéro de site peut apparaitre plusieurs fois dans les tables car il peut être choisi pour n'importe quel projet.
Comment faire pour simplifier tout ça afin de pouvoir accéder aux formulaires automatiques et pouvoir accéder aux Sites A et B sans passer par des requêtes?
Je ne sais pas trop si j'ai été claire (au besoin je peux joindre une capture de mon MCD) et remercie ceux qui prendront le temps de se pencher sur mon pavé.
Merci d'avance!
Partager