Sql server 发票数据库设计

Sql server 发票数据库设计,sql-server,database-design,invoice,Sql Server,Database Design,Invoice,发票数据库设计,可能看起来像这样。。。 现在如果用户决定更改/修订产品代码/说明 它将更改以前的订单和发票生产代码/说明:( 您要做什么?将产品代码描述复制到发票表中?您基本上有两种选择: 您可以将您的产品表设置为“启用时间”(也称为“临时数据库”),例如,您保留“以前的”在表中列出您的单个产品的状态,并为每个条目指定一对日期。这样,如果您更改了产品,您将获得一个新条目,而前一条条目将保持不变,并从使用它的发票中引用;只有产品的有效日期更新 或: 您可以将产品(至少是发票所需的部分)复制

发票数据库设计,可能看起来像这样。。。

现在如果用户决定更改/修订产品代码/说明

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


您要做什么?将产品代码描述复制到发票表中?

您基本上有两种选择:

  • 您可以将您的
    产品
    表设置为“启用时间”(也称为“临时数据库”),例如,您保留“以前的”在表中列出您的单个产品的状态,并为每个条目指定一对日期。这样,如果您更改了产品,您将获得一个新条目,而前一条条目将保持不变,并从使用它的发票中引用;只有产品的
    有效日期更新
或:

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

将此另一项作为另一项输入,并查看这篇关于简单对话的文章:

您基本上有两种选择:

  • 您可以将您的
    产品
    表设置为“启用时间”(也称为“临时数据库”),例如,您保留“以前的”在表中列出您的单个产品的状态,并为每个条目指定一对日期。这样,如果您更改了产品,您将获得一个新条目,而前一条条目将保持不变,并从使用它的发票中引用;只有产品的
    有效日期更新
或:

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

将此另一个作为另一个输入,也可以查看这篇关于简单对话的文章:

我从来没有想到过“临时数据库”这种方式,但我喜欢它!非常感谢!!!@001:temporal-不是临时的:-)我从来没有想到过“临时数据库”这种方式,但我喜欢它!非常感谢@001:暂时性-非暂时性:-)将产品代码/说明与发票一起存储有什么问题?更具体地说,我看到它们存储在
Invoice\u Line\u Items
中,遵循链接指向的设计。重复浪费了资源,也无法跟踪更改的内容。将产品代码/说明与发票一起存储有什么问题?更具体地说,我看到它们存储在
Invoice\u Line\u Items
中,遵循链接指向的设计。重复浪费了资源,也无法跟踪更改的内容。