{MySQL} Attribuer plusieurs mots-clés

fred6 Messages postés 4 Statut Membre -  
Yoan Messages postés 11905 Statut Modérateur -
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. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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