好的,我希望我的解释足以理解我的问题。
我们有一家公司生产一些含有确定原料的产品,该公司也销售这种原材料,但一旦进入公司,他们就必须进行一些分析,以确保这种材料的浓度。好?
因此,我们可以销售某些物品,原材料,该材料制造的产品,该材料的容器(瓶子,盒子,信封)。
由于所有这些类型的项目都有不同的信息(例如,材料具有到期日期,容器支持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)。
我应该重新表述我的问题,还是真的是一个复杂的问题?
答案 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。