在访问更新联系信息中,同时保留数据库中的旧记录



在Microsoft访问中,我有三个表:订单表,客户表和产品表。我的订单表均涉及客户联系和产品信息。时不时地我需要更新客户地址。这样做时,我只希望新的地址出现在以后的订单上。我不想访问具有最初与该订单的地址的更新以前的订单。我还想在客户列表上维护一个活动和过去地址的列表。请就设置客户表以及如何在订单表上保留客户联系信息的最佳方法建议。

要执行此操作,您需要将客户地址从客户表中取出,并将其保留在单独的CustomerAddress表中。该新表有一个主键(当然),一个返回客户表的外键,您要维护历史记录的所有地址字段以及当前标志(是/否)。然后,您的订单表直接指向客户顾客表,而不是客户表(由于客户添加到客户的fk链接到客户,您可以从订单到客户获得订单)。现在您的乐趣开始了!您必须以这样的方式维护您的客户address表,以使每个客户ID只有一个地址记录,而当前是正确的。

另一种选择是在客户表中没有当前标志,而是在客户表中有一个CurrentAddress字段 - 这确保只有一个地址可以成为客户当前的地址。但是,您不能同时执行CurrentAddress的完整性和CustomerAddress外键 - 您无法在添加地址记录之前设置CurrentAddress的值您可能会有一个虚拟的"未设置" customeraddress记录)。

简单的方法是将当前的客户信息存储在订单中。

扩展方法是将客户表存储为 termalal 表,使用自定义方法或本机AS,例如 - 由 sql Server提供的最新版本提供。查找术语时间数据库以获取更多信息。