【问题标题】:modelling two one-to-many relationships database relationships in uml在 uml 中建模两个一对多关系数据库关系
【发布时间】:2013-06-07 03:26:32
【问题描述】:

我有一个包含 3 个表的数据库设计,分别称为 A、B 和 C,具有以下一对多关系:

A-<B>-C

A 和 B 都有一个自动递增的 ID 作为主键。

我的问题是,例如,如果我在表 B 中有一条记录,其中包含一个 ID=12 的字段,则无法知道这对应于表 A 或 C 的主键中的哪一个。两个表的主键 ID=12。我认为这是一个粉丝陷阱的例子,但我所做的任何研究都与关系有关,例如:

A-<B-<C

解决方案是重组表格。我不确定这是否会在这里工作。我需要一张位于表 B 和表 A 和 C 之间的表吗?

【问题讨论】:

    标签: database uml modeling


    【解决方案1】:

    您必须向其中一个表添加外键才能建立这种关系。 在您的示例中,您会将表 B 的 PK 添加为表 A、C 中的 FK

    【讨论】:

      【解决方案2】:

      我的问题是,如果我在表 B 中有一条记录,其中有一个字段包含 ID=12,则无法知道这对应于表 A 或 C 的主键中的哪一个。

      您必须在 B 中添加一列,让您知道外键是指向 A 还是指向 C。

      您的另一种选择是在 B 中有两个可为空的外键,一个指向 A,另一个指向 C。

      我怀疑你的表可以再规范化一点,所以你有这样的结构:

                      D
         --------------------------
         |            |           |
         A            B           C
        ---          ---         ---
      

      【讨论】:

      • 谢谢。我想我可能会在 B 中设置一个名为“set_by”的列,并让它取值“A”或“B”,并将其用作外键。
      猜你喜欢
      • 2012-06-16
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多