前段時間我在這個網站上被告知,唯一的方式去與多對多(在我的情況下,一個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));