如何在这里避免循环依赖
How to avoid circular dependency here
我有两个table;为了简化示例,我们称它们为 lawnmower
和 lawn
.
- 割草机一直在修剪草坪。
- 多台剪草机可以修剪同一个草坪。
- 一块草坪有一台负责该草坪的割草机。
- 一台割草机可以同时负责3片草坪
时间。
直观的解决方案:
- 让割草机参考它正在割草的草坪
- 让草坪参考负责任的割草机
这给出了循环依赖。避免这种情况的最佳解决方案是什么?我目前正在考虑 responsiblefor
table 带有草坪和割草机的外键。然而,这使得多个割草机可以负责同一个草坪,这在以前是不可能的。
首先,您需要一个交汇点 table,因为这基本上是一个 n-m 关系。这 table 每个割草机和每个草坪都会有一行(我会称之为 LawnmowerLawns
或类似的东西)。
现在处理要点:
- 第一个需要在这个 table 中为每个割草机排成一行。这可以在大多数数据库中使用触发器来处理。可能还有其他解决方案。
- 第二个由联结点处理 table。
- 第三个是通过在 table 中有一个标志来表示每个草坪的 "primary" 割草机来处理的。这可以通过触发器或其他机制强制执行。
- 第四个需要一个触发器(关系上的计数通常需要触发器)。
我有两个table;为了简化示例,我们称它们为 lawnmower
和 lawn
.
- 割草机一直在修剪草坪。
- 多台剪草机可以修剪同一个草坪。
- 一块草坪有一台负责该草坪的割草机。
- 一台割草机可以同时负责3片草坪 时间。
直观的解决方案:
- 让割草机参考它正在割草的草坪
- 让草坪参考负责任的割草机
这给出了循环依赖。避免这种情况的最佳解决方案是什么?我目前正在考虑 responsiblefor
table 带有草坪和割草机的外键。然而,这使得多个割草机可以负责同一个草坪,这在以前是不可能的。
首先,您需要一个交汇点 table,因为这基本上是一个 n-m 关系。这 table 每个割草机和每个草坪都会有一行(我会称之为 LawnmowerLawns
或类似的东西)。
现在处理要点:
- 第一个需要在这个 table 中为每个割草机排成一行。这可以在大多数数据库中使用触发器来处理。可能还有其他解决方案。
- 第二个由联结点处理 table。
- 第三个是通过在 table 中有一个标志来表示每个草坪的 "primary" 割草机来处理的。这可以通过触发器或其他机制强制执行。
- 第四个需要一个触发器(关系上的计数通常需要触发器)。