2011-08-04 3 views
1

Je travaille sur un site d'actualités et je pense à la mise en place d'un système d'étiquetage (similaire à ce site) où vous pourrez catégoriser les nouvelles selon différents types de catégories tels que: newscategory (economy , politique, etc.) mais aussi des choses comme la langue dans laquelle il a été écrit et le type d'article (éditorial, reportage, etc.).Problèmes de conception de systèmes d'étiquetage

Comment distinguer ces différents types de catégories? Dois-je avoir une table d'étiquettes pour chaque type de catégorie, ou devrais-je conserver tout dans un tableau et avoir un préfixe d'étiquette tel que "langue: en", "catégorie: économie"? La deuxième solution semble plus flexible parce que je peux ajouter plus de types de caregory juste en ajoutant un préfixe. Cependant, la première solution semble plus structurée et plus facile à utiliser. En outre, je me demande comment vous déterminez quand quelque chose devrait être représenté comme une étiquette ou quand il devrait être une valeur/enregistrement de colonne dans la base de données (par exemple la langue devrait-elle être une étiquette ou ai-je la colonne de " table?). Je ne suis pas sûr de savoir où tracer la ligne.

Merci

Répondre

1

Serait-il suffisant pour dire que les balises elles-mêmes peuvent être commandés dans une hiérarchie? Si c'est le cas, ajoutez simplement un parent_tag_id à votre table tags.

id name   parent_tag_id 
------------------------------- 
1 language  null 
2 english  1 
3 french  1 
4 newscategory null 
5 economy  4 
6 politics  4 

Vous pouvez considérer les colonnes comme des champs statiques et des lignes comme dynamiques. Gardez le nombre de colonnes bas. La langue peut être une colonne de tous les champs de la table doit être associée à une langue.

+0

Intéressant, merci. Je suis toujours penché vers l'utilisation de tables séparées pour chaque type de catégorie. Je pourrais vouloir associer plus de choses aux types de catégories, les types de catégories eux-mêmes ne doivent pas forcément être dynamiques et je préfère la structure normalisée. – Pking

+0

Si différents types de catégories doivent avoir des propriétés et des types de propriétés différents, alors optez peut-être pour des tables séparées pour chacun d'eux. Si tous partagent les mêmes propriétés, à l'exception des noms, créez simplement une table appelée catégories. – Johan

Questions connexes