考虑这个虚构的数据模型:
Dudes和Dudettes可以有一场比赛。我只希望一对夫妇匹配一次。
这看起来与表格类似:
Dud-ette
id, name
1, Peter
2, Nadine
3, Hans
4, Elle
5, Zoe
Match
id1, id2, time
1, 5, 2022-09-01
2, 3, 2022-09-03
3, 2, 2022-09-03
4, 3, 2022-08-24
现在看看发生了什么:在匹配表中,我们有两次相同的关系,只是相反:(2,3) 和 (3,2)。我不能通过添加键或唯一约束来限制它,因为它会认为它是非冗余的。冗余将是 (2,3) 和 (2,3)。似乎在您进行递归设计时会发生这种情况,这意味着从实体到自身的关系。
我希望 (2,3) 被认为是 (3,2) 的冗余,因此被禁止。是否有任何设计解决方案或 sql 关键字?
将匹配约束为 id1<id2,例如