質問
このサイトでしばらく前に、多対多(私の場合はFacebookっぽい「フレンド」システム)を使用する唯一の方法は次のようなことであると言われました:
uid(PK) friend_id
4 23
4 20
4 54
32 20
32 89
これにより、多くの同一の主キーが残されます(これは不可能だと思いますか?) また、uidをPKとして設定できない場合、どのようにしてテーブルをすばやく検索できますか? PKでこれを回避する方法が必要です。
ありがとう!
解決
多対多の関係がある場合は、UIDとFriend_IDを一緒に使用してデュアル主キーを作成するテーブルを作成できます。そのようにすると、UID / Friend_IDのペアのインスタンスは1つだけになります。
他のヒント
複合キーにする
PK =(uid、frield_id)
主キーとしてuidとfriend_idの両方の複合を使用します。
両方を主キーの一部にします。
ただし、検索速度が低下しないように、uid(および場合によってfriend_id)にもインデックスを作成する必要があります。
複合主キーを作成できます:
create table fbook (uid int, friend_id int, primary key(uid, friend_id));
所属していません StackOverflow