2013-06-01 92 views
0

標題時可以忽略的變化對產品的描述是有些難以理解,所以這裏的解釋是:檢索訂單記錄

我建立一個系統,與零售交易的交易。含義 - 購買。我有一個產品數據庫,每個產品都有一個ID,這也是POS系統所知道的。當顧客進行購買時,數據被髮送到後端進行解析,並被保存。現在一切都很好,很花哨,直到產品名稱發生變化,因爲我的客戶希望看到產品的名稱,因爲它是當時購買的。

如何保存這些數據,同時保留一個漂亮的,正常形成的數據庫?

解決方案我能想到的是:

  • 反規範化,我們在數據庫中,我們有相關的信息輸入數據,然後只保存最後文本值,而不是ID的。
  • 版本控制,我們保留每個產品的多個版本,並保存與產品版本號相同的交易。這個問題是,隨着零售連鎖店的增長,還有更多產品發生更多變化,整個產品的複雜度將大大增加。

對此有何看法?

回答

1

這被稱爲緩慢變化的維度。

您提到的任一解決方案都適用。我的首選是第二個版本。我將有一個產品表,其中包含effdateenddate。您可以在任何時間點輕鬆找到當前記錄(where enddate is null)或記錄。

第一種方法總是讓我覺得更「快速和骯髒」,但它也起作用。當你有更多的字段和更多的對象時,它會變得很麻煩。一般來說,它確實贏得了表演。

+0

接受,因爲給了我要搜索的名字。謝謝! –

0

如果名稱必須與原來的名稱一致,那麼最簡單,最可靠的方法就是將產品名稱保存在發票行項目記錄中。

當然,您仍然應該用ProductID鏈接到產品。

如果你想保留的名稱更改的歷史記錄,你可以,如果你想這樣做,在一個單獨的表:

ProductNameID 
ProductID 
Date 
Description 

而且存儲與發票行項目一ProductNameID。