2010-08-19 9 views
1

Je me demandais si je permettais à mes utilisateurs de choisir les catégories dans lesquelles leur message serait affiché et s'ils pouvaient choisir plusieurs catégories de un à plusieurs.Question de table MySQL. [MULTI PART QUESTION]

  • Comment stocker la valeur ou les valeurs de l'ID de catégorie dans la base de données?
  • Devrais-je regrouper chaque valeur par exemple, 45,12,45,78 ou devrais-je stocker une valeur à la fois?
  • Et à quoi ressemblerait ma structure de table?
  • Ou devrais-je l'ajouter à une table existante?

Répondre

0

La structure que vous décrivez est vraiment un many-to-many relationship (utilisé dans tous les tags structures et aussi bien).

Entries Table 
+----+-------+------+ 
| id | title | text | 
+----+-------+------+ 

Entries-to-Tags Table 
+----------+--------+ 
| entry_id | tag_id | 
+----------+--------+ 

Tags Table 
+----+-----+ 
| id | tag | 
+----+-----+ 

Un appel SQL typique pour vérifier toutes les entrées d'une étiquette serait

SELECT * 
FROM tags_table as tg 
LEFT JOIN entries_to_tags AS entg ON tg.id = entg.tag_id 
LEFT JOIN entries AS en ON entg.entry_id = en.id 
WHERE tg.tag = 'my tag' 

Un appel SQL typique pour vérifier les balises d'une entrée serait

SELECT * 
FROM entries AS en 
LEFT JOIN entries_to_tags AS entg ON en.id = entg.entry_id 
LEFT JOIN tags_table AS tg ON entg.tag_id = tg.id 
WHERE en.title = 'my article title' 
+0

Le champ 'id' dans le' entrées à Tags' la table est inutile. Faites de 'entry_id' et' tag_id' la clé primaire (composée) pour cette table. –

+0

@ Jeff Mattfield, c'est vrai! Je l'ai mis sur mon propre schéma pour le futur contrôle des révisions. Changé pour la simplicité. Thks! – Frankie

0

La meilleure façon de concevoir des tables de base de données est de les séparer en plus petits morceaux possibles. Dans ce cas, je vais le concevoir avec 3 tables: Post, Category et PostCategory. Post sera la table pour chaque poste créé par l'utilisateur. La catégorie devrait probablement être une table de recherche. PostCategory est la table pour stocker les catégories de chaque publication.

  • Post est un à plusieurs PostCategory
  • Catégorie est un à plusieurs PostCategory
  • PostCategory a ids primaire postID et CategoryId