Access - relation

Fermé
BenjiBxl - 28 févr. 2008 à 17:57
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 3 mars 2008 à 16:17
Bonjour,

Je tente de créer une petite base de données (a priori toute simple) mais qui m'impose d'utiliser une relation de "plusieurs à pluiseurs". En effet, l'idée est de pouvoir enregistrer des articles de presse (IdArtPresse) avec des données simpmes comme le nom du Journal, le nom du journaliste, la date de parution, le titre, et un commentaire éventuel. Jusque là aucun stress (ouf). Une table ArticlePresse (RéfArticle, Titre(txt), Commentaire(txt), Date( / /) RéfJournal, RéfJournaliste), une table journalistes (RéfJournalistes, NomJournaliste), une table journal (RéfJournal, NomJournal). Le tout est lié par une relation un-à-plusieurs. A ce stade toujours aucun stress, et même un tout beau formulaire qui peut simplifier l'encodage ;-)

Là où tout se corse ...

C'est que ce qui m'intéresse c'est de pouvoir attribuer jusqu'à 8 mot-clés différents chaque article (possibilité de 1 à 8).
Bien entendu, je dois réaliser une relation de plusieurs à plusieurs (plusieurs mot-clés par article et plusieurs article par mot-clés). Moyen : une table intermédiaire de liaison avec comme clé primaire "RéfArticle" ET "RéfMotclé".

Questions : Que dois-je mettre dans ma table article en ce qui concerne le/les mots clés ? UN champs "mot-clé" ? ou 8 champs "mots-clé" (MC1, MC2, MC3, ..., MC8) ?

Comment créer une requête (c'est tout de même l'objectif !) pour chercher "quels articles pour MC x + MC y + MC z ?

Et là j'avoue que je bloque tout à fait ! Je ne suis pas certain de l'arhitecture de mes tables, des relations, de certains champs, et en plus j'ignore comment créer la requête ... la cata quoi ! ;-)

Merci pour vos bons conseils et votre aide !

4 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 févr. 2008 à 20:21
Bonsoir,

Il est toujours un peu difficille d'appréhender un problème nouveau sur la base d'un résumé même clair comme le tien, aussi je vais peut-être m'aventurer sur le tortueux chemin de l'erreur, mais en première réflexion et afin d'engager le dialogue :


Cette table intermédiaire (pourquoi intermédiaire ?) si tu l'organises sur la clé primaire "RéfArticle" suivi de "RéfMotclé" sur lequel tu crée un index secondaire (ou inversement "RéfMotclé" en primaire ET"RéfArticle" en secondaire suivant la fréquence supposée d'accès aux articles de presse privilégiant soit l'accès par "RéfArticle" ou soit l'accès par "RéfMotclé". )
tu obtiendrais une organisation du type : (en raisonnant sur RéfArticle" et "RéfMotclé)

RéfArticleA et RéfMotclé1
RéfArticleA et RéfMotclé4
RéfArticleA et RéfMotclé6
RéfArticleB et RéfMotclé1
RéfArticleB et RéfMotclé3
RéfArticleB et RéfMotclé5
.....................................
....................................
....................................
vu du côté clé primaire.
ET
vu du côté clé secondaire :

RéfMotclé1 et RéfArticleA
RéfMotclé1 et RéfArticleB
RéfMotclé3 et RéfArticleB
RéfMotclé4 et RéfArticleA
RéfMotclé5 et RéfArticleB
RéfMotclé6 et RéfArticleA

Tu n'aurais donc pas besoin d'ajouter de colonne(s) MC dans ta table principale, l'accès à cette table se ferait toujours sur la référence après un accès sur la table (temporaire?) réalisé au moyen de la clé primaire ou secondaire suivant le type de requête fonctionnel.

De plus avec ce type d'organisation tu ne serais pas limité à 8 MC.

C'est une réflexion "à chaud" je peux me tromper, dis moi ce que tu en penses.
0
Bonjour Christian - et merci de ta réponse.

Effectivement, ce que je nome "table intermédiaire" est en fait une table de jonction. Bonne nouvelle, ton idée fonctionne. C'est ce que j'avais déjà intuitivement tenté de faire. J'ai donc supprimer dans la table "Article" les (8) champs "RéfMotcle", et dans la construction d'un formulaire j'utilise la table de jonction pour créer une (ou des) liaison(s) entre un article et un/des mot-clés.

Il me reste qques difficultés --- mais cela progresse ;-) --- dont la plus importante est de pouvoir réaliser une requête efficace (et tout l'objectif de cette base de données tourne autours de cette requête!). Comment demander : "tous les articles qui comprennent le mot-clé X ET le mot-clé Y, etc. ?

Après recherche d'info il semble, comme tu le proposes à très juste titre, qu'une requête fonctionnelle soit la plus indiquée pour ce faire. Mais, sous ACCESS 2000, ce type de requête existe-t'elle ? (je ne trouve pas ...).

Un tout grand merci !
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
1 mars 2008 à 00:38
Bonsoir,

Merci également d'avoir pensé à me tenir informé.

Malheureusement je ne peux pas t'aider à répondre à ton interrogation sur l'existence de la requête car je ne connais absolument pas ACCESS 2000.
Par contre je me suis fait un petit scénario de test en SQL DB2, la requête en question ne semble pas compliquée (il est vrai qu'il s'agit dans ce cas d'une requête figée, c'est-à-dire une requête dans laquelle les valeurs testées sont "en dur" et le nombre de ces valeurs testées est arrêté).
A propos de ce scénario, une remarque sur un problème qui m'est apparu à la faveur des tests. Si comme je le présume, les contraintes concernant l'index primaire d'une table ACCESS 2000 sont identiques à celles d'une table DB2, à savoir que les valeurs de la clé primaire doivent être uniques, il est nécessaire d'ajouter un suffixe à la clé.
Pour les besoins de mon test j'ai ajouté (brutalement) un numéro d'ordre (1 à n pour une même référence article) à la référence de la table de jonction, ce n'est ni très élégant ni très facile à gérer. Mais peut-être as-tu déjà réglé ce problème.

A bientôt, j'espère, pour la suite de cette intéressante affaire........
0
Bonjour Christian,

Voilà je suis toujours à la recherche de la bonne solution pour la requête mais un tout grand merci pour ton aide !

Si j'arrive à trouver une solution je ne manquerai pas de donner l'info via le forum. C'est étonnant, voilà une base de donnée qui semble toute simple (et qui peut être très pratique) mais dont l'aspect technique n'est pas facile ;-)

A bientôt et encore merci !
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
3 mars 2008 à 16:17
Bonjour,

Veux-tu que je te "poste" le scénario de test que j'ai fait en SQL/DB2 ?
0