Я знаю, что материал тегов упоминался много раз, но я не могу видеть, что этот вопрос адресован этому вопросу.Как реализовать тегирование при обмене тегами с разными объектами?
Из этой нити Recommended SQL database design for tags or tagging
Я могу видеть, что лучший способ тегов установки, скорее всего,
Item (item_id, item_content)
Tag (tag_id, tag_title)
TagMapping(map_id, tag_id, item_id)
Но что, если я хочу поделиться теги между двумя различными объектами элементов? Например, сообщения в блогах и статьи. (давайте не будем обсуждать, должны ли это быть отдельные сущности или нет :)) Вы делаете что-то подобное, что кажется очень неправильным?
Post (post_id, post_content)
Article (article_id, article_content)
Tag (tag_id, tag_title)
TagMapping(map_id, tag_id, post_id(nullable), article_id(nullable))
Вы предлагаете, чтобы каждая таблица объектов (столбец/статья) имела столбец item_id, который ссылается на таблицу элементов? –
Да, и это также их первичный ключ.Столбы Post и Article являются в основном вспомогательными таблицами для Item, который является основной таблицей. –
Итак, если вы хотите, чтобы все сообщения с тегами соответствовали заданному шаблону, это: select distinct p. * From post p, tagmapping tm, tag t где p.item_id = tm.item_id и tm.tag_id = t.tag_id и t.label например,% foo% –