Какова будет оптимальная структура таблиц в моем случае?

Существуют ли наработанные практики по структуре таблиц в плане расширяемости/производительности для следующей задачи:
Есть таблица записей (постов): id, datetime, title, text
Из строки text выделяются хэштеги (#тег, #другойтэг ... etc.)
Кроме того к записи могут быть присоединены ссылки на медиа-контент - фото, видео. Таких "аттачей" может быть от 1 до ... 100 например.

Вопрос: как правильно все это хранить?
1. Аттачи в отдельной таблице и присоединять по id записи или как-то иначе?
2. Хэштеги также отдельной таблицей или лучше простым перечислением в отдельной строке таблицы самой записи.

Что более экономно с точки зрения нагрузки на БД при выводе списков записей / поиска по записям / поиска по хэштегам? Есть ли типовые решения подобной структуры?
  • Вопрос задан
  • 2916 просмотров
Решения вопроса 1
fornit1917
@fornit1917
Аттачи в отдельной таблице и присоединять по id записи или как-то иначе?


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

Хэштеги также отдельной таблицей или лучше простым перечислением в отдельной строке таблицы самой записи.


Отдельной таблицей, с индексом по хэштегу. Если в поле TEXT перечислением их указывать, то не сможете эффективно поиск по хэштегам делать. В MySQL правда есть полнотекстовые индексы, но не рекомендую их использовать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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