{MySQL} Attribuer plusieurs mots-clés

Bonjour,
Je débute avec MySql sous Apache. Je veux créer une base pour gérer mes documents. J'ai donc créé une table qui identifie chaque document et une table qui répertorie les mots-clés qui décrivent ces documents. Je voudrais pouvoir attribuer plusieurs mots-clés à chaque document, et, d'autre part, rédiger la requête qui va me permettre de sélectionner les documents qui contiennent plusieurs mots-clés ? Comment faire ? Merci à l'avance de m'aider.
Configuration: Windows XP Internet Explorer 7.0

1 réponse

  1. Modérateur
    Le schéma relationnel pourrait ressembler à ça :

    Document(NomDoc, Chemin)
    Mot_Cle(Document(NomDoc), Mot_Cle)

    La clé primaire de la table Document est le champs NomDoc, la clé primaire de la table Mot_Cle sont les deux champs. Et le champs NomDoc de la table Mot_Cle est une clé étrangère vers le champs du même nom de Document.

    Le fait de prendre les deux champs pour la clé primaire de Mot_Cle fait que tu peux attribuer plusieurs mot-clés à un même document :
    La_conscience.doc, philosophie
    La_conscience.doc, conscience
    La_conscience.doc, préconscient
    La_conscience.doc, inconscient
    La_théorie_du_chaos, chaos
    Etude_de_la_nature.pdf, nature
    Etude_de_la_nature.pdf, faune
    Etude_de_la_nature.pdf, flore
    ....
    


    Si tu as par exemple 2 mots clé et que tu veux sélectionner les documents qui correspondent à ces 3 mots-clé en même temps, utilise par exemple des requêtes imbriquées, et tu en fais une de plus à chaque mot-clé supplémentaire :

    SELECT NomDoc, Chemin
    FROM Document
    WHERE NomDoc IN (
         SELECT NomDoc
         FROM Mot_Cle
         WHERE Mot_Cle='Mon_mot_clé'
         AND NowDoc IN (
               SELECT NomDoc
               FROM Mot_Cle
               WHERE Mot_Cle='Mon_second_mot_clé'
               )
         )
    0