par
Ryle » 06 oct. 2010, 22:33
En fait, plutôt qu'un champ dans lequel tu concatènes tes identifiants, le mieux lorsque tu as une association 1::N (c'est à dire, lorsque à un élément d'une table peuvent être associés plusieurs éléments d'une autre table), c'est de faire une table intermédiaire qui contient deux champs : id_article et id_categorie. Pour chaque article, tu peux ainsi lui associer une ou plusieurs catégories en remplissant cette table.
Cette façon de procéder te permet de faire facilement des jointures entre tes 3 tables (une seule requête qui va interroger les 3 tables), pour savoir facilement quels articles appartiennent à une catégorie donnée, ou à quelles catégories appartient un article.
(Il est également plus facile ainsi de mettre à jour tes données : pour retirer un id, tu supprimes l'enregistrement correspondant et tu n'as pas besoin de reconstruire ta chaîne d'id à chaque fois)
Tu peux également y parvenir avec ta façon de faire en utilisant l'instruction sql LIKE, qui te permet de chercher des ressemblances dans une chaine. Tu peux ainsi faire une requête avec la condition " WHERE theme LIKE '%[sep]12[sep]%' " pour retrouver les enregistrements qui contiennent la chaîne [sep]12[sep]

En fait, plutôt qu'un champ dans lequel tu concatènes tes identifiants, le mieux lorsque tu as une association 1::N (c'est à dire, lorsque à un élément d'une table peuvent être associés plusieurs éléments d'une autre table), c'est de faire une table intermédiaire qui contient deux champs : id_article et id_categorie. Pour chaque article, tu peux ainsi lui associer une ou plusieurs catégories en remplissant cette table.
Cette façon de procéder te permet de faire facilement des jointures entre tes 3 tables (une seule requête qui va interroger les 3 tables), pour savoir facilement quels articles appartiennent à une catégorie donnée, ou à quelles catégories appartient un article.
(Il est également plus facile ainsi de mettre à jour tes données : pour retirer un id, tu supprimes l'enregistrement correspondant et tu n'as pas besoin de reconstruire ta chaîne d'id à chaque fois)
Tu peux également y parvenir avec ta façon de faire en utilisant l'instruction sql LIKE, qui te permet de chercher des ressemblances dans une chaine. Tu peux ainsi faire une requête avec la condition " WHERE theme LIKE '%[sep]12[sep]%' " pour retrouver les enregistrements qui contiennent la chaîne [sep]12[sep] :)