前段时间我在这个网站上被告知,唯一的方式去与多对多(在我的情况下,一个Facebook的ish“朋友”系统)是做这样的事情:在MySQL中重复PK
uid(PK) friend_id
4 23
4 20
4 54
32 20
32 89
惯于这样离开我,有很多相同的主键的 如果我不能设置uid作为一个PK,我怎么能快速查找表(我认为是不可能的?)?必须有一种方法来与PK脱身。
谢谢!
前段时间我在这个网站上被告知,唯一的方式去与多对多(在我的情况下,一个Facebook的ish“朋友”系统)是做这样的事情:在MySQL中重复PK
uid(PK) friend_id
4 23
4 20
4 54
32 20
32 89
惯于这样离开我,有很多相同的主键的 如果我不能设置uid作为一个PK,我怎么能快速查找表(我认为是不可能的?)?必须有一种方法来与PK脱身。
谢谢!
如果你有多对多的关系,你可以在创建一个双主键与UID和Friend_ID在一起的表之间开发一个表。这样,应该只有一对UID/Friend_ID的一个实例。
使它成为一个组合大键
PK =(UID,frield_id)
使用两个UID的复合和friend_id作为主键。
使它们成为主键的一部分。
但是,您还需要在uid(也可能是friend_id)上创建索引,以便搜索速度不受影响。
你可以只是做一个复合主键:
create table fbook (uid int, friend_id int, primary key(uid, friend_id));