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

时间:2014-05-20 16:29:34

标签: database schema normalization scd

我有一个关于正在实施我正在破坏的架构的正确实施的问题:

我们有机器,由组件组成,由部件组成。

然而,关系如下:

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

此外,标记为needs_welding = 1的零件和组件都将具有与之关联的价格。这些价格会随着时间而变化。

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

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

1 个答案:

答案 0 :(得分:1)

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