更新产品价格会更改所有订单的定价

时间:2011-06-04 00:25:06

标签: database-design ms-access

我正在创建一个数据库,其中特定材料的价格来自一个链接的表格,您可以更新和修改链接到该值的所有记录。

问题在于,当我更新它时,它是通用的,之前以较低/较高价格购买的客户也会被修改。我只是希望能够更新价格而不是改变所有记录,但只能从那一点开始。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

在存储购买信息的表格中,您需要存储他们购买产品的价格。

我通常使用products表作为查找表。这意味着当用户在订单输入屏幕中输入部件号时,我只需使用DLookups(或记录集)将描述,价格和任何其他相关信息输入到我的订单详细信息表中。这允许用户在不影响产品表的情况下更改特定订单上项目的描述或价格。它确实增加了存储容量需求,但我的印象是这是大多数订单输入系统的工作方式。使用您显然使用的设计不可能具有相同的灵活性和数据完整性。

我还会存储有关客户的任何可能在以后更改的信息,以保存历史记录。这种做法当然可以辩论。但是,我发现能够查看以前的订单很方便,例如,当我们向他出售x时,看到特定客户仍然位于他的旧地址。

答案 1 :(得分:0)

根据您提到的业余DBMS,做HK1建议的内容(另外并明确地存储每个订单的适用项目价格)可能是您想要的方式。

这并不构成物品表保存价格的“冗余”,因为该表约为当前价格,订单商品表中记录的价格将约为过去价格。

但请注意,仍存在一种“冗余”,即两个不同的订单商品,即同一商品和同一时刻,必须具有相同的价格值。严格来说,这是您应该执行的约束。

因此,“真正”优雅的解决方案是保留单独的商品价格历史表,如果您想完全重建过去的订单,请将其与过去的订单一起加入,并在日期/时间进行适当的选择