首页 > 解决方案 > 避免跨多个表重复字段

问题描述

让我简要描述一下表结构:

客户表

id | name | address_line_one | address_line_two | contact_no_one

销售发票表

id | id_Customer (Foreign Key) | invoice_no

如果我必须打印销售发票,我必须使用客户表中的客户信息(如姓名、地址)。假设一年后,一些客户数据发生了变化(如姓名或地址),我更新了客户表中的新数据。现在,如果客户要求旧发票,它将打印新的客户数据,这在法律上是错误的。

这是否意味着,我必须创造

name_customer

address_line_one_customer

...

以及销售发票表中的所有这些字段?

如果是,是否有更好的方法从客户表中的这些字段获取数据到销售发票表,然后编写 SQL 查询来获取值然后设置值?

标签: databasedatabase-design

解决方案


这真的取决于你。在某些情况下,如果它是一份法律文件,您将保存所有详细信息,以便您始终可以按照创建它的方式显示它。或者,如果您正在制作 pdf 发票,则保存它们以 100% 确定。

另一种选择是创建一个 CustomerHistory 表,以便始终使用日期范围保存过去的版本,以便您可以返回旧版本。

这取决于用例,但这些是您的主要选择。


推荐阅读