【问题标题】:Inventory Management Table Structure库存管理表结构
【发布时间】:2013-01-07 16:49:03
【问题描述】:

我们的团队需要为内部创建的 ERP 系统跟踪库存。我们将需要经常访问给定仓库中给定项目的系统中的库存量,并能够跟踪库存的变化和时间。

最初的想法是只拥有调整表并在每次查看时计算当前库存。通过我们的测试,很明显,考虑到我们每天要进行多少次计算,这种计算的成本太高了。

我们的新想法是创建一个包含历史记录的调整表,同时保留一个包含当前库存的表。当进行调整时,我们的程序将同时更新调整表和当前库存表。我不太喜欢这个解决方案,因为它需要 2 次更新才能进行一次更改。万一失败了怎么办?当调整不反映库存表中的内容时,您如何进行核对?

有人有更好的方法吗?

【问题讨论】:

  • 我建议在事务中进行更新,因此如果一个更新成功而另一个失败,则两者都将被回滚。
  • 你也可以在插入一个表时使用触发器,然后在当前表中的更新将在历史记录中插入
  • 由于程序设计的原因,我无法将它们都包含在事务中。您一次只能更新一张表(我知道这是愚蠢的设计......我正在努力改变它,但这需要一段时间)。

标签: sql transactional erp inventory-management


【解决方案1】:

如果您无法在单个事务中完成所有必要的更新,则需要一个管理程序(而不是声明性约束)来确保数据正确。例如,您可以运行一个 cron 作业,根据详细信息测试总计。您执行此操作的频率取决于 cron 作业需要运行多长时间,以及您的应用程序可以容忍的 cron 作业多长时间。

我更喜欢详细信息表上的触发器加上定期 cron 作业。让触发器调整每笔交易的总数。 cron 作业确保没有错过任何更新。 (大多数 dbms 允许您禁用触发器以进行维护;当您不可避免地忘记再次启用它们时,cron 作业会提醒您。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 2021-11-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多