好友关系的维护 大家讨论一下

Silencer 发布于 2011/01/07 11:28
阅读 511
收藏 2

 需求:

 每个人有一个好友列表,A 添加B 为好友,A 好友列表 里面 有B,但B的好友列表里面没有A,

 每次B 上线下线的时候都会提醒A。A上下线的时候 不会通知B。

 

我弄的是每个人有一个好友表,维护自己的好友信息,同时还有一个被加好友表,表里面就一个字段字符串格式的,把 谁加过我 按照一定的格式分割出来。

现在 每次 删除一个好友的时候 都要去对应 好友表里面 找一个下这个ID 然后删掉。感觉这样不太好 。。各位给出出主意。

加载中
0
红薯
红薯

一个表(myid,friend)足够了,被加好友是多余,因为通过这个表可以查出来

我的好友:select friend from friends where myid=我
谁加我为好友:select * from friends where friend=我

0
绝版小西瓜
绝版小西瓜

那么如果一个人有好多的好友总不能都写在一个字段里like吧

0
红薯
红薯

引用来自#3楼“绝版小西瓜”的帖子

那么如果一个人有好多的好友总不能都写在一个字段里like吧

好多好友就是好多条记录,你怎么会想着把他们写在一个字段里呢,思路独特啊,呵呵

0
绝版小西瓜
绝版小西瓜

额 也是 我这样的想法都被人说了一次了 又想起来了 。。。。。。。。。。

0
BoHong
BoHong

红薯,说的好。

0
Silencer
Silencer

引用来自#2楼“红薯”的帖子

一个表(myid,friend)足够了,被加好友是多余,因为通过这个表可以查出来

我的好友:select friend from friends where myid=我
谁加我为好友:select * from friends where friend=我

这样是很简单,但是当数据量上去的时候 查询效率就很低了呀,每个人可以被许多许多人加为好友,也可以加 几十个好友的时候。每个人有20个好友。 总过有 100w人或者更多 数据量很大 查询不就很慢了吗?

0
Silencer
Silencer

引用来自#3楼“绝版小西瓜”的帖子

那么如果一个人有好多的好友总不能都写在一个字段里like吧

我用的是find_in_set 函数检查的 没用like

0
Silencer
Silencer

不知道 那些IM 软件 这个 关系 是怎么维护的

0
绝版小西瓜
绝版小西瓜

引用来自#8楼“alonedancer”的帖子

引用来自#3楼“绝版小西瓜”的帖子

那么如果一个人有好多的好友总不能都写在一个字段里like吧

我用的是find_in_set 函数检查的 没用like

 但我想问下,如果我用的是Oracle数据库呢,是不是也能这样用?貌似Oracle里面没有find_in_set吧

0
十一文
十一文

可以这样

用一个字段存储json格式,可以标识是好友 还是被好友(当然两个字段也好)

存贮好友的些基本信息,头像,姓名,id等

以为这些信息其实是很少被查询的一般一个人的好友 有个300就很多了

或者如果你感觉数据库慢

可以为每一个用户建立文件夹

特定的文件夹名字来讯存储头像

特定的文件来存储用户的一些基本信息

前提是你有很多用户的话

返回顶部
顶部