如何处理回溯日的库存数量变化

时间:2015-04-18 00:07:23

标签: database-design inventory inventory-management

我的数据库有2个表 1.具有 ID,名称,QOH 属性的库存(即库存数量)

  1. INVENTORY_ADJUSTMENT属性为日期,调整,QOH,注释
  2. 每次出售或购买库存物品时,我都会在INVENTORY_ADJUSTMENT中输入一个条目。此时我还会计算库存并更新INVENTORY和INVENTORY_ADJUSTMENT中的QOH。

    到目前为止,这一切都很好。但现在一些客户有一个要求,他们想要回去一个月并更新手头的数量。所以对于ex:4月10日,用户可以返回并更改3月1日的QOH。如果允许这样做,那么我在3月1日到4月10日之间在INVENTORY_ADJUSTMENT表中做的每个条目也需要更新,因为INVENTORY_ADJUSTMENT的每一行都有QOH字段,现在它将不同步。

    如何支持允许输入过时库存数量的功能?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

问题

首先,您需要了解问题,问题是什么,以及您是否已创建问题。之后我们将有不同的背景,并可以讨论可能的解决方案。

  1. Inventory是一个快速,永久的事实表。这个想法是,在任何时候,如果建筑物冒烟,表格最终确定了公司库存的位置。

  2. InventoryAdjustment表只是针对Inventory表的公司库存的交易。它本可以命名为Transaction

  3. InventoryAdjustment.QoH列是重复列。 QoH中已存在Inventory。创建重复列时,您有:

    • 破坏了规范化规则(因此您有一个众所周知的经典错误,我们被命令避免,并且会产生后果)。您的表格不再标准化,您的数据库不是数据库。

    • 引入了更新异常。这意味着你必须在多个地方更新数据(真值的单一版本的值),否则这两个(或更多)项目会失去同步"。我们的想法是,首先不要创建副本。

    • 如果你已经实现了它以便提供一个总计(连续行中为InventoryAjustment.QoH,),你一直在欺骗自己。在SQL代码中可以轻松提供运行总计(Inventory.QoH以及直到当前行的所有调整)。如果需要,请提出要求。

  4. 现在你已经习惯了这种错误的事态,你不会把它视为一个错误,它已经"工作得很好"到现在。所以你可能很难接受这是一个错误。我会离开那让你克服。

    • 关键词是"到目前为止#34;。传统上,只有在暴露错误或用户想要更改某些内容时,才会出现此类错误。首先,他们需要被暴露并理解它们是什么。

    • 事件刚刚发生,上面已经触发了。

    解决方案

    • 删除InventoryAdjustment.QoH列。

    • 每当插入Inventory.QoH行时,都会保留InventoryAdjustment列的重新计算和更新。

    • 现在Inventory.QoH为真,并且始终为真。它现在反映了仓库中的确切QoH。

    • 否"同步"需要,因为没有两个版本的真相,或一个真相的两个副本,存档。

    故事结束。

    新用户要求

      

    现在有些客户要求他们想要回去一个月并更新手头的数量。如何支持允许输入过时库存数量的功能?

    • 现已更正的数据库处理它就好了。

      • 请注意,由于数据库已更正,因此只有一个QoH。如果没有得到纠正,我们将不得不停下来问:

          

        他们希望更新哪个QoH,正在运行的总数,还是真实的,或者两者兼而有之?   它有什么用途?

    • 该应用需要稍微调整一下。我假设当前函数将InventoryAdjustment.Date设置为插入前的当前日期。

      • 添加一项功能,允许特权用户(例如,已被授权的人员#34;主管"权限,以便允许此情况)到set InventoryAdjustment.Date到有效日期过去,将其限制在(例如)30天或其他任何事情。
    • 当交易执行时,它会以通常的方式调整Inventory.QoH

    故事结束。

    (如果不是,则表明有相关的细节尚未传达。请这样做。)

    创可贴修复

    如果您不理解(a)错误的性质,以及(b)更正的准确性,即。你很乐意保留它,然后......

      

    如果允许这样做,那么我在3月1日到4月10日之间在INVENTORY_ADJUSTMENT表中创建的每个条目都需要更新,因为INVENTORY_ADJUSTMENT的每一行都有QOH字段,现在它将是不同步。

    是。

    这是更新异常的结果。无论如何,调整后的项目的所有重复InventoryAdjustment.QoH值现在都被认为是假的。记录它们没有,也没有任何价值。但你确实记录了它们。现在他们需要更新。

    编码。