gpt4 book ai didi

database-design - 数据库设计中的循环关系

转载 作者:行者123 更新时间:2023-12-01 07:13:51 25 4
gpt4 key购买 nike

我有一个包含 4 个表的数据库(还有更多,但只有 4 个导致了问题)。规则是:一个模型有一对多的任务。一个任务有一对多的集合。一个 SuperSet 有一对多的 Sets,一个 Model 有一对多的 SuperSets。 SuperSet 基本上只是一个集合列表。该设计导致了一个圆形的依赖图,如下所示:

Models <--------------------------- SuperSets
^ ^
| |
| |
Tasks <---------------------------- Sets

我读过这个 http://www.codeproject.com/Articles/38655/Prevent-Circular-References-in-Database-Design ,但我无法摆脱任何表格,第二个示例与我的情况不同。我读过循环关系是不可取的,但我真的看不出有什么办法可以解决这个问题。这甚至是一个问题,如果是,我该如何解决?请帮我!

最佳答案

如前所述,您的模型中没有循环引用。箭头不会绕一圈。

也许你担心Sets可以联系到它的祖 parent Models通过两个不同的 parent 。这是一个合理的问题,可以通过确保 Models 的主键来解决。是其他三个表的主键的一部分。

有了外键,这确保了 Sets 中的每一行只属于一个模型。

所以设计如下:

  • Model表的主键为 ModelId .
  • Tasks表的主键为 ModelId还有别的,说 TaskNumber . ModelId也是 Models 的外键.
  • SuperSets表的主键为 ModelId还有别的,说 SuperSetNumber . ModelId也是 Models 的外键.
  • Sets有一个主键 ModelId , TaskNumber , 和 SuperSetNumber .它的外键是 TasksSuperSets .

  • 在这个设计中因为单列 Sets.ModelId是两个外键的一部分,强制执行数据完整性。

    关于database-design - 数据库设计中的循环关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22521851/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com