2012-12-17 4 views
0

j'avais un système de marquage assez commun mis en place:moyen le plus rapide pour trier le « marquage » DB

table|'keyword'| : tag_id  | tag 
table|'tag_thread'|: tag_thread_id | tag_id  | thread_id 
table|'thread'| : thread_id  | thread_info 

Cependant, je l'ai depuis changé la façon dont mon marquage sera affiché. La nouvelle idée est d'avoir une colonne related dans le keyword_tbl. J'ai décidé d'essayer cette route parce que je voulais faire un fil d'Ariane, et je voudrais commander les tags, par exemple, Sports -> Baseball -> Pichets. Aussi, s'ils tapent "baseball" je voudrais inclure Sports dans le cadre des tags sans qu'ils s'en inquiètent.

keyword_tbl : keyword_id | keyword | related_id 

Par exemple:

keyword_tbl: 
keyword_id // 1  // 2  // 3 
keyword // sports // baseball // pitchers 
related // 0  // 1  // 2 

0 marque le fait qu'il est une étiquette 'générale', étant le plus large terme. Cela signifie que pour chaque thread qu'ils publient, je n'aurais besoin de stocker qu'une seule valeur (la plus détaillée, ou "lanceur" dans l'exemple ci-dessus). En commençant par "Pitcher" je pourrais dériver les champs liés, et créer la chapelure d'une manière en arrière.

Ma question est la suivante: Quelle route serait la meilleure pour ce que j'essaie de faire avec la chapelure? Y at-il quelque chose qui ne va pas dans la façon dont je prévois de le faire que quelqu'un puisse voir?

Merci

+0

[regardez ici regarde même poste que le vôtre] (http://stackoverflow.com/questions/7221196/correct-way-to-set-up-mysql-database-for-related-tag-searches). –

Répondre

1

Voici quelques problèmes potentiels (mais cela ne signifie pas que vous êtes sur la mauvaise voie).

Généralement, les balises sont un concept plus lâche que les catégories. Il semble que vous les mélangez, ce qui peut poser problème. Que va-t-il se passer quand vous avez une étiquette (disons «gauchers») qui s'applique aux joueurs de Baseball et de Football? Les balises ont été inventées pour éviter ce genre de problème de classification, où tout a besoin d'un parent dans un arbre.

La requête pour trouver l'ensemble des balises associées est susceptible d'être inefficace/désordonnée, selon le nombre de niveaux de pannes que vous pouvez avoir. Qui est responsable de la classification des étiquettes dans un arbre? S'il s'agit d'une fonction d'administration (par conséquent, cela n'arrive pas souvent), vous pouvez créer une "vue matérialisée" qui contiendra toutes les balises associées de chaque balise.

+0

merci pour les commentaires. Pour répondre à votre question, l'utilisateur aura la possibilité de créer ses propres tags. Le problème avec le système de marquage que vous avez décrit, impliquant les «gauchers» est que si l'utilisateur regardait l'étiquette «gauchers», et crée un poste, il n'y a aucun moyen de le classer sous «Baseball», «football "ou" Sports ", aussi bien. C'est le problème que j'essaie de surmonter. –

+0

C'était mon point de vue - le marquage et le classement ne sont pas très compatibles en tant que concepts, quelle que soit la mise en œuvre. Les as-tu vus mélangés comme ça avec succès? Je suis curieux parce que les deux sont utiles, je ne peux pas voir comment les utiliser ensemble. Vous pouvez avoir des tags et des catégories séparés, mais cela semble être un travail supplémentaire pour vos utilisateurs. – jfrank

+0

intéressant. Je reviendrai à vous à ce sujet. Pour l'instant, je vais marquer cela comme correct. Bien que n'étant pas la réponse que je cherchais, certainement une information qui m'aidera à faire évoluer le concept. –

Questions connexes