2009-03-05 25 views
2

前段时间我在这个网站上被告知,唯一的方式去与多对多(在我的情况下,一个Facebook的ish“朋友”系统)是做这样的事情:在MySQL中重复PK

uid(PK) friend_id 
4  23 
4  20 
4  54 
32  20 
32  89 

惯于这样离开我,有很多相同的主键的 如果我不能设置uid作为一个PK,我怎么能快速查找表(我认为是不可能的?)?必须有一种方法来与PK脱身。

谢谢!

回答

2

如果你有多对多的关系,你可以在创建一个双主键与UID和Friend_ID在一起的表之间开发一个表。这样,应该只有一对UID/Friend_ID的一个实例。

3

使它成为一个组合大键

PK =(UID,frield_id)

2

使用两个UID的复合和friend_id作为主键。

1

使它们成为主键的一部分。

但是,您还需要在uid(也可能是friend_id)上创建索引,以便搜索速度不受影响。

1

你可以只是做一个复合主键:

create table fbook (uid int, friend_id int, primary key(uid, friend_id));