我有一个提供电子商务服务的网站,基本上允许业内的卖家将他们的产品出售给客户。卖家选择他们希望销售的产品并设定价格。然后他们就放手了。
以简化的形式,我的数据库中有以下相关表用于存储产品和订单信息:
Product_Info
--------------------
ID (autonumber)
name
...
Order_Head
--------------------
ID (autonumber)
CustomerID
...
Order_Line
--------------------
ID (autonumber)
OrderHeadID
ProductID
...
这对于客户选择任意数量的产品并将其添加到购物车的简化订单非常有用。但是,我现在面临添加卖家创建和管理的“包裹”的问题,其中卖家可以将多个产品组合成一个项目,并以低于单个项目总成本的价格出售。例如,如果橙子售价 15 美元,苹果售价 20 美元,那么包含 2 个橙子和 1 个苹果的包装可能只需 35 美元。
扭曲,以及现在让我受阻的部分是,我非常希望包能够包含其他包。例如,卖家可以制作包含 3 个橙子的“什锦橙子”包装。然后他们可以制作一个“什锦水果”包装,其中包含 2 个苹果和 1 个“什锦橙子”。
当我可以从产品表或包表中引用 ID 时如何在包中列出产品,以及如何在 order_line 表中记录产品,因为 productID 可以指向产品或包装。而且,当然,这需要以一种有效的方式进行设计,这样我们就不会对数据库服务器造成不必要的负担。
我主要是一名网络开发人员,以前在电子商务方面做得不多。任何人都可以提供一些关于一组适当的表和表修改以应用于数据库的方向吗?我不知道为什么,因为它看起来不应该那么复杂,但是这个让我卡住了。
作为参考,我使用的是 MySQL 5.1,连接到 ColdFusion MX 7(即将成为 9)。
编辑:
感谢您到目前为止的回复。我将花一点时间进一步考虑它们。同时,我想澄清订单流程是如何工作的,因为它似乎比我最初假设的更相关。
我的产品与Shutterfly 类似。摄影师张贴照片,客户可以购买照片。摄影师需要工具来设置所有定价,如果是专业拍摄,他们通常会提供套餐。履行由我的产品自动提交订单的实验室完成,但他们不了解定价、包装等。
摄影师还可以选择运行特价商品,为客户提供 x% 折扣或 BOGO 优惠,但我可以单独处理。现在我更关心的是一种有效且简单的方法来存储摄影师定义的包裹、客户购物时为包裹中的每个产品选择的图像(当前存储在 order_line 镜像表中)以及最终的订单详细信息,以便可以快速轻松地查询它们以进行显示和报告。