Как организовать базу данных для корзины и заказов с учетом цен и скидок?
Таблицы имеющейся на данный момент:
Product
id | title |
---|
Size
id | title |
---|
Sku
id | product_id | size_id | quantity |
---|
Схемы условные*
Есть предположения что сама корзина по сути это как неоформленный заказ, и после заказа, ее состояние сменяется, хотя есть и второй вариант развития событий, это когда после оформления все товар перебрасываются из одной таблицы (cart_product
), в другую (order_product
)
Ответы (1 шт):
Автор решения: citn
→ Ссылка
Если относится к поставленной задаче, как к коммерческому проекту, то можно сделать так:
Таблицы:
Users
: Какие-нибудь формальные колонки по типуuser_id
,username
,password
и т.п.;Products
:product_id
,name
,discount
,stock_quantity
(кол-во товара на складе);Cart
:cart_id
(тут можно использоватьuser_id
),created
(когда корзина создана),updated
(когда корзина была обновлена);cart_products
(товары в корзине):cart_product_id
,cart_id
(user_id
),product_id
,quantity
;orders
:order_id
,user_id
,order_status
,total_price
(общая цена со скидкой);order_products
:order_product_id
(лучше у каждого из них будет свой id),order_id
,product_id
,quantity
,price
.
Что насчет подходов, что ты привел:
- В принципе можно использовать корзину как неоформленный заказ, тогда можно использовать таблицу
cart
для хранения информации о корзине и таблицуcart_products
для хранения товаров в корзине. А уже при оформлении заказа просто меняешь статус корзины и перемещаешь товары в таблицуorder_products
- С другой же стороны, если переносить товары из одной таблицы в другую, то в случае оформления заказа товары(в нашем случае таблицы) из
cart_products
можно скопировать вorder_products
, а после просто очищать корзину/удалять. В общем, если нужно сохранять историю заказов - выбирай второй вариант, если нужно управлять состоянием корзины и заказа в одном месте - первый