发票数据库设计

时间:2011-02-06 11:15:47

标签: sql-server database-design invoice

发票数据库设计可能看起来像这样...... http://www.databaseanswers.org/data_models/invoices_and_payments/index.htm

现在如果用户决定更改/修改产品代码/描述

它将更改先前的订单和发票生成代码/说明:(

你做什么的?将产品代码说明复制到发票表中?

1 个答案:

答案 0 :(得分:6)

您基本上有两个选择:

  • 要么使Products表“启用时间”(也称为“时态数据库”),例如您将单个产品的“上一个”状态保留在表格中,并为每个条目提供ValidFrom / ValidTo个日期。这样,如果您更改了产品,则会获得一个新条目,而前一个条目保持不变,从使用它的那些发票中引用;只有产品的ValidTo日期更新

或:

  • 您可以将产品(至少是发票所需的位数)复制到发票中 - 这样可以确保您始终知道创建发票时产品的外观 - 但这会导致大量数据重复(不推荐)

将此其他Stackoverflow question on temporal databases视为另一项输入,并查看有关Simple-Talk的文章:Database Design: A Point in Time Architecture