【发布时间】:2023-04-09 06:56:01
【问题描述】:
我目前正在创建一个使用多个仓库(带有子位置)的库存管理系统,由于这是我的第一个大项目,我希望得到一些反馈。
让我告诉你我到目前为止做了什么...... Link as Im still new here
您首先需要创建一个仓库,然后您可以在该仓库内创建一个位置。
你也可以创建一个ItemType(ItemGroup),然后你可以为那个组创建一个Item。
一旦有了可以添加 Stock 的 Item 和 Location,Stock 表就有一个复合键,因此无法添加重复项。我还添加了一个约束,这样您就不能输入错误 ItemType 的 Item,与 Warehouses/Location 相同的约束。
然后我需要记录每件库存、SerialisedItems 和 NonSerializedItems。示例:如果添加数量为 10 的非序列化库存,那么我目前在 NonSerialisedItems 表 (1) 中创建 10 行,这些行设置为“有货”以及相关的库存信息。如果他们更改库存数量,则将删除或添加行 (2)。
我也可以在类似于 Warehouse 的某个地方使用 Van 表,但我认为我必须将 Warehouse 表更改为引用两个表 Warehouse 和 Van 的 Storage?
(1) 我的页面上目前有一个 TransactionScope,添加了 x 行,这是最好的处理方法吗? (2) Stock 表中的 Quantity 金额必须计算该项目的行数,然后在每次添加或删除库存时更新 Quantity,这里有什么问题吗? - 两个问题已修复 -仅为序列化项目创建行。
还有其他问题吗?
好吧,这就是我所做的,如果它是好是坏,请告诉我。 此外,如果有任何我应该注意的陷阱,我也很高兴知道。
谢谢
[编辑] 感谢 Neville K,我做了一些改变......
Link to new and improved database
这似乎更有意义!想想我昨天已经盯着它看了很久!
【问题讨论】:
-
(2) 绝对是个坏主意。可能有 大量 数量的项目,例如小螺丝。更糟糕的是,您可能有电缆之类的物品,其数量可能只有小数(310.25m)
-
大量是我担心的,我想我可以根据需要创建它们吗?谢谢我没有想到电缆,如果电缆以米为单位出售,那么我可以将每米作为单独的物品存储,这样它仍然可以工作,还是觉得便宜?
-
电缆也可以分段出售,例如 1/4m。当然,您可以为每厘米或毫米创建一行,但这没有意义。我编写了几个仓库管理系统,我从来没有觉得需要为每件库存创建一行,除非我必须跟踪序列号或类似的东西。
-
序列化商品具有唯一的序列号并被跟踪,这对我来说也很有意义,但客户希望跟踪每个非序列化商品的“销售价值”、“收据号”。我还需要能够将物品放入“拣货批次”以在仓库之间移动。但刚才我想你刚刚让我意识到......无论如何我都会记录销售/采购信息,所以我为什么需要在每件商品上记录这些信息,哈哈。至于临时的“Pick Batch”,我应该扣除 Stock Quantity 并将项目放在 PickBatch 表中,直到项目被移动?谢谢!
-
立即扣除拣货批次的库存数量是 IMO 不是一个好主意。库存项目表中最好有两列,一列为可用库存(在创建领料单时立即扣除这一列),另一列为实际库存(在领料后立即扣除)。跟踪真实(实物)库存情况是仓库管理的一个重要方面。
标签: sql-server database-design