0

我正在尝试为建筑仓库建立一个数据库(那里存放着建筑材料)。我需要知道所有存储的材料(入库的产品)、所有售出的产品以及所有离开的产品。我正在考虑这样做:


Products--> Deliver <--Depot (many to many) - here I see all the products in.

Depot--> Sell <--Products (many to many) - here I see what I have sold.

And what is left: To make a difference between "Deliver" and "Sell".

这里有什么正确的吗?你有别的想法吗?谢谢您的帮助。

4

1 回答 1

2

处理库存跟踪系统的另一种方法是像复式记账系统一样处理它。这将使您将您的DeliverSell表组合成一个库存Movement表。每个动作将包含两条记录,一条为正数,一条为负数。

以这种方式处理您的库存系统的优势在于,可以很容易地使用聚合查询来获取某个时间点任何仓库的任何产品的库存位置(现有库存)。


编辑:表结构...

PRODUCT
-ID (PK)
-Description
-...

DEPOT
-ID (PK)
-Name
-Location
-...

MOVEMENT
-ID (PK)
-DateTime
-ProductID (FK)
-DepotID (FK)
-Quantity /* Positive=Increase, Negative=Decrease */
-OffsettingMovementID (FK) /* Points to the other half of the entry */
于 2012-05-25T11:03:38.233 回答