Какой лучший способ добавить несколько тегов в блоге? - PullRequest
1 голос
/ 27 марта 2011

Я действительно хочу добавить несколько тегов к сообщению в блоге, когда пользователь выбирает их из поля, но мне было интересно с точки зрения хранения тегов в mysql, будет ли у меня поле для хранения всех тегов, или я должен сохранить одинодин то есть

tags_field = (cats ,animals, fur)

ИЛИ

id1 cats

id2 animals

id3 fur

Я думал использовать первый пример, а затем разбить списки и разделить их на отдельные теги при представлении их пользователю !!!:)) спасибо

Ответы [ 2 ]

4 голосов
/ 27 марта 2011

Вы должны использовать три таблицы:

  • Одна таблица, где вы храните сообщения;одна запись в строке
  • Одна таблица, в которой вы храните теги;по одному тегу на строку
  • и по одному соединению, в котором вы храните пары tag_id + post_id

Таким образом, один тег может использоваться несколькими сообщениями, а один пост может иметьнесколько тегов - и нет никакого дублирования данных.


Итак, в основном, ваши таблицы будут выглядеть так:

posts
  - id ; primary key
  - date
  - title
  - content

tags
  - id ; primary key
  - name

posts_tags
  - tag_id   ; primary key ; foreign key to tags.tag_id
  - post_id  ; primary key ; foreign key to posts.post_id
1 голос
/ 27 марта 2011

Если вы выберете первый подход, у вас будут трудности с запросами.Например, вы не сможете легко найти все сообщения с тегами "кошки".Если вы выберете второй подход, это не будет проблемой.

Другими словами, у вас должна быть таблица postId_tag ​​для сопоставления поста и тега.

...