我的问题是关于自然键和 auto_increment 整数作为主键。
例如,我有表A
和B
和A_B_relation
。A 和 B 可能是某个对象,A_B_realtion
记录了 A 和 B 的多对多关系。
A 和 B 都有自己的全局唯一 id,例如 UUID。UUID 对用户可用,这意味着用户可以通过 UUID 查询 A 或 B。
有两种方法可以设计表的主键。
- 使用 auto_increment 整数。
A_B_relation
将整数引用为 FK。 - 使用 UUID。
A_B_relation
将 UUID 引用为 FK。
例如,用户想通过 A 的 UUID 查询与 A 关联的所有 B 的信息。
对于第一种情况,查询流程是这样的:
First, query A's integer primary key by UUID from `A`.
And then, query all the B's integer primary key from `A_B_relation`.
At last, query all the B's info from `B`.
对于后一种情况,流程如下:
Query all the B's UUID from the `A_B_relation` by A's UUID.
Query all the B's info from `B`.
所以我认为,后一种情况更方便。这是正确的吗?后一种情况的不足是什么?