2009-03-05 16 views
2

私は、このサイトでは、多対多(私の場合はFacebookの "友人"のシステム)に行く唯一の方法は、このようなことをすることです(?私が不可能であると信じて)?:これは 同じ主キーの多くを私に残して、私はPKとしてUIDを設定することができない場合、どのように私はすぐにテーブルを検索することができます文句を言わないMySQLの重複したPK

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

これをPKで取り除く方法が必要です。

ありがとうございます!

答えて

2

多対多の関係がある場合は、UIDとFriend_IDのデュアルプライマリキーを作成する場所の間にテーブルを作成できます。そうすれば、UID/Friend_IDのペアのインスタンスが1つだけ存在するはずです。

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));