database - 避免跨多个表重复字段
问题描述
让我简要描述一下表结构:
客户表
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 查询来获取值然后设置值?
解决方案
这真的取决于你。在某些情况下,如果它是一份法律文件,您将保存所有详细信息,以便您始终可以按照创建它的方式显示它。或者,如果您正在制作 pdf 发票,则保存它们以 100% 确定。
另一种选择是创建一个 CustomerHistory 表,以便始终使用日期范围保存过去的版本,以便您可以返回旧版本。
这取决于用例,但这些是您的主要选择。