Mysql 发票表格设计

Mysql 发票表格设计,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,我想知道如何设计发票表 发票包括来自订单表的多个订单 这个发票表设计正确吗 订单 订单号(主键) 用户id(FK) 总成本 订单日期 地位 订购商品 订单\项目\标识(主键) 订单号(FK) 项目名称 成本 发票表 发票编号(主键) 发票号 发票日期 期间\开始\日期 期间\结束\日期 地位 发票\u订单(包含多个订单的发票) 发票\订单\ id(主键) 发票编号(FK) 订单号(FK) 是否需要发票和订单表 我可以在order_表中添加invoice_id(FK)字段。当我在发

我想知道如何设计发票表

发票包括来自
订单
表的多个订单

这个发票表设计正确吗

订单

  • 订单号(主键)
  • 用户id(FK)
  • 总成本
  • 订单日期
  • 地位
订购商品

  • 订单\项目\标识(主键)
  • 订单号(FK)
  • 项目名称
  • 成本
发票表

  • 发票编号(主键)
  • 发票号
  • 发票日期
  • 期间\开始\日期
  • 期间\结束\日期
  • 地位
发票\u订单(包含多个订单的发票)

  • 发票\订单\ id(主键)
  • 发票编号(FK)
  • 订单号(FK)
是否需要发票和订单表


我可以在order_表中添加invoice_id(FK)字段。当我在发票表中添加一行时,“order.invoice\u id”将被更新。

只有在以下情况下,您才需要
invoice\u order
表:

  • 订单可以有一个或多个发票

  • 发票可以链接到一个或多个订单
根据你在问题末尾的建议,情况就是这样。您不应该只拥有
invoice\u id
并在收到新发票时更新它,因为您将失去订单和以前发票之间的链接

更新


顺便说一句,你有
cost
item\u name
的订单项目,这是很好的,初学者往往会觉得奇怪。出于历史原因,您必须拥有这些数据,并且可以使用相同的数据重新打印订单,例如,3年后,当项目名称可能发生轻微更改且成本肯定已更新时。

您只需要
发票\u订单
表,如果:

  • 订单可以有一个或多个发票

  • 发票可以链接到一个或多个订单
根据你在问题末尾的建议,情况就是这样。您不应该只拥有
invoice\u id
并在收到新发票时更新它,因为您将失去订单和以前发票之间的链接

更新


顺便说一句,你有
cost
item\u name
的订单项目,这是很好的,初学者往往会觉得奇怪。出于历史原因,您必须拥有这些数据,以便能够使用相同的数据重新打印订单,例如,3年后,该项目的名称可能发生了轻微更改,并且成本肯定已经更新。

概括!!您应该考虑将其减少到2个表:文档和文档详细信息。只需在文档表中添加DocType字段,即可将订单与发票区分开来。
如果您需要跟踪延期订单,请在DocDetails中添加链接字段。
添加订单明细行时,为链接字段提供表主键(计数器)的值。
添加发票明细行时,为链接指定与相关订单明细相同的值


顺便说一下,在您的表中没有看到任何CustomerId

推广!!您应该考虑将其减少到2个表:文档和文档详细信息。只需在文档表中添加DocType字段,即可将订单与发票区分开来。
如果您需要跟踪延期订单,请在DocDetails中添加链接字段。
添加订单明细行时,为链接字段提供表主键(计数器)的值。
添加发票明细行时,为链接指定与相关订单明细相同的值


顺便说一下,在您的表中没有看到任何CustomerId

大多数发票将有:

  • 客户ID
  • 销售代表ID
  • 付款方式
  • 送货地址
  • 帐单地址
  • 复选框:发货至与账单相同
  • 等等

大多数发票都有:

  • 客户ID
  • 销售代表ID
  • 付款方式
  • 送货地址
  • 帐单地址
  • 复选框:发货至与账单相同
  • 等等

    • 您需要链接表。一张订单可以有多张发票(如果他们没有付款!),一张发票可以包含多张订单。在一个链接表中,虽然我不想麻烦•发票\订单\ id(PK)。PK是两个FK字段的组合。这保证了唯一性,而且由于您不太可能拥有链接表的子表,所以通过向其添加代理键,您实际上什么也得不到。即使在两个索引整型字段上进行连接,性能差异也可能可以忽略。

      您需要链接表。一张订单可以有多张发票(如果他们没有付款!),一张发票可以包含多张订单。在一个链接表中,虽然我不想麻烦•发票\订单\ id(PK)。PK是两个FK字段的组合。这保证了唯一性,而且由于您不太可能拥有链接表的子表,所以通过向其添加代理键,您实际上什么也得不到。即使您在两个索引整型字段上进行连接,但是性能差异可能可以忽略不计。

      我在过去几天看到了太多的
      发票设计问题。
      问题…@ypercube,如果那些该死的讲师只发布一次问题,这将节省时间,代表他们所有的学生。建立这样一个系统供现实世界使用是毫无意义的。我想你的目的纯粹是为了教育。在这种情况下,我建议您决定要实现什么,并为您假设的系统提出一个更好的规范。@dportas您是说为现实世界使用而设计的不好吗?我的问题是如何设计可以链接到一个或多个订单的发票表格。可能重复的问题我在过去几天看到太多的
      发票设计
      问题…@ypercube,如果那些该死的讲师发布