2010-07-10 60 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的回答是:

的重要性不只是在跟蹤歷史的價格,而且在緩解價格未來的變化。如果沒有「更改時間」,或者在這種情況下實際上是「有效期」與價格一致,則您必須始終在應用數據庫的確切日期更改數據庫中的價格。擁有有效的開始日期後,您可以在看到合適的時候輸入新價格,並使其在指定日期成爲「當前」價格。