0

下面给出了三种进出仓库的交易

1-pick list 2-return list 3-DA list

DA 清单包含库存管理员从经销商处购买多少库存的信息(进货)
挑选清单是他提供给不同销售人员进行销售(出库)的库存退货清单是那些不是销售人员销售的库存,他返回它给库存管理员(进货)

库存管理员希望这些查询必须启用

1-可以按日期、销售人员查看以前的各种清单(PL RL DA 清单) 2-仓库中有多少库存

表格在下面

sku(id, name, type, category)
batch(sku_id, batch, price , date)
salesman(id, name)
transaction_type(type_id, transaction_name)
transaction_header(list_id , salesman_id, route )
transaction_detail(list_id, sku_id , Qty)

列表 id 主键包含前缀,如 da-34244 pl-453 rs-3432,基于它识别哪种类型的列表是

所以问题是如何更新这个仓库表

warehouse(sku_id, qty , typeofsku)

我想的可能性可能是

当用户输入列表时,他会在表单上给他一个按钮,这是列表,当用户按下此按钮时,首先在 transaction_detail 中输入详细信息,然后从该表中选择数量并根据列表类型添加或减去从仓库中获取数量然后更新仓库。

是否还有其他有效且良好的方法,请建议并提供详细信息。

4

1 回答 1

1

首先,每个表都应该有一个盲主键或集群键。盲密钥是与底层数据无关的密钥。盲键通常是自动递增的整数或长整数,或其他一些唯一 ID。

列表 ID 是一个主键,它包含一个前缀,例如 da-34244 pl-453 rs-3432,用于标识它是什么类型的列表。

您永远不应该在数据库列中有这样的组合字段。您应该将该字段分解为列表代码(da、pl、rs)和一个数字。您在生成输出时组合这些字段,以便用户看到他们熟悉的列表 ID。我假设这些数字只是递增整数。将列表类型与数据库中的列表编号分开可以更轻松地跟踪使用的编号。

按日期、按销售人员查询以前的各种列表(PL RS DA 列表)

您不会在任何表中存储时间戳,因此无法按日期查询。另外,您需要决定列表类型是在数据库中存储为大写还是小写。您已经使用了小写和大写的列表类型。

查询仓库有多少库存

您最后提到了一个仓库表,其中包含您需要的数量值。

交易

编辑添加:有时,您必须执行多个 SQL 语句才能完成事务。

您有一个交易抬头表、一个交易明细表和一个仓库表。

假设交易明细表来自退货清单,这意味着我们将库存数量添加回仓库表。

您的程序必须执行以下 SQL 步骤

  • 将信息插入事务标题行。
  • 对于退货列表中的每个 sku:
    • 将信息插入交易明细行。
    • 选择具有相同 sku_id 的仓库行。
    • 将交易明细行的数量添加到仓库行的数量。如果这是一个拣货清单,您将从仓库行的数量中减去交易明细行的数量。
    • 更新仓库行上的数量。
  • 提交数据库更改。

上述所有步骤都成功发生,或者上述步骤都没有成功发生。这就是所谓的交易。这就是您提交(或回滚)对数据库的更改的原因。

交易的同步是保持您的库存数量正确的原因。想象一下,如果将交易明细行写入数据库,但仓库数量没有更新,在真实仓库中会发生什么情况。

是的,您必须完成上述所有步骤。没有捷径可走。

于 2013-03-07T14:46:37.113 回答