2

我正在为库存管理应用程序设计一个数据库,该应用程序将处理物品的库存水平跟踪以及结帐订单的提交和处理。到目前为止,我得到了:一个项目表

  • 商品编号
  • 描述
  • 初始库存水平
  • 其他相关信息

一个订单表

  • 订单编号
  • 订购日期
  • 客户ID

一个 order_detail 表

  • 订单详情 ID
  • 订单编号
  • 商品编号
  • 数量

我正在使用事务表跟踪库存水平,其中每次处理订单或重新补货时,都会在该表中插入一条记录,其中包含事务类型以指示它是输入还是输出事务。交易输入输出

  • 交易编号
  • 商品编号
  • 交易类型(进/出)
  • 数量
  • 个别价格

我的问题是,在处理订单和插入交易之前,我想检查库存水平是否足够,并在插入交易后激活低库存警报(尽管这是不同类型的问题)。因为目前唯一的方法是重新计算当前的库存水平!!如果我的表按计划增长,这将对性能产生可怕的影响。最简单的方法是什么?

4

1 回答 1

4

我会更新项目/产品表以包含一current_stock_level列。将有一个针对该列的检查约束以确保它始终是>= 0.

完成此操作后,您插入订单的交易也需要根据订购的数量减少库存水平。如果有人订购的库存多于可用库存,他们将违反约束并收到错误。

如果您想根据交易验证库存水平,请保留该initial_stock_level列。然后,您可以运行每日/每周/随时流程来验证减去订单总和是否等于当前库存水平。如果这些不同,那么您可以更新当前级别或向某人发出警报以进行调查。

一旦此验证过程(成功)完成,将 更新initial_stock_level到当前级别。还包括一个stock_level_verified日期以指示上次运行的时间。

请注意,如果您的系统持续使用 24x7,您可能会遇到运行此检查过程的并发问题,因为人们可以在您执行此操作时减少库存。您需要考虑如何管理它。

于 2013-05-23T12:41:21.557 回答