use*_*911 2 database many-to-many
在数据库设计中,一个订单可以有多个产品,这是没有问题的。但是一个产品总是只能在一个订单中,不是吗?例如,如何将同一部 iPhone 放在两个不同的订单中?
我认为应该是一对多的关系,而不是多对多的关系。逻辑有什么问题?
假设您是一家电子商务公司,并且有 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 个产品将有多个订单。
如果您需要更多说明,请告诉我。干杯!