200分相送,求一个 关于朋友关系 的数据库的设计 up者有分

yeah920 2007-04-03 08:56:44
功能就象qq的加减朋友。

有这么一个user表:
id name
------------------------------
1 A
2 B
3 C
4 D
.......

有这么一个friend表:
user1 user2
--------------------------
A B
B A
A C
C A
B C
.......

他们可以互相加为好友。
例如:当A加B为好友,那么,B可以 1)拒绝、2)接受、3)接受并且加A为好友。
如果选1,那么他们(指A和B)就不是朋友了;在friend表不增加记录;
如果选2,那么B就是A的好友,而A不是B的好友;当然B还可以再加A为好友;在friend表增加一条记录:user1是A,user2是B;
如果选3,那么B不需要等A验证了,他们就互相是朋友关系了;在friend表增加两条记录:user1是A,user2是B;user1是B,user2是A。。

这样的话,如果user表有n个用户,如果他们都互相加为好友,
那么,friend表就有n*(n-1)条记录。
如果user表有10000个用户,那么friend表就有10000*(10000-1)=99990000条记录,这肯定不现实。


所以,请教各位,怎么设计 这种需求的关系 ???
谢谢。

原帖:
http://community.csdn.net/Expert/topic/5437/5437876.xml?temp=2.039737E-02

谢谢,帮顶也有分。
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdspower 2007-04-11
  • 打赏
  • 举报
回复
你考虑对每个用户,这样的人员信息都是有数量限制的,或者允许用记录进行扩展,比如在用户表中,有一个特殊字段表示允许合并的多条记录作为一个用户用(当然这样的权限是VIP的了——增加好友数量。)
njwangchuan 2007-04-10
  • 打赏
  • 举报
回复
在uesr信息的基础上,关联一张表,四列:relationNO,userID,relationID,relationType,relationType用4个值分别表示朋友,陌生人,黑名单,个人认为“待审批”不能做为一个值~~
xdspower 2007-04-09
  • 打赏
  • 举报
回复
QQ的好友数量是有限制的,这样其实就是一个一般的记录,有多个保留字段记录好友信息,比如200个好友,在在记录中维护一个位信息字段,指示那些字段好友信息有效,那些是可以添加的空位.
yeah920 2007-04-09
  • 打赏
  • 举报
回复
每个用户一个表

如果有1万个用户,就1万个表;
如果有10万个用户,,,,
十豆三 2007-04-04
  • 打赏
  • 举报
回复
每个用户一个表

四个字段(好友,陌生人,黑名单,待审批的好友申请)

好友:表示对方是自已的好友
陌生人:非好友
黑名单:不用说了吧。
待审批的好友申请:对方已加我的申请,等待我的通过或拒绝
scanlog 2007-04-03
  • 打赏
  • 举报
回复
关注中~
Estfania 2007-04-03
  • 打赏
  • 举报
回复
up
dcxa_ni 2007-04-03
  • 打赏
  • 举报
回复
建议你发到CSDN - 技术社区 - MS-SQL Server 技术版

这个版块关注的人少

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧