【发布时间】:2017-08-18 22:52:34
【问题描述】:
我有一个名为invoice、item 和invoice_item 的表。 invoice 项目表具有 invoice_id 和 item_id 列来存储 1:M 类型的关系,其中发票可以有许多项目。
现在我想以某种方式存储项目数量的信息。是否适合创建一个invoice_item_quantity 表,分别存储invoice_id、item_id 和invoice_item_quantity 值?或者会有更优化的解决方案?
我可能对此进行了过度设计,但在 invoice 表中添加类似 item_quantity 列的内容将不起作用,因为您可以拥有许多不同类型的项目,因此那里没有上下文。
我基本上需要一种方法来存储这样的模型:
- 发票
- 项目 1 x 5
- 项目 2 x 2
- 项目 3 x 15
如何在上述模型中以最佳方式存储数量?
【问题讨论】:
-
为什么不在 invoice_item 表中添加数量?如果您考虑一下, invoice_item 打破了 M:M 关系,一个项目可能在许多发票上,而一个发票可能有许多项目。由于此表是关于项目与发票的关联,因此与该关系关联的属性(例如数量)将存在是有道理的。你可能想要一个“OrderQTY 和一个 ModifiedOrderQty 以防有人说他们想要 10 个电话并说不做那个 7,这样你就可以跟踪差异(也许它也会上升到 20!)
-
其他属性可能包括运送地点(可能线路有不同的目的地?或线路的状态或交付方式,或采购供应商,或计划发货日期,或照顾(如果订单发往 1 个地址,但同一行有不同的人)......你明白了。
-
好点 xQbert,既然 Karl 已经给出了答案,我明白你的评论了。
标签: mysql database-design