使用多种项目建模库存控制系统

时间:2011-10-03 20:23:05

标签: postgresql database-design

好的,我希望我的解释足以理解我的问题。

我们有一家公司生产一些含有确定原料的产品,该公司也销售这种原材料,但一旦进入公司,他们就必须进行一些分析,以确保这种材料的浓度。好?

因此,我们可以销售某些物品,原材料,该材料制造的产品,该材料的容器(瓶子,盒子,信封)。

由于所有这些类型的项目都有不同的信息(例如,材料具有到期日期,容器支持max ammount),我们已将其拆分为每种类型的几个表。

然后在一些表格中分离了库存控制,这些表格包含每种类型的静态信息,例如描述,最大剂量等。但是当我购买,出售,转换时找不到正确的方法在其他产品甚至可供销售。

我的意思是:

如果我有两张桌子(比如说)用于产品

raw material ( id, description, maximum dosis)
manufactured material ( id, description, )

还有一个处理库存的表

Inventory (id, analysis_report_id, weight, item_id ( referenced by which of those 2 tables? ) 

我是否必须为每个表使用一个字段并查找填充的字段,然后在搜索库存中的商品时加入每个产品种类表?

如果它仍然模糊不清,我可以更深入地了解

(我正在使用postgreSQL BTW)。

我应该重新表述我的问题,还是真的是一个复杂的问题?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我会将其分为4个表格:

Item (ItemID, Description, Type)
RawMaterialItem(RawMaterialItemID, maximumDosis, ItemID)

Inventory (id, analysis_report_id, weight, item_id )

Item表有效地包含RawMaterial和ManufacturedMaterial共享的所有公共字段; Material表独有的列存储在它们自己的表中,并带有Item表的外键。 Item表中的Type列是项类型的指示符 - 在您的示例中,它可以是RawMaterial或ManufacturedMaterial。

要获取给定项目的所有数据,您需要查看类型列,然后加入相关表格。 这非常难看 - 对于替代方案,请看Craig Larman的书“应用UML和模式”。

这样,您的Inventory表只连接到一个表 - Item。