【问题标题】:Comments/Suggestions on database design - Warehouse Stock Management对数据库设计的意见/建议 - 仓库库存管理
【发布时间】: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


【解决方案1】:

首先,这几乎是一个已解决的问题——我所知道的最好的资源是“data model resource book”系列;那里有一个非常灵活的库存维护应用程序模型。

其次,您的设计不是很规范,并且依赖于大量重复。不确定原因是什么,但通常,“库存”表会链接到“项目”,而不是“项目类型” - 项目属于项目类型的事实已经在项目和项目之间的关系中捕获类型,你不需要复制它。位置和仓库也是如此。

我建议的关键更改是股票交易的概念,而不是单个“股票”表。

类似的东西

TransactionID      date    itemID  locationID  quantity 
------------------------------------------------------------------
1                1/1/12        1            1       10
2                1/2/12        1            1       -1
3                1/3/12        1            1       20

要找出某件商品的当前库存,您可以逐项求和(数量);要查找按位置细分的项目的当前库存,请按项目、位置求和(数量)组。

1 月 1 日,库存有 10 件;在第二个,1 项目被删除,留下 9 个库存; 3日新入库20件,剩余29件。

这种设计允许您跟踪随时间的变化,这是一个常见的要求;它还通过创建交易元数据(operatorID、发票号等)来提供审计跟踪。

【讨论】:

  • 听起来不错,我也在整理审计线索!我从 Stock 链接到 ItemType 的原因是,通过使用复合键在 Stock 表中不会有重复项,我认为它必须被链接,但你是说我应该只使用 Items 中的 TypeId?我也去看看书,谢谢。
  • 如果你有一个物品“sock”,它的类型是“clothing”,你想记录你有5个socks的库存。袜子是“服装”类型的一部分这一事实与库存数量无关,因此您不想将其记录在“库存”表中。要了解您有多少件衣服的库存,您可以将库存与商品连接到 itemtype 表中。
  • 是的,这是有道理的!我已根据您的建议更改了数据库,请告诉我您的想法……(目前不使用股票交易,而是使用婴儿步骤)
猜你喜欢
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多