Самый быстрый способ сортировки по тегам БД

У меня была настроена довольно банальная система тегов:

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

Однако с тех пор я изменил способ отображения моих тегов.

Моя новая идея состоит в том, чтобы иметь столбец related в столбце keyword_tbl. Я решил попробовать этот маршрут, потому что я хотел сделать систему хлебных крошек и хотел бы «упорядочить» теги, например, Спорт -> бейсбол -> питчеры. Кроме того, если они наберут «бейсбол», я бы хотел включить спорт как часть тегов, чтобы они не беспокоились об этом.

keyword_tbl : keyword_id | keyword | related_id

Например:

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

0 отмечает тот факт, что это «общий» тег, являющийся самым широким термином. Это означает, что для каждой темы, которую они публикуют, мне нужно будет сохранить только одно значение (самое подробное или «кувшин» в приведенном выше примере). Начиная с «Кувшина», я мог получить связанные поля и создать «хлебные крошки» в обратном порядке.

Мой вопрос таков: какой маршрут будет лучше для того, что я пытаюсь сделать с панировочными сухарями? Есть ли что-то особенно неправильное в том, как я планирую это сделать, что кто-то может увидеть?

Спасибо


person Ricky Mason    schedule 17.12.2012    source источник


Ответы (1)


Вот некоторые потенциальные проблемы (но это не значит, что вы на неверном пути).

Как правило, теги представляют собой более свободную концепцию, чем категории. Похоже, вы смешиваете их вместе, что может быть проблемой. Что произойдет, если у вас есть тег (скажем, «левша»), который применяется к людям в бейсболе и футболе? Теги были изобретены, чтобы избежать такой проблемы классификации, когда для всего в дереве нужен один родитель.

Запрос на определение набора связанных тегов, вероятно, будет неэффективным/запутанным, в зависимости от того, сколько уровней хлебных крошек у вас может быть. Кто отвечает за классификацию тегов в дереве? Если это функция администратора (поэтому это происходит не слишком часто), вы можете создать «материализованное представление», которое будет содержать все связанные теги каждого тега.

person jfrank    schedule 17.12.2012
comment
Спасибо за ответ. Чтобы ответить на ваш вопрос, у пользователя будет возможность создавать собственные теги. Проблема с системой тегов, как вы описали, с участием «левшей» заключается в том, что если пользователь просматривал тег «левши» и создавал сообщение, его невозможно классифицировать по бейсболу, футболу или спорту. также. Это проблема, которую я пытаюсь преодолеть. - person Ricky Mason; 18.12.2012
comment
Это была моя точка зрения - теги и классификация не очень совместимы как концепции, независимо от реализации. Вы видели, как они успешно смешиваются? Мне любопытно, потому что оба полезны, я просто не понимаю, как их использовать вместе. У вас могут быть отдельные теги и категории, но это похоже на дополнительную работу для ваших пользователей. - person jfrank; 18.12.2012
comment
интересно. Я вернусь к вам по этому поводу. А пока я отмечу это как правильное. Хотя это и не тот ответ, который я искал, безусловно, информативный, который поможет мне развить концепцию. - person Ricky Mason; 18.12.2012