好友关系主要分为两类:
(1)弱好友关系;(2)强好友关系;
两类都有典型的互联网产品应用。
什么是弱好友关系?
弱好友关系的建立,不需要双方彼此同意:用户A关注用户B,不需要用户B同意,此时用户A与用户B为弱好友关系,对A而言,他多“关注”了一个人,对B而言,他多了一个“粉丝”。
微博粉丝是一个典型的弱好友关系应用。
设计元数据?
(1)guanzhu表,用户记录uid所有关注用户guanzhu_uid;
fensi表,用来记录uid所有粉丝用户fensi_uid;
(2)强好友关系也可以使用关注表和粉丝表来实现:
1)guanzhu(uid, guanzhu_uid);
2)fensi(uid, fensi_uid);
什么是强好友关系?
强好友关系的建立,需要好友关系双方彼此同意:用户A请求添加用户B为好友,用户B同意,此时用户A与用户B则互为强好友关系,即A是B的好友,B也是A的好友。
QQ好友是一个典型的强好友关系应用。
如何设计元数据?
通过强好友关系业务分析,
其核心元数据为:(1)friend(uid1, uid2);
如何查询一个用户的好友呢?
假设要查询uid=2的所有好友,只需在uid1和uid2上建立索引,
然后:select from friend where uid1=2unionselect from friend where uid2=2