在Microsoft Access中,我有三个表:订单表,客户表和产品表。我的订单表中包含客户联系人和产品信息。我不时需要更新客户地址。这样做时,我只希望新的地址出现在未来的订单上。我不希望Access使用最初不属于该订单的地址更新以前的订单。我还想维护客户列表中的活动地址和过去地址列表。请提供建立客户表的最佳方法以及如何在订单表上保留客户联系信息。在访问更新联系人信息时保留旧数据库中的记录
0
A
回答
3
为此,您需要将客户地址从客户表中取出并保存在单独的CustomerAddress表中。这个新表有一个主键(当然),一个返回到客户表的外键,所有你想保持历史的地址字段和一个当前标志(是/否)。您的订单表然后直接指向CustomerAddress表格而不是Customer表格(由于CustomerAddress到Customer中的FK链接,您可以从Order到Customer)。现在你的乐趣开始了!您必须以这样的方式维护您的CustomerAddress表:对于每个客户ID,您应该只有一个地址记录,其中Current为True。
另一种选择是在CustomerAddress表中没有Current标志,而是在Customer表中有一个CurrentAddress字段 - 这可以确保只有一个Address可以成为Customer的当前标志。但是,您无法强制执行CurrentAddress完整性和CustomerAddress外键 - 在添加Address记录之前,您无法设置CurrentAddress的值,因此Customer记录必须能够以NULL CurrentAddress存在(尽管我想你可以有一个虚拟的“未设置”CustomerAddress记录)。
1
简单的方法是将当前客户信息与订单一起存储。
扩展方法是将客户表(一个或多个)存储为颞表,或者使用自定义的方法或天然的 - 例如 - 通过SQL服务器的最新版本提供。查找术语时间数据库了解更多信息。
相关问题
- 1. 捕获数据库中联系人信息的历史记录
- 2. Android中的联系人更新信息
- 3. MYSQL - 更新但保留旧信息
- 4. 访问2010年从旧数据库更新记录到新数据库
- 5. 如何更新数据库记录并仍然保留MySQL中的旧值?
- 6. 使用数据库中的新记录详细信息查找最旧记录
- 7. 更新联系人详细信息android
- 8. 如何在更新asp时保留旧的数据记录mvc 5
- 9. 访问联系人数据
- 10. 更新记录并保留mysql中的先前记录数据
- 11. 从数据库中保存的联系人更新Listview的问题android
- 12. Android如何更新,但保留数据库信息
- 13. 替换sql数据库,但保留旧的记录
- 14. Python的电报机器人:访问联系人信息
- 15. Mysql更新但保留旧数据?
- 16. 如何从数据库中读取联系人信息
- 17. iOS - 在更新到新版本时保留旧的sqlite数据库
- 18. 如何只在ListView中查看联系人的详细信息并保留未经检查的联系人?
- 19. 更新信息时插入新记录?
- 20. 是否可以访问iPhone中的联系人信息屏幕?
- 21. 在Mysql数据库中保留时区信息
- 22. 如何在更新android数据库时保留旧的日期和时间?
- 23. 如何在android中更新联系人信息?
- 24. 如何在Mllib中工作时保留记录信息
- 25. 的Android访问联系人数据
- 26. 当新信息应该在上面时,数据仍旧保留在旧视图中 - Swift
- 27. 只获取联系人数据库中存在其生日的联系人的详细信息
- 28. 问题添加联系人信息
- 29. 使用ajax发送联系人详细信息到数据库
- 30. 访问Django中最旧的数据库记录的更快方法?
我会选择@Skippy提出的第一个建议。只需进行一次更改,请勿使用当前标志(是/否),而是使用日期范围(有效日期和有效日期字段)。原因可能是客户提前向您发送地址更改。 – Rene