1

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

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

它将更改以前的订单和发票生成代码/描述:(

你做什么工作?将产品代码描述复制到发票表中?

4

1 回答 1

6

你基本上有两个选择:

  • 要么你让你的Products表“启用时间”(也称为“时态数据库”),例如你在你的表中保持你的单个产品的“先前”状态,并且你给每个条目一ValidFrom / ValidTo对日期。这样,如果您更改产品,您将获得一个新条目,而前一个条目保持不变,从使用它的那些发票中引用;仅ValidTo更新产品的日期

或者:

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

请参阅有关时态数据库的另一个 Stackoverflow 问题作为另一个输入,并查看有关 Simple-Talk 的这篇文章:数据库设计:时间点架构

于 2011-02-06T11:20:24.957 回答