2010-11-18 15 views
0

J'ai juste besoin de quelques conseils sur l'utilisation des étiquettes. Je travaille actuellement sur un site web et les utilisateurs peuvent poster des vidéos, des images, du son et des informations sur eux-mêmes.Des conseils sont nécessaires sur les étiquettes

Je n'ai jamais travaillé avec des tags auparavant sur un site web normal (j'ai travaillé avec eux sur wordpress, youtube, etc.), j'ai donc besoin de conseils pour commencer à concevoir ma base de données.

Quelle est la manière habituelle de travailler avec des balises lorsque vous avez plusieurs catégories? Dois-je ajouter des tags pour chaque catégorie? Exemple:

Table: 
gallery 

gallery_id 
image 
tags 

Table 
audio 

audio_id 
title 
link 
audio_tags 

Etc... 

Ou est-ce que je fais une seule table « tags » et toutes les balises en elle? comme: Tableau Tags:

tag_id 
tag 

Merci à l'avance.

Répondre

0

Cela dépend si vous voulez que les balises soient partagées entre plusieurs objets. Si vous voulez que cela soit séparé, alors je ferais des tables de marques séparées pour eux. Sinon, j'aurais la même table d'étiquette, et utiliser des tableaux différents pour chaque relation les balises auront, si

pour séparés:

gallery 
... 
gallery_tags 
tag_id 
tag 

tags_to_gallery 
tag_id 
gallery_id 
..same for audio.. 

pour ne pas séparés:

gallery 
    ... 
    audio 
    ... 
    tags 
    tag_id 
    tag 

    gallery_to_tag 
    gallery_id 
    tag_id 

    audio_to_tag 
    audio_id 
    tag_id 

vous pourrait également le faire avec une table ploymorphic. avec une table avec quelque chose comme ceci:

tag_relations 
tag_id 
object_id 
object_table 
+0

Merci pour la réponse détaillée. Je vais chercher des tags séparés pour chaque catégorie, sinon ce sera un gâchis. Merci encore! – moonwalker

0

Techniquement, le meilleur format est celui que vous avez décrit en premier, mais si vous deviez implémenter le second, vous auriez besoin d'un champ supplémentaire - c'est le champ catégorie. Mais il serait préférable et plus simple d'avoir des champs de tag dans chaque table - mieux pour la lisibilité et aussi pour l'implémenter sur votre site.

Espérons que cela aide.

+0

Le certainement aide. Merci beaucoup pour votre aide. – moonwalker

1

C'est à vous de décider comment façonner l'application. Si vous souhaitez que les balises soient partagées entre les galeries et l'audio, utilisez une table unique et deux tables de référence many-to-many (ou une table avec un polymorphisme).

+0

Merci! Je pense que je vais opter pour des tags séparés pour chaque catégorie. :) – moonwalker