我正在为库存管理应用程序设计一个数据库,该应用程序将处理物品的库存水平跟踪以及结帐订单的提交和处理。 到目前为止,我得到了: 物品表
带有
的订单表带有
的order_detail表我使用交易表跟踪库存水平,每次处理订单或库存被重新处理时,会在该表中插入一条记录,其中包含交易类型,以指示它是进出交易。 transactions_in_out
我的问题是,在处理订单并插入一个out事务之前,我想检查库存水平是否足够,并在插入事务后激活低库存警报(尽管这是一个不同类型的问题)。因为它是唯一的方法是重新计算当前的库存水平!!如果我的桌子按计划增长,这将对性能产生可怕的影响。最简单的方法是什么?
答案 0 :(得分:3)
我会更新商品/产品表以包含current_stock_level
列。对此列存在检查约束,以确保它始终为>= 0
。
完成此操作后,您插入订单的交易将需要根据订购数量减少库存水平。如果有人订购的库存超过可用库存,他们将违反约束并收到错误。
如果要根据交易验证库存水平,请保留initial_stock_level
列。然后,您可以运行每日/每周/每当进程以验证此减去订单总数等于当前库存水平。如果这些不同,那么您可以更新当前级别或向某人发出警报以进行调查。
完成此验证过程(成功)后,将initial_stock_level
更新为当前级别。还包括stock_level_verified
日期,以指示上次运行此日期。
请注意,如果您的系统一直使用24x7,则可能会遇到运行此检查过程的并发问题,因为人们可以在执行此操作时减少库存。你需要考虑如何管理它。