@66demon666
По навыкам джун - по факту безработный

Правильно ли так проектировать БД MySQL?

Здравствуйте! Потихоньку вывожу сайт на "чистовой вариант", произвожу рефакторинг кода и БД соответственно. До этого у меня были отдельные таблицы для лайков под постами, фотографиями, комментариями. Посчитал этот подход неверным, ибо при добавлении нового типа ресурса придется добавлять новую таблицу и вшивать ее в связи, которых со временем может быть много. Пришел к такому вот решению
5e8266c1e983a194185915.png

То есть создал общую таблицу, в данном случае, для всех комментариев, в поле resource_type собираюсь писать тип ресурса, к которому коммент оставлен, например, image, post, comment etc, а потом вытаскивать нужное по двум условиям, например, если хочу комментарии к фото то по условиям type=photo&id=n.

Насколько правильный такой подход, и какие есть эффективные решения? Заранее спасибо
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@dimuska139
Backend developer
Такой подход допустим и используется в различных фреймворках. Например, в Django это Generic Relations. Но, с точки зрения проектирования баз данных, это антипаттерн, и делать так не рекомендуется. Потому что нарушается целостность данных. Вы не можете повесить внешний ключ на resource_id и сделать, скажем, каскадное удаление. То есть получается, что в resource_id может оказаться любое число, не соответствующее существующему id какой-либо таблицы.
Делать так или нет, решать Вам. Но лично я бы не делал и держал отдельные таблицы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы