我想知道如何设计发票表。
发票包含来自order
表的多个订单。
此发票表是否设计正确?
顺序
order_item
发票表
invoice_order (包含多个订单的发票)
invoice_order表是否必要?
我可以在order_table中添加invoice_id(FK)字段。当我在发票表中添加一行时,“订单.trind_id”将会更新。
答案 0 :(得分:3)
如果出现以下情况,您只需要invoice_order
表格。
和
根据您在问题末尾的建议,就是这种情况。您不应该只有invoice_id
并在新发票进入时更新它,因为您将丢失订单与之前发票之间的链接。
<强>更新强>
顺便说一句,你在订单项中有cost
和item_name
是件好事,这是初学者往往会发现奇怪的东西。您必须出于历史原因而拥有这些数据,并且可以使用相同的数据重新打印订单,例如,3年后,当项目的名称稍有变化且成本肯定已更新时。
答案 1 :(得分:1)
大多数发票都有:
答案 2 :(得分:1)
您需要链接表。订单可以是多个发票(如果他们没有付款!),发票可以包含许多订单。在链接表中虽然我不打扰•invoice_order_id(PK)。 PK是两个FK字段的组合。这保证了唯一性,因为你不太可能有链接表的子表,所以通过添加代理键实际上没有任何好处。即使你在连接两个索引的int字段之间做了性能差异,也可以忽略不计。
答案 3 :(得分:-1)
概括!!您应该考虑将其减少到2个表:Documents和DocDetails。只需在“文档”表中添加DocType字段,即可将订单与发票区分开来 如果您需要跟踪延期交货,请在您的DocDetails中添加一个链接字段 添加订单明细行时,请在“链接”字段中输入表PK(计数器)的值 添加发票明细行时,请为链接指定与相关订单明细相同的值。
顺便说一下,你的桌子上没有看到任何CustomerId!