2009-03-05 42 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));