好的,我希望我的解释足以理解我的问题。
我们有一家公司用确定的原 Material 生产一些产品,这家公司也销售这种原 Material ,但一旦它进入公司,他们就必须进行一些分析以确保这种 Material 的浓度。好的?
因此,我们可以销售某些种类的元素、原 Material 、制造该 Material 的产品、该 Material 的容器(瓶子、盒子、信封)。
由于所有这些类型的元素都有如此不同的信息(例如,一种 Material 有有效期,容器支持的最大数量),我们将每种类型分成了几个表格。
然后库存控制在一些表格中被分开,这些表格具有每种静态信息,例如描述,最大剂量等。但是我找不到正确的方法来找到元素的购买,出售,转换在其他产品中甚至可以出售。
我的意思是:
如果我有两个产品表(比方说)
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)。
我应该重新表述我的问题还是它真的是一个复杂的问题?
最佳答案
如果我没理解错的话,我会把它分解成 4 个表:
Item (ItemID, Description, Type)
RawMaterialItem(RawMaterialItemID, maximumDosis, ItemID)
Inventory (id, analysis_report_id, weight, item_id )
Item 表有效地包含所有公共(public)字段,由 RawMaterial 和 ManufacturedMaterial 共享; Material 表特有的列存储在它们自己的表中,并带有 Item 表的外键。 Item 表中的 Type 列是项目类型的指示器 - 在您的示例中,它将是 RawMaterial 或 ManufacturedMaterial。
要获取给定项目的所有数据,您需要查看类型列,然后加入相关表。 这非常难看 - 对于替代方案,请查看 Craig Larman 的书“Applying UML and Patterns”。
这样,您的 Inventory 表仅连接到一个表 - Item。
关于postgresql - 为具有多种元素种类的库存控制系统建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640247/