【发布时间】:2016-08-09 08:07:32
【问题描述】:
我有两张桌子;为了简化示例,我们称它们为lawnmower 和lawn。
- 割草机总是在修剪草坪。
- 多台割草机可以割同一块草坪。
- 草坪只有一台割草机负责该草坪。
- 然而,一台割草机可以同时负责 3 个草坪 时间。
直观的解决方案:
- 让割草机参考它正在割的草坪
- 让草坪参考负责的割草机
这给出了循环依赖。避免这种情况的最佳解决方案是什么?我目前正在考虑使用带有外键的responsiblefor 桌子和草坪和割草机。然而,这使得多台割草机可以负责同一块草坪,这在以前是不可能的。
【问题讨论】:
-
循环依赖的 OOP 问题不适用于数据库。您的直观解决方案没有任何问题。
-
直觉上这也是不可能的。没有另一个就不能存在。我永远无法创建我的第一台草坪或割草机,因为它们需要彼此存在。
-
这就是交易的用途。
-
然后我想到了一个问题:那是好的设计吗,什么时候可以避免?
-
为了强制执行完整性,您仍然需要将事务与任何其他设计一起使用。如果它只允许记录有效数据,同时易于操作和查询,这是一个很好的设计。在这种情况下,我相信它可以与其他设计进行比较。避免非问题对我来说并不重要。
标签: sql database database-design database-schema