|
|
1
1
我不知道这是否适用于Postgres,但这里有一个SQL Server解决方案:
--只能将玩家成对插入
您可以尝试插入一个玩家,或从一个团队中删除一个玩家,或在每个团队中插入两个以上的玩家-由于一组完整的约束,所有这些都将失败。 注意:SQL Server中的实践是显式命名所有约束。我没有命名我的约束,只是为了防止它与Postgres不兼容。 |
|
|
2
0
这听起来像是在用户界面中比在数据库中更容易执行的操作。 将玩家添加到团队时,不允许添加超过2名玩家,只允许添加尚未加入团队的玩家。 |
|
|
3
0
第一个解决方案是有限的,如果有必要改变为有三个成员的团队。 我喜欢teammemebrs表的概念,但是为了强制您的约束,您将永远不能一次只插入一个记录。你所有的插页必须是两个一组。此外,当A队的球员A IA希望他被转移到B队时,你要做的是什么?现在你必须找个人转移到A队,然后把他和他的搭档添加到B队。 如果团队只有两个成员,并且每个成员都只在一个团队中,那么创建和填充团队并使其处于活动状态会更好吗?至少可以一次完成一个更改。SP您可以将人员A从团队A移动到团队B,并使团队A处于非活动状态,直到找到要添加的其他人员为止。 |
|
|
4
0
在我看来,通过player1 id player2_id设计,您可以在向工作组表插入一次后检查所有约束。 在团队+团队成员设计中,您将进入延迟约束检查的丑陋,尤其是您必须设置的所有触发/规则。 顺便说一句:类似sira-uprise这样的系统是以明确的目的构建的,目的是纯声明地精确地处理这些类型的约束强制问题,即没有任何触发器麻烦,也没有涉及任何其他形式的编程。你可能会感兴趣。 |
|
|
developer · 带外键的SQL表设计 9 月前 |
|
|
relatively_random · 确保两个表之间一致的共同参考 10 月前 |
|
|
b126 · 在两种不同的Oracle模式上执行相同查询的速度差异很大 1 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 1 年前 |
|
|
Michael Samuel · MYSQL在以下情况下自动创建索引 7 年前 |