首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计:如何记录捆绑产品交付情况

数据库设计:如何记录捆绑产品交付情况
EN

Stack Overflow用户
提问于 2014-02-12 03:56:59
回答 1查看 1.6K关注 0票数 0

我在结帐时添加了捆绑功能,用户可以在那里以折扣价格选择自己的自定义包。因此,包中的产品数量是动态的。

我有以下现有的DB模式:

产品(id (PK)、名称、价格等…)。)

事务(id (PK)、金额、日期时间等…)。)

交货(id (PK),transaction_id (FK transaction.id),product_id (FK product.id),折扣等…)。)

假设情境

束A-乘积(1,2)

B包-产品(3,4)

事务具有包A和B。产品(1,2,3,4)是用相同的transaction_id交付的。

在这种情况下,对于当前的DB模式,不可能知道以下内容:

  1. 是作为包裹的一部分交付的产品吗?
  2. 捆绑在一起的其他产品是什么?

在传递表中添加一个BOOL‘bundle’列将标识在事务中交付的哪些产品在一个包中,哪些不是,但是如果一个事务包含多个包,则无法知道哪些产品被捆绑在一起。

可以创建事务特定的包ID。包A (ID 1),捆绑B (ID 2),是事务特有的,并记录在每个捆绑产品交付。不过,这似乎是一种奇怪的做法。这就提出了一个问题:

在所有事务中,包ID是否都是唯一的?如果是这样的话,您是否只是为了创建唯一的包ID而创建一个bundle表呢?

你认为解决这个问题最好的办法是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-02-12 04:43:30

从设计的角度来看,我会考虑产品层次结构。

代码语言:javascript
复制
dbo.ProductHierarchy 
ProductHierarchyID INT (PK), ParentProductID INT (FK), ChildProductID INT (FK)

通过这种方式,您可以将Bundle A添加为产品(父级),并将其作为子产品链接到其包含的产品1和2。

您可以扩展此模式以包含包价格,当将包产品添加到订单/事务中时,可以使用该价格覆盖产品1和2的价格点。还可以包括促销的开始/结束日期,以控制前端出现的内容。

但是,当多个父包包含类似的子产品时,要小心。

例如。客户订单产品1,2,3。包A在产品1+2上。包C在产品1+3上。您让这个客户得到两个包吗?还是只有一个?

另一种选择是提供表,它将成为产品表上的FKey,但最终会使用相同的名称,只使用不同的相应的优惠ids。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21718308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档