不久前在这个网站上有人告诉我,使用多对多(在我的情况下是 facebook-ish“交友”系统)的唯一方法是执行以下操作:
uid(PK) friend_id
4 23
4 20
4 54
32 20
32 89
这不会给我留下很多相同的主键(我相信这是不可能的吗?)如果我不能将 uid 设置为 PK,我怎样才能快速搜索表格?必须有一种方法可以通过 PK 来解决这个问题。
谢谢!
不久前在这个网站上有人告诉我,使用多对多(在我的情况下是 facebook-ish“交友”系统)的唯一方法是执行以下操作:
uid(PK) friend_id
4 23
4 20
4 54
32 20
32 89
这不会给我留下很多相同的主键(我相信这是不可能的吗?)如果我不能将 uid 设置为 PK,我怎样才能快速搜索表格?必须有一种方法可以通过 PK 来解决这个问题。
谢谢!
使其成为复合键
PK = (uid,frield_id)
如果您有一个多对多关系,您可以在其中创建一个带有 UID 和 Friend_ID 的双主键的表。这样,一对 UID/Friend_ID 应该只有一个实例。
使用 uid 和friend_id 的组合作为主键。
使它们都成为主键的一部分。
但是,您还需要在 uid(可能还有friend_id)上建立索引,这样搜索速度就不会受到影响。
您可以只制作一个复合主键:
create table fbook (uid int, friend_id int, primary key(uid, friend_id));