Gestion de mots-clefs, quelle solution choisiriez-vous ?

WRInaute occasionnel
Bonjour,

Il y a 1000 articles et 50 mots-clefs. Comment géreriez-vous l'attribution des mots-clefs aux articles :

1) A chaque nouvelle attribution, vous créez un tuple dans une table mot_clef, le tuple comprenant l'id du mot-clef + l'id de l'article.
Solution simple et basique, mais à la fin on peut avoir des milliers de tuples (ce qui somme toute n'est un problème en rien).
2) Vous créez un seul et unique tuple pour chaque mot-clef. Et dans ce tuple, il y a un champ "tableau_article" dans lequel on enregistre un tableau de variable avec les id de chaque article lié au mot-clef [1,8,25,...]

Le deuxième choix me paraît plus pro, un peu plus complexe aussi à traiter.
Le premier choix me parait mieux s'il y a par la suite des clefs étrangères sur les id des articles.

Votre avis ?
 
WRInaute discret
Solution 1.
Non seulement c'est rapide à mettre en oeuvre mais la base de données va gérer ça facilement. Si en plus tu utilise des foreign key, tu auras un schéma cohérent.
La solution 2 bof. Tu compte enregistrer ton tableau de variable dans un champ texte ? Bof.
 
WRInaute accro
Solution 1 (la plus courante, celle que @niap indique): relation many-to-many : Article a plusieurs mots clefs, un mot clef appartient à plusieurs articles, donc ça se fait avec une table pivot.
Solution 2: PostgreSQL et champ de type Array.
Solution 3: MySQL >= 5.7.8: champ de type JSON (je parle pas de mettre du JSON dans un text sinon on px pas vraiment faire de conditions dessus).

Pour mes projets perso (= où j'ai le choix de la techno), je préfère la solution 2.
 
WRInaute occasionnel
Vous privilégiez donc la simplification sur la concision ?

Je n'ai rien contre, c'est juste que je me dis que ça ne flatte guère l'intelligence. Encore qu'il n'y a pas forcément d'intelligence à se compliquer inutilement la tâche...
 
Discussions similaires
Haut