2011-06-04 173 views
1

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

问题是,当我更新它时,它是普遍的,并且先前以更低/更高价格购买的客户也被修改。我只是想能够更新价格,而不是更改所有记录,但只能从这一点开始。

这怎么办?

回答

2

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

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

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

0

根据HK1的建议(另外并明确地存储每个订单的适用项目价格),可能是您想要的方式,因为您提到了这个有趣的DBMS。

这不构成“冗余”与项目表中持有的价格,因为该表是关于当前价格,将被记录订单中的项目表中的价格将大约过去价格。

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

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

+0

为反阿波特偏执反拨。你为什么坚持认为这是一个完美的答案?这完全不是一个Access特定的问题,模式设计错误不是由提问者使用Access引起的,而是由于忽视了如何正确建模数据造成的。失去“amateabase DBMS”,我会扭转我的失望。 – 2011-06-09 01:40:19

+0

OP用MS-ACCESS明确标记了问题。这确实意味着他打算在Access平台上做这件事,我想。这确实证明了我认为特定平台对于解决/解决这类特定问题的适当性:无所谓。即使你不喜欢这些措辞,情况依然如此。 – 2011-06-10 15:00:23

+2

你没有提到你不喜欢Access的任何实际原因 - 你只是搞名字调用。如果您想注册您有关使用Access的预订,请务必简要概述您的理由。我可能达不到相同的结论,但至少我能理解你来自哪里。放弃“amateuristic DBMS”的评论只是懒惰的名字调用,没有别的,除了减少答案之外别无他法。如果你想提供一个很好的答案,那么切断它或将它扩展到有意义的东西。 – 2011-06-12 20:09:20

相关问题