4

所以我们有关于产品类别、产品和变体的基本表格

类别
id | name | active | parent_id

产品
id | name | price | active

c_p_link
category_id | product_id

变种
id | product_id | price | price_override | active | stock

效果很好。

但我有两个疑问。

首先是如何构建订单。

我们有一个订单
id | customer_id | ordered | status

我们还有一个order_products
id | order_id ..?

这是我很好奇的一个。假设客户订购了 30 件产品。我们要不要

  • 添加 30 行,并在每行添加每个单独项目的价格。
  • 添加一行,将合并的总数添加到该行
  • 添加一行,将单个价格添加到该行

下一部分是,稍后我们希望将凭证支持添加到购物车。例如 10% 的折扣,买两个,送一个等等。我现在不太在意这个的整体设计(这至少是几个月的折扣)。但我想知道这是否会影响我应该选择哪个版本的order_products表?

4

2 回答 2

2

免责声明:我从未编写过处理“购物车”或“订单”的数据库模型


我认为购买时的价格应该编码到购买数据中:就像商店的纸质收据一样。我们称它为total_price代表收据上每个逐项列出的“行”,不应与total_purchase_price.

也就是说,收取的金额是固定的。以后产品价格是否发生变化并不重要,价格的变化不应反映在[要]支付的金额上。

因此,我将拥有这些字段:product, unit_price, quantity, total_price. 如果需要,可以轻松添加一个计算列,例如base_total_price( )。unit_price * quantity

现在,这total_price可能是基于 saybase_total_price * precent_discount字段的计算值:但是,无论它最终是什么,我认为它total_price应该存在并且应该在购买时修复。(这意味着,如果它是计算列,则所有输入在购买时也是固定的。)

附录:如上所述,我以前从未设计过这样的模型,但我在商店观察到的一件事是折扣被用作负成本逐项项目。也就是说,商品是“以全价”购买的,然后收银机添加一个条目以抵消发生的任何促销活动的成本。我不知道这种方法的优点/原因。

于 2012-11-12T04:32:42.167 回答
0

只需将产品数量添加到您的 order_products 表中即可:)

我更喜欢第三种解决方案,我认为它最适合您的数据库性能..

于 2012-11-12T04:11:00.733 回答