【问题标题】:how to implement two associations between two tables in mysql如何在mysql中实现两个表之间的两个关联
【发布时间】:2017-03-16 08:46:15
【问题描述】:

让我们假设以下场景:

  • 一个人可以有一个或多个地址:(1..*)。
  • 一个地址与 1 个人相关联:(1..1)。
  • 一个人有家庭地址和工作地址

我们还假设我们有一个双向关联(idk 如何在电源设计器中做到这一点,请原谅下图)

人员表:id(pk),firstName,lastName

地址表:id(pk), streetName,locationNumber,city,country,id_Person(FK)。

我应该在这个结构中添加什么来正确实现我的表的 work@,home@ 关联。

【问题讨论】:

  • 两种明显的情况是可能的:要么我将 isHome,isWork 列添加到地址表,要么我使用两个单独的表,一个存储家庭地址,另一个存储工作地址。我想知道哪个更好,有没有更好的方法来做到这一点?
  • 一个人应该只有一份工作和一个家庭住址,还是可以有,例如,3 个家庭住址和零个工作地址?
  • 一个人每个地址应该有1个或多个:3个家庭地址(代表他以前/现在的所有地址)+至少1个工作地址

标签: java mysql sql uml


【解决方案1】:

使用PersonAddress 的两个外键加上一个标志HomeWork 来实现一个表PersonAdress

【讨论】:

    【解决方案2】:

    我认为您应该选择地址表中的附加 char not null 列: 除非您获得更多信息以在家庭地址或工作地址之间以不同方式存储,否则我看不出有任何理由使用两个单独的表。

    此外,我们正在讨论单选与选择双联接,只是为了检索类型信息。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 2018-02-15
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多