2

不久前在这个网站上有人告诉我,使用多对多(在我的情况下是 facebook-ish“交友”系统)的唯一方法是执行以下操作:

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 应该只有一个实例。

于 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 回答