postgresql - 为具有多种元素种类的库存控制系统建模

标签 postgresql database-design

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

我们有一家公司用确定的原 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/

相关文章:

mysql - 这些 MySQL 数据库设计(附后)中的哪一个最适合 moSTLy 读取高性能?

postgresql pg_trgm.word_similarity_threshold 递减

java - 如何使用 apache nifi 连接到远程 postgresql

python - 从标准 sqlite 数据库更改为 postgres 数据库

postgresql - 亚马逊极光 PostgreSQL : clone capability: down sides?

database-design - 创建订单时处理引用完整性规则的正确方法

database-design - 如何为 RDBMS 中的多个表实现标记系统?

macos - 如何在 Mac 上安装 postgres 9.4

database-design - Redis 多列范围查询

删除所有单引号和短划线字符后的 SQL 注入(inject)