Работа с метками категорий в БД

Хотелось бы узнать, как устроена архитектура построения таблиц для работы с метками (как в stackowerflow)! Например, есть таблицы Posts и Stacks, и у поста может быть отношение с метками ("Java","Spring") из таблицы Stacks. Оптимально ли создать таблицу Post2Stack и в ней иметь внешние ключи PostId и StackId?


Ответы (2 шт):

Автор решения: Герман Борисов

Да. Описанный вами вариант является оптимальный.

При этом в таблице Post2Stack не нужен дополнительный суррогатный первичный ключ, а мама пара PostId, StackId будет хорошим естественным первичным ключом.

→ Ссылка
Автор решения: Alex Khonko

Да.
Если вы создаёте данные через many-to-many таблицу,

  • ОБЯЗАТЕЛЬНО делаете первичный ключ через эти 2 поля,
  • ОБЯЗАТЕЛЬНО на каждое поле делаете внешний ключ к соответствующей таблице,
    вы получаете на выходе корректные точные данные
→ Ссылка