如何在这里避免循环依赖

时间:2016-04-17 17:03:05

标签: sql database database-design database-schema

我有两张桌子;为了简化示例,我们称之为lawnmowerlawn

  • 割草机总是割草坪。
  • 多个割草机可以修剪相同的草坪。
  • 草坪上有一台剪草机负责草坪。
  • 然而,割草机可以同时负责3个草坪 时间。

直观的解决方案:

  • 让割草机参考它正在修剪的草坪
  • 让草坪参考负责任的割草机

这给出了循环依赖。避免这种情况的最佳解决方案是什么?我正在考虑一张responsiblefor桌子,上面有草坪和割草机的外键。然而,这使得多个割草机能够负责相同的草坪,这在以前是不可能的。

1 个答案:

答案 0 :(得分:1)

首先,您需要一个联结表,因为这基本上是一个n-m关系。每张割草机和每个草坪都有一排(我称之为LawnmowerLawns或类似的东西)。

现在处理要点:

  • 对于每个割草机,第一个在此表中需要一行。这可以通过大多数数据库中的触发器来处理。可能还有其他解决方案。
  • 第二个由联结表处理。
  • 第三个是通过在表格中加上一个标志来表示" primary"每个草坪割草机。这可以通过触发器或其他机制来强制执行。
  • 第四个需要一个触发器(一个关系的计数通常需要触发器)。