2

少し前に、このサイトで、多対多 (私の場合は facebook っぽい「友達になる」システム) を使用する唯一の方法は、次のようなことをすることだと言われました。

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

これにより、多数の同一の主キーが残されることはありません (これは不可能だと思いますか?) また、uid を PK として設定できない場合、どうすればテーブルをすばやく検索できますか? PKでこれを回避する方法が必要です。

ありがとう!

4

5 に答える 5

3

複合キーにする

PK = (uid,frield_id)

于 2009-03-05T19:07:39.083 に答える
2

多対多の関係がある場合は、UID と Friend_ID を一緒に使用してデュアル主キーを作成する間にテーブルを作成できます。そうすれば、UID/Friend_ID のペアのインスタンスは 1 つだけになるはずです。

于 2009-03-05T19:07:15.153 に答える
2

主キーとして uid と friend_id の両方の複合を使用します。

于 2009-03-05T19:07:57.257 に答える
1

両方を主キーの一部にします。

ただし、検索速度が低下しないように、uid (および場合によっては friend_id) にもインデックスを作成する必要があります。

于 2009-03-05T19:08:20.330 に答える
1

複合主キーを作成するだけです:

create table fbook (uid int, friend_id int, primary key(uid, friend_id));
于 2009-03-05T19:10:06.877 に答える