图两个表:环境和分支。
它们的关系是:一个环境有很多分支。这很容易在分支表中使用环境外键。
问题在于添加此约束:环境分支的零个或一个分支可以具有“活动”状态。
系统将支持这两个请求:
- 给我环境'E'的分支
- 给我环境“E”的活动分支
一个解决方案是在环境表中添加“activeBranchFK”,但这会在表之间产生循环依赖,并且看起来不是一个好的解决方案。
另一种解决方案是分支表中的布尔“活动”,但在我看来,如果同一环境的许多分支同时处于活动状态,我们可能会有不希望的状态。
你有没有为这种模式建模?
您可以在表上使用部分唯一索引
branches
:现在对于每个 env_id,可以有许多不同的行带有
active = false
,但只有一个带有active = true
.