【问题标题】:Database/Schema design question regarding updates to items_for_sale over time关于 items_for_sale 随时间更新的数据库/架构设计问题
【发布时间】:2011-03-14 03:17:28
【问题描述】:
我明白我的问题的明显答案是:“这取决于”。有了这个,我希望你们中的一个(或多个)能帮助我了解解决这个问题的常用方法......
我正在设计一个出售小部件的数据库。随着时间的推移,每件商品的价格将不可避免地发生变化。我的问题是我们是否应该跟踪这些变化,如果是,如何跟踪?相关的定价和日期表?跟踪价格变化是否很常见,这样你就可以回顾 3 年后的情况,看看发生了什么变化以及何时发生变化。我可以看到这可能很有价值,但是否值得开销?
orders 表将捕获销售日期的当前价格。
想法?
谢谢!
【问题讨论】:
标签:
database
database-design
schema
【解决方案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
)
您可以从价格(或商品?)表上的触发器填充该表,以便在价格更改时自动将旧价格记录到价格历史表中。这将允许您查询价格历史表以确定历史价格(如果需要)。我不喜欢触发器,但这是一个经典案例......
【解决方案2】:
添加到 Tahbaza 的答案:
重要性不仅在于跟踪历史价格,还在于缓解未来的价格变化。如果没有“更改日期”,或者在这种情况下实际上没有“有效期”日期来配合价格,您将始终必须在应用价格的确切日期更改数据库中的价格。有了有效的起始日期,您可以在您认为合适的时候输入新价格,并将它们变成您指定日期的“当前”价格。