日期:2014-05-18  浏览次数:20689 次

查询用户有哪些好友,数据库如何设计实现
请教各位我想做一个类似于qq、msn的程序,请问关于用户好友方面数据库该如何设计优化。
比如一个用户拥有多个好友,是采用一张好友表,所有用户的好友都放在其中,然后每个好友都对应一个用户,还是每个用户都单独有一张他自己拥有的好友表,哪种更好呢?
此外,当一个用户的好友可能也是其他用户的好友,在数据库中采取什么方式来表示更有效率呢?
现在很多网站也有好友圈,用户有自己的好友列表,我想知道数据库是如何设计实现的?



------解决方案--------------------
创建一个表(用户ID,好友ID,邀请状态,邀请日期,...)
其中,“用户ID”和“好友ID”体现的是一种双向的好友关系,即用户ID是好友ID的好友,同时好友ID也是用户ID的好友。
------解决方案--------------------
1.用户是好友,好友也是用户
2.用户有不少的字段(例如:姓名,电话等等)
所以写一张表里,太多的重复字段,太浪费数据库资源了
写两张表
1.用户表(用户ID,姓名,电话等等)
2.用户好友联系表(用户ID,好友ID)其实都是用户的ID
我只说明这么多了,往下怎么走,看着办?
------解决方案--------------------
用户 A,B,C,D,E,F (这些都是数字ID)
好友关系表
id(自动) uid(索引) fid (uid+fid 聚集索引)
1 A B
2 A C
3 B A
4 B D
5 C A
6 D B



------解决方案--------------------
两个表

表1
------------------
用户编码 用户名称 ......

表2
------------------
用户编码 好友编码