@dgdfghgjh

Верна ли структура БД?

Здравствуйте, делаю сейчас маленькую бд для сайта. Подскажите, правильно ли я реализовал структуру.
Функционал следующий:
Существую пользователи и товары. Пользователь может оставлять комментарии к товарам.
Для данной реализации я сделал 5 таблиц.

users
Содержит данные о пользователе
user_comments
Связывает пользователя с комментарием. Содержит в себе id пользователя и id комментария.
comments
Таблица для всех комментариев
products
Таблица со всеми товарами
products_comment
Связывает комментарий с товаром. Содержит id товара и id комментария.

Верно ли создана структура. Смущает, что для отображения списка комментариев для конкретного продукта нужно сделать 4 запроса (запросить данные из product_comment, на основе их получить данные из comment->обращение к user_comment и только после этого получим доступ к пользователю, оставившему отзыв)

Для наглядности кривая схема из пейнта)
6318776b808e5035778238.png
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
user_comments – не нужно. У каждого коммента может быть только один пользователь. Значит здесь нужна связь Один-ко-Многим. Достаточно поля user_id в таблице комментариев.

По поводу product_comments

Если на сайте комменты только для товаров, то product_comments тоже не нужны. Один коммент для одного товара. Просто поле product_id в таблице комментариев.
Но если планируется комментить не только продукты, но и, допустим статьи или отзывы на сайте, тогда нужна полиморфная связь многие-ко-многим.
То есть таблица commentable с полями

commentable_type – тип объекта для комментирования (продукт, отзыв, статья)
commentable_id – идентификатор объекта комментирования
comment_id – идентификатор комментария
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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