首先,我建議在您的應用程序中實施日期維度,因爲您似乎將進行大量與時間相關的計算。在Google上搜索日期維度,因爲它超出了問題的範圍。也就是說,我相信這會對你的應用程序實現和使用日期維度有很大的好處。
至於你直接的問題去:
What is the best way of tracking changes? In addition to my Products table, should I create another table called HistoricProductQuantities, and insert a new record each time there is a change in the quantity?
是的,你可以做到這一點,我可能會稱之爲HistoricProductSnapshot和跟蹤產品活動的在那裏每天的基礎。有了這些信息以及時間維度,您可以進行計算,例如「產品X的數量有五天前或一個月前等。」等等。
What number should I track? The historic stock quantity (i.e. 50 in stock on this day, 24 in stock on that day), or the CHANGE in stock quantity i.e. -5 (5 sold) or 15 (15 added to inventory)? Or do I track both in separate tables?
我沒有經驗寫的庫存控制軟件,但我相信,我在問題中提到的快照表上面,你將只需要跟蹤每天的數量。然後可以從您的快照表中計算產品數量的變化。例如,您可以使用一個函數,將數組中的產品數量作爲一個給定的時間範圍輸出。示例:從3月1日到3月7日,這些是產品Y [45,40,39,27,22,45,44]
的庫存量。
希望有所幫助。正如我所說我不是產品庫存的人,但我已經與銷售點系統合作,上面的程序應該能夠爲您正在嘗試做的事情提供足夠的啓動。
來源
2015-10-06 18:08:41
rii
即使沒有變化,每天記錄數量是否有效率低下?例如,如果我有3000種產品,並且每天都在追蹤數量,那麼每年的數據庫記錄就超過100萬次......這不是很多嗎? –
當然,這是很多數據......但是你想保留還是不保存?這就是問題所在。每日快照將是收集您的廣告資源的最標準化方式。理論上,如果數據沒有變化,並且在執行計算時考慮到這些數據,則不會保存數據,但我認爲這不是正確的方法。這就像谷歌說的:「我們沒有爲您的網站保存今日的網頁訪問者,因爲您沒有收到任何信息」。再次,我沒有庫存管理或分析方面的培訓,但是如果您需要歷史數據,這可能是最佳選擇。 – rii
好的,謝謝你。從數據庫的角度來看,一個小應用程序正常有幾百萬條記錄?我應該擔心性能問題(在heroku上運行)?我對大型數據庫的經驗很少......(但是,對於我所知的所有人來說,這可能不算大)。感謝您迄今爲止的所有建議,它非常有幫助。 –