我设计的商店出售定制加工零件。目前我的产品实际上是一揽子产品(选项)。架构看起来像这样:
types
id, name
products
id, type_id, name
optiontypes
id, name
options
id, type_id, name
product_option
id, product_id, option_id
carts
id, session, product_id
cart_option
id, cart_id, option_id
orders
id, name
order_option
id, order_id, option_id
我的问题是我有重复的客户购买了包裹,现在想要购买单件物品进行更换。我在考虑将选项类型合并到类型中,并将选项合并到产品中,但接下来我将如何弄清楚打包产品或单个产品是什么?
在阅读了BOM - 来自pst评论的模块化物料清单后,这就是我想要做的事情:
------------------------------------
ORDER: 1001
package1
module1
component1
component2
module2
component3
component4
component5
------------------------------------
ORDER: 1002
component1
component5
------------------------------------
ORDER: 1003
package2
module1
component1
module2
component3
------------------------------------
我如何才能找到最佳解决方案?
答案 0 :(得分:1)
好的,所以包包含一个或多个部分。客户可以为一个或多个包和/或一个或多个部件放置订单。由于我不知道一个选项可能是什么,我或多或少地将它与* part_type *合并,所以也许你有铝零件类型以及预钻铝部分类型。
您的订单会跟踪订购的包以及订购了哪些部件。如果我理解正确,那么作为包装组件销售的零件或自己销售的零件之间没有实质区别 - 您只需要能够跟踪它的购买方式。设置这样的东西可以让你跟踪它。
packages
id unsigned int(P)
description text // This package contains all the parts you need to build SuperMegaWidget!
packages_parts
id unsigned int(P)
package_id unsigned int(F packages.id)
part_id unsigned int(F parts.id)
part_types
id unsigned int(P)
name varchar(50) // Aluminum, Brass, whatever, etc.
parts
id unsigned int(P)
part_type_id unsigned int(F part_types.id)
name varchar(50) // Widget A, Widget B, etc.
orders
id unsigned int(P)
... lots of other information in here
orders_packages
id unsigned int(P)
order_id unsigned int(F orders.id)
package_id unsigned int(F packages.id)
orders_parts
id unsigned int(P)
order_id unsigned int(F order.id)
part_id unsigned int(F parts.id)