首先,我建议在您的应用程序中实施日期维度,因为您似乎将进行大量与时间相关的计算。在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上运行)?我对大型数据库的经验很少......(但是,对于我所知的所有人来说,这可能不算大)。感谢您迄今为止的所有建议,它非常有帮助。 –