小编o0'*_*0'.的帖子

两个主列都指向同一个外部列的类似 EAV 的表

背景:我是一名程序员,虽然不得不多次使用简单的数据库,但从未使用过复杂的数据库。即我精通基本的东西,但对高级功能和设计一无所知。

我需要创建一个包含两个用户之间匹配结果的表,即:

  • table_A: user_id (primary int), 其他东西
  • table_B:user1(主外键指向 table_A user_id),user2(主外键指向 table_A user_id),其他东西

我可以强制执行user2<user1吗?这是为了防止行具有user1==user2防止在这对夫妇被反转时创建行,即我不需要同时拥有(alice,bob)(bob,alice)

- 或者 - 我一开始就做错了,还有另一种完全不同的方法来做到这一点?

显然我可以(并且将会)在添加之前检查这些值,但据我所知,如果我可以在 SQL 中添加一个约束,我最好添加它,以确保它是一致的。

数据库目前是sqlite,但如果这不能在 sqlite 中完成但可以用其他引擎完成(特别是如果 InnoDB),它也可能是一个有用的答案。

PS:我不确定这是否仍然算作 EAV,因为 AFAIK EAV 意味着来自不同表的两个主要部分,以及一个额外的列,而我将有多个。

sqlite foreign-key primary-key eav

3
推荐指数
1
解决办法
264
查看次数

标签 统计

eav ×1

foreign-key ×1

primary-key ×1

sqlite ×1