【问题标题】:inventory database with stock level tracking - how to implement stock check before checkout具有库存水平跟踪的库存数据库 - 如何在结账前实施库存检查
【发布时间】:2013-05-18 14:59:57
【问题描述】:

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

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

一个带有

的订单表
  • 订单编号
  • 订单日期
  • 客户编号

一个带有

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

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

  • 交易编号
  • 商品编号
  • 交易类型(输入/输出)
  • 数量
  • 单价

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

【问题讨论】:

    标签: database-design software-design inventory-management


    【解决方案1】:

    我会更新商品/产品表以包含current_stock_level 列。将对该列进行检查约束,以确保它始终为>= 0

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

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

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

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

    【讨论】:

    • 我希望避免实现这一点,我不想依赖保存的当前库存字段,因为如果出现一些差异,即使通过更正过程来修复它也为时已晚.我想依靠单一流程进行库存检查/更新。没有更简单的方法吗?
    • 这取决于您对不超过可用库存的严格程度。数据库检查约束将确保这不会低于 0。您可以对交易进行每日摘要并从中计算增量,而不是依赖当前的库存水平。您需要实施检查以验证人们的订购量没有超出您自己的可用量,但这会增加它无法正确处理同一产品的并发订单的机会。
    • 请记住,无论您采取哪种方法,您都需要某种形式的纠正过程。库存可能被盗、损坏或计数错误,因此数据库中的值可能无法 100% 准确匹配您实际拥有的值。你需要某种形式的调整过程来处理这个问题。
    • 突然想到,我可能会采用您提出的解决方案并处理并发问题,我正在考虑同步访问更新当前股票字段的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    相关资源
    最近更新 更多