背景:我是一名程序员,虽然不得不多次使用简单的数据库,但从未使用过复杂的数据库。即我精通基本的东西,但对高级功能和设计一无所知。
我需要创建一个包含两个用户之间匹配结果的表,即:
我可以强制执行user2<user1
吗?这是为了防止行具有user1==user2
,并防止在这对夫妇被反转时创建行,即我不需要同时拥有(alice,bob)
和(bob,alice)
。
- 或者 - 我一开始就做错了,还有另一种完全不同的方法来做到这一点?
显然我可以(并且将会)在添加之前检查这些值,但据我所知,如果我可以在 SQL 中添加一个约束,我最好添加它,以确保它是一致的。
数据库目前是sqlite,但如果这不能在 sqlite 中完成但可以用其他引擎完成(特别是如果 InnoDB),它也可能是一个有用的答案。
PS:我不确定这是否仍然算作 EAV,因为 AFAIK EAV 意味着来自不同表的两个主要部分,以及一个额外的列,而我将有多个。