1.表的设计
表里面就两个字段,一个字段是用户id,另外一个字段是好友id,假如A跟B互为好友,那在数据库里面就会有两条数据
2.推荐好友思路
上面的图的意思是:h跟a的互为好友,a跟b,c,d互为好友...
现在我要找a的推荐好友,这个时候怎么办呢?首先我们先找到,a的上级就是h,然后找到a的下级b,c,d,(这个对应到数据库表里面:a的上级就是好友id是a的id的那些数据,a的下级就是用户id是a的id的那些数据)1. 我们先找到h的上级用户:在图上没有上级用户,下级用户:a
2. 找到b的上级:a,下级用户:z,e
3. 找到c的上级:a,z,下级用户:没有
4. 找到d的上级:a,下级用户:没有
5. 这个时候我们把这些已经找到的数据,全部合在一起:那就是4个a,2个z,1个e,然后排除 a 本身(因为给a推荐好友,总不能自己推荐自己吧),所以就会给a推荐 z跟e这两个人,然后还能根据共同好友数量,来做排序
6. 其中z跟a有两个共同好友(c跟b) ,e跟a有1个共同好友(b),同理给e推荐好友,也只会推荐到a这个人
原理就是集合的交集,然后这种思路具体的算法就靠自己去实现了,不过也不是什么难事,有点编程功底的都可以实现的,只不过是速度的快慢而已。最简单的实现就是先查到a的上下级,然后通过for循环,依次找到各自的上下级用户,最后做统计处理