Лучший способ хранить теги в базе данных? - PullRequest
7 голосов
/ 22 августа 2010

У меня есть база данных, которая содержит две таблицы:

  • запись
  • метка

Таблица записей содержит сообщения, каждый из которых имеет один или несколько тегов. Проблема в том, что каждый пост может иметь любое количество тегов. Другими словами, я не могу иметь столбец «tag1», «tag2» и т. Д. И не могу выполнить левое соединение.

Как настроить записи, чтобы каждое сообщение могло иметь любое количество тегов?

Ответы [ 2 ]

11 голосов
/ 22 августа 2010

Вам нужна таблица сопоставления.

Создайте таблицу с именем entries_tags, которая содержит два столбца: entry_id и tag_id, с мультиключем на обеих записях.

Это называется отношением многих ко многим .

3 голосов
/ 22 августа 2010

Вы также можете сделать это SO-way, где в дополнение к , имеющему таблицу соединений / сопоставлений / пересечений, у вас есть список тегов для записи, которая может быть помечена:

entries table:
post_id: 3539744, .... tags: sql, database, database-design, tags, data-modeling

Если вы не можете добиться снижения производительности при использовании соединительной таблицы при извлечении связанных тегов для записи.Конечно, здесь нужно проявлять особую осторожность, потому что вы имеете дело с денормализованными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...