Лучший способ хранить теги в базе данных?

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

  • records
  • tags

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

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

7
задан OMG Ponies 22 August 2010 в 01:46
поделиться

2 ответа

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

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

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

11
ответ дан 6 December 2019 в 15:16
поделиться

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

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

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

3
ответ дан 6 December 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: