在库存控制系统中,数据库中记录以下实体(当然这过于简化了):
哪个是最好的策略以及原因:
item.current_qty = sum(item.input_movements.qty) - sum(item.output_movements.qty
(这不是特定的语言,只是伪代码)考虑到,作为库存控制系统,每个项目的当前数量都会被大量使用。
注意:这个问题与this other类似,但是这个问题特别是关于可以聚合的数据。
选项 B(计算)是标准化选项。
我在为客户制作的 ERP 中就是这样做的,使用 Access 作为前端,SQL Server 作为后端。迄今为止,已有大约 250.000 次动作,而且仍然很快。
我认为这有点取决于您的卷以及您使用的数据库引擎。例如,如果是 Access,则没有触发器,我不会依赖前端逻辑。在 SQL Server 上,您可以非规范化并在每次移动时重新计算现有数量,并最终在出现问题时重新计算。
对我来说最好的方法:参见艾伦·布朗对问题的精彩分析这里。