Работа с метками категорий в БД
Хотелось бы узнать, как устроена архитектура построения таблиц для работы с метками (как в stackowerflow)! Например, есть таблицы Posts и Stacks, и у поста может быть отношение с метками ("Java","Spring") из таблицы Stacks. Оптимально ли создать таблицу Post2Stack и в ней иметь внешние ключи PostId и StackId?
Ответы (2 шт):
Автор решения: Герман Борисов
→ Ссылка
Да. Описанный вами вариант является оптимальный.
При этом в таблице Post2Stack не нужен дополнительный суррогатный первичный ключ, а мама пара PostId, StackId будет хорошим естественным первичным ключом.
Автор решения: Alex Khonko
→ Ссылка
Да.
Если вы создаёте данные через many-to-many таблицу,
- ОБЯЗАТЕЛЬНО делаете первичный ключ через эти 2 поля,
- ОБЯЗАТЕЛЬНО на каждое поле делаете внешний ключ к соответствующей таблице,
вы получаете на выходе корректные точные данные