MySQL中的重复PK

时间:2009-03-05 19:04:21

标签: mysql primary-key many-to-many

我刚才在这个网站上被告知,与多对多(在我的情况下是一个facebook-ish“友情”系统)的唯一方法是做这样的事情:

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

这不会给我留下许多相同的主键(我相信这是不可能的?) 如果我不能将uid设置为PK,我怎样才能快速搜索表格?必须有办法用PK来逃避这一点。

谢谢!

5 个答案:

答案 0 :(得分:3)

使其成为复合键

PK =(uid,frield_id)

答案 1 :(得分:2)

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

答案 2 :(得分:2)

使用uid和friend_id的组合作为主键。

答案 3 :(得分:1)

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

但是,你也想在uid上创建索引(可能还有friend_id),这样搜索速度就不会受到影响。

答案 4 :(得分:1)

您只需制作复合主键:

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