关于数据库设计的意见/建议 - 仓库库存管理

时间:2012-02-06 11:20:08

标签: sql-server database-design

我目前正在创建一个使用多个仓库(具有子位置)的库存管理系统,因为这是我的第一个大项目,我希望得到一些反馈。

让我告诉你到目前为止我做了什么...... Link as Im still new here

您首先需要创建一个仓库,然后您可以在该仓库中创建一个位置。

您还可以创建ItemType(ItemGroup),然后可以为该组创建一个Item。

一旦你有了一个物品和地点你可以添加股票,Stock表格就有了一个复合键,因此无法添加重复项。我还添加了一个约束,以便您无法在仓库/位置输入错误的ItemType,相同约束的Item。

然后,我需要保留每个库存,SerialisedItems和NonSerialisedItems的记录。示例:如果添加的数量为10的非序列化库存,那么我当前在NonSerialisedItems表(1)中创建10行,这些行设置为“库存中”,并带有相关的库存信息。如果他们更改了库存量,则会删除或添加行(2)。

我也可以使用类似于Warehouse的Van表,但是我认为我必须将Warehouse表更改为类似Storage的两个表,Warehouse和Van?

(1)我目前在我的页面上添加了一个TransactionScope,添加了x行数,这是处理它的最佳方法吗? (2)Stock表中的Quantity数量必须计算该项目的行数,然后每次添加或删除库存时更新数量,这里有任何问题吗? - 两个问题都已修复 - 仅为序列化项目创建行。

还有其他问题吗?

这就是我所做的,如果它的好或可怕让我知道。 此外,如果有任何陷阱,我应该留意,这也很好知道。

由于

[编辑] 感谢Neville K我做了一些改变......

Link to new and improved database

这似乎更有意义!想想昨天我一直盯着它看吧!

1 个答案:

答案 0 :(得分:2)

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

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

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

的内容
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,发票号等)提供审计跟踪。