Помогите разобраться со структурой базы данных интернет магазина

Всем привет, я делаю учебный проект(интернет магазин смартфонов) на python+flask+postgresql. Я еще новичек в этом и хотел бы попросить помощи со структурой бд. Я составил примерную схему. Можете подсказать что в ней неправильно и как это лучше сделать.

https://i.stack.imgur.com/rPz58.png

Немного о проекте

На сайте у меня будет ссылка на профиль юзера, на корзину юзера и на заказы юзера. На главной странице будут находится карточки смартфонов при нажатии на которую открывается страница отдельного смартфона с его характеристиками. На странице смартфона можно будет добавить его в корзину. И тут возникает еще один вопрос: как должна выглядеть корзина в базе данных, нужна ли вообще для нее отдельная сущность или заказы в корзине как то хранить через сессии. И как тогда связать корзину с заказами


Ответы (1 шт):

Автор решения: Sheridan

Да, корзина нужна хотя бы потому как сайт это такое "приложение", которое теряет контекст при каждом обращении. Точнее, нельзя надеяться что контекст сохранится. Поэтому я бы сделал табличку с полями как минимум:

  • id модели
  • id заказчика
  • Количество штук
  • Статус (оплачено, выслано...)
  • Датавремя заказа

Более того, я бы сделал ещо одну табличку, "заказы". Потому что туда можно положить инфу дополнительную, на время заказа актуальную.

Тогда получается так:

Таблица "список товаров в заказе":

  • id модели
  • id заказа
  • Количество штук
  • Датавремя добавления в корзину

Таблица "заказы":

  • id заказа
  • id заказчика
  • Статус (оплачено, выслано...)
  • Комментарий заказчика
  • Датавремя создания заказа
  • Датавремя оплаты
  • Датавремя отправки
  • Адрес, куда отправили

Ну и так далее. Это позволит не просто "продавать", но и вести историю относительно каждого пользователя. К тому же упростит жизнь работникам магазина.

→ Ссылка