社交网站常见的用户与好友关系表设计(mysql)

用户表信息:userid、用户名等基本信息…

设计用户好友关系表:

create table 'connect_userfriend_id'
pk_id      id         (int)   主键,自增
           userid1    (int)   帐号id
           userid2    (int)   帐号id

注意:

1) userid1->userid2 和 userid2->userid1 是一样的记录,不要重复添加
2) 为了快速判断两个人是不是好友,可以在程序层插入数据前加一个限制 userid1 < userid2
3) 为了快速得到一个人的好友列表,查询时用 UNION ALL,代替or,会更高性能,因为取可能重复的值所以不能用UNION
4) 如果为了再高效,加入缓存层(Redis 或 Memcached)

查询用户id为2的好友id集:
select userid2 from connect_userfriend_id where userid1=2
union all
select userid1 from connect_userfriend_id where userid2=2;

写的比较粗略,希望分享的东西对大家有用!

标签