many2many表为朋友系统,id在任一列,最佳架构

时间:2012-07-06 11:59:14

标签: database-design relational-database

想象一下,你有像facebook这样的朋友系统。

你有一个m2m表,可以为两个人加入ID。

目前,我们从任一方向记录记录。这意味着id可以在任一列中。因此,当我们选择时,我们必须在任一列中搜索id。

我们可以在select之后对此进行排序,通过对登录的userId进行测试,但我想知道是否有更好的方法来执行此操作

1 个答案:

答案 0 :(得分:1)

使用UNION

,您会发现效果最佳
select user_id1 as friend_id
from friends
where user_id2 = ?
union
select user_id2
from friends
where user_id1 = ?

确保关联表中的两个id列都有索引。