定义具有递归关系和空值的规范化SQL数据库模式的问题



我有一个关于Schema的正确实现的问题,我现在很头疼:

我们有机器,它由部件组成,而部件又由零件组成。

然而,关系如下:

  • 机器(1)->部件(N) -一台机器是由各种组件
  • Components (N) -> Parts (N) -组件由多个部件,一个部件可用于多个部件
  • 组件(N) ->组件(N) -组件也可以由其他组件组成
  • 机器(N) ->零件(N) -有些零件也可以直接分配给一台机器

此外,标记为needs_welding=1的零件和组件都将具有与它们相关的价格。这些价格将随时间变化。

我不太确定如何对以下方面进行建模:

  1. 如何将零件直接关联到机床表
  2. 如何为组件之间的父/子关系建模
  3. 如何将价格附加到物品上(有点让我想起DWH中的SCD,但我似乎无法将其拼凑在一起)

对于N->N映射,一个好的解决方案是创建一个特定的映射表。因此,例如,要将组件映射到组成它的部件,您可以创建一个表,名为mapcomponenttoitparts,它有两列,第一列包含组件的ID,第二列包含部件的ID。它们应该是各自表的外键。您可以创建类似于MapComponentToSubComponent或mapmachinetoppart的表。

最新更新