在数据库设计/关系中苦苦挣扎

时间:2012-05-25 05:05:11

标签: database-design create-table

我正在尝试为建筑仓库建造一个数据库(那里有存储的建筑材料)。我需要知道所有存储的材料(产品),所有销售的产品以及剩下的所有产品。 我想这样做:


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".

这里有什么正确的吗?你有另一个想法吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分: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 */