Правильно ли я нарисовал схему базы данных интернет магазина?

Я новичёк в рисовании схем БД, буду благодарен за любой совет.
Как было бы правильно связать таблицу в которой хранятся все купленные товары (Журнал заказов)?
Спасибо
5b0f0bd70c0b6414643538.jpeg
  • Вопрос задан
  • 8579 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Первое что бросается в глаза:
Категории
1. Категории у Вас только 1-го уровня, вложенных категорий не будет?
2. Что такое "Тип продукта" в таблице "Категория" ? и на что он влияет?

Товары
1. Остатки товаров нигде не хранятся. Маловероятно что магазин торгует товаром который никогда не заканчивается...
2. Хранить количество просмотров товара (которое постоянно должно обновляться) в таблице товаров - это очень плохая практика

Корзина
1. Что храниться в корзине? состав уже оформленного заказа? Тогда тут нужно учитывать количество заказаного товара и его стоимость во время заказа (она ведь со временем меняется) Состав формирующегося заказа? Тогда нужно учитывать как минимум количество добавленного товара. И то и другое?
2. По сути дела в корзине у Вас сейчас храниться перечень товаров добавленных пользователем, тогда зачем в каждой строке хранить "IP клиента"? Насколько я понимаю IP Вы используете для привязки корзины к клиенту - в этом случае не нужно его храниться в каждой позиции корзины, лучше ввести отдельную таблицу для этих целей, да и привязка корзины по IP - плохой вариант

Заказ
1. Сумма заказа нигде не хранится, Вы ее что-ли планируете "на лету" рассчитывать?
2. Не понятно какое назначения у таблицы "Журнал заказов"
3. В заказе Вы храните данные о клиенте, но что будет если один и тот же клиент оформит несколько заказов? Вы получите дублирование данных, поэтому стоит информацию о клиентах вынести в отдельную таблицу

P.S. Корректность структуры базы данных сложно оценить по одной схеме. В этом вопросе нужно исходить из задач, которые планируется решать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vortx
IT-инженер, Web-разработчик, MicroChip-dev
Корзину привяжите к сэссии а у вас к ip, сам позиции заказа храните в отдельной таблице - это избавит вас от проблем с переименованием товаров и категорий... В целом пойдет ваша схема но это ясли магазин))) без обид
Ответ написан
Комментировать
У вас нет пользователей как таковых. А кто-то может быть захочет стать постоянным покупателем и не вводить по 10 раз адрес доставки и ФИО.
Корзина и заказ у вас это 2 сущности отчасти дублирующие, отчасти конкурирующие. Может быть проще сделать одну сущность - Заказ, но с разными статусами? В начальной стадии это будет корзина. А то что называется сейчас корзиной будет просто списком товаров в заказе.
В корзине нет количества товара, а это важно. У товаров бывают размеры, цвета и другие атрибуты, это тоже нужно учитывать.
Потом появляются тарифы, налогообложение и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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