2010-07-10 61 views
2

我明白我的问题的显而易见的答案是:“它取决于”。因此,我希望你们中的一个(或更多)能帮助我看到常见的方法来处理这个问题......关于随时间推移更新items_for_sale的数据库/架构设计问题

我正在设计一个销售小部件的数据库。随着时间的推移,每件产品的价格将不可避免地发生变化。我的问题是我们应该跟踪这些变化,如果是的话,如何?相关定价表&日期?跟踪价格变化是否很常见,例如,你可以回顾3年后的情况,看看什么时候发生了变化。我可以看到这可能是有价值的,但它是值得的开销?

订单表将捕获销售日期的当前价格。

想法?

谢谢!

回答

1

你的直觉是对的。永远不要失去信息,如果你能帮助它!

创建一个名为像这样的表,使用SQL Server语法:(?或项目)

CREATE TABLE PriceHistory (
PK_PriceHistory int IDENTITY(1,1) PRIMARY KEY, 
FK_Item int, -- foreign key to your item table 
Price money, 
ChangedAt datetime -- captured at the time of change 
) 

可以填充你的价格从触发器表的表,这样,当价格发生变化,你可以自动将旧价格记录到价格历史记录表中。这将允许您查询价格历史记录表以确定历史价格(如果需要的话)。我不是触发器的粉丝,但是这是一个经典的案例...

0

添加到Tahbaza的回答是:

的重要性不只是在跟踪历史的价格,而且在缓解价格未来的变化。如果没有“更改时间”,或者在这种情况下实际上是“有效期”与价格一致,则您必须始终在应用数据库的确切日期更改数据库中的价格。拥有有效的开始日期后,您可以在看到合适的时候输入新价格,并使其在指定日期成为“当前”价格。