У меня есть база данных, которая содержит две таблицы:
Таблица записей содержит записи, каждая из которых имеет один или несколько тегов. Проблема в том, что каждый пост может иметь любое количество тегов. Другими словами, у меня не может быть столбца «tag1», «tag2» и т. Д., И я выполняю ЛЕВОЕ СОЕДИНЕНИЕ.
Как настроить записи, чтобы каждое сообщение могло иметь любое количество тегов?
Вам нужна таблица сопоставления.
Создайте таблицу с именем entries_tags
, которая содержит два столбца: entry_id
и tag_id
, с мульти-ключом для обеих записей.
Это называется отношением «многие ко многим» .
Вы также можете сделать это способом SO, где в дополнение к таблице перекрестков/пересечений у вас есть список тегов для записи, которая может быть помечена:
entries table:
post_id: 3539744, .... tags: sql, database, database-design, tags, data-modeling
Если вы не можете принять удар производительности при использовании таблицы перекрестков при извлечении связанных тегов для записи. Конечно, здесь необходимо соблюдать особую осторожность, поскольку вы имеете дело с денормализованными данными.