为什么订单-产品关系是多对多的?

use*_*911 2 database many-to-many

在数据库设计中,一个订单可以有多个产品,这是没有问题的。但是一个产品总是只能在一个订单中,不是吗?例如,如何将同一部 iPhone 放在两个不同的订单中?

我认为应该是一对多的关系,而不是多对多的关系。逻辑有什么问题?

abh*_*tia 8

假设您是一家电子商务公司,并且有 70000 部 iPhone 的库存。

根据您建议的设计,在您的“产品”数据库表中,您将存储 70000 行(每个 iPhone 1 行)。这样每个“订单”将引用一个唯一的 iPhone。你看到你的数据库会有多快的数据爆炸。

您应该做的是将 iPhone 的一般特征(名称、价格、品牌等)存储在表的 1 行中,并使用名为“库存”的列跟踪库存计数

如下所示(请注意,您可以进一步改进下面的设计,但这足以理解此处的多对多逻辑)

Product
-------------
id | name   | brand | price | inventory
1  | IPhone | Apple | 600   | 70000
Run Code Online (Sandbox Code Playgroud)

现在,对于每个包含 iPhone 的订单,订单将引用产品表的同一行。因此,1 个产品将有多个订单。

如果您需要更多说明,请告诉我。干杯!