【发布时间】:2014-03-10 05:02:59
【问题描述】:
我将捆绑功能添加到结帐中,用户可以在其中以折扣价选择自己的自定义产品捆绑包。因此,捆绑中的产品数量是动态的。
我有以下现有的数据库架构:
产品(ID (PK)、名称、价格等……)
交易(id (PK)、金额、日期时间等……)
Delivery(id(PK),transaction_id(FK transaction.id),product_id(FK product.id),折扣等......)
假设情况
Bundle A - 产品 (1,2)
Bundle B - 产品 (3,4)
一笔交易同时包含捆绑包 A 和 B。产品 (1,2,3,4) 使用相同的 transaction_id 交付。
在这种情况下,使用当前的数据库架构无法知道以下内容:
1. 产品是否作为捆绑包的一部分交付
2. 捆绑了哪些其他产品
在交付表中添加一个 BOOL 'bundle' 列将识别交易中交付的哪些产品是捆绑的,哪些不是,但如果交易包含多个捆绑,则无法知道哪些产品捆绑在一起。
可以创建特定于交易的捆绑 ID。 Bundle A (ID 1)、Bundle B (ID 2) 对交易是唯一的,并针对交付的每个捆绑产品进行记录。不过,这似乎是一种奇怪的做法。这就提出了一个问题:
捆绑 ID 在所有交易中都应该是唯一的吗?如果是这样,您是否只是为了创建唯一的捆绑 ID 而创建一个捆绑表?
你认为解决这个问题最好的方法是什么?
【问题讨论】:
标签: php mysql sql database-design database-schema