关于新浪微薄好友分组设计
最近新浪微薄很流行,对其中的一些数据库设计希望大家可以探讨下。
微薄好友设计:
新浪微薄好友可以创建分组,好友可以属于我设置的几个分组中。
一般我们设计好友都是UserId(用户ID)、FriendId(朋友ID)、CreatedDateTime(创建时间)、
Status(好友之间的状态)、GroupId (分组编号)
表设计一般为:
UserId,FriendId,CreatedDateTime,GroupId,Status,之类的,一般一个好友只属于一个分组中。
但在新浪微薄中好友分组一个好友可以属于几个分组中,即GroupId可能为(2,5,6,7,9),即几个分组组成的字符串表示。
如果这样设计,在查询好友分组的时候就需要拆分GroupId,从而带来一定性能问题。
1、
UserId,FriendId,GroupId
1 1 2,5,6,7,9
2、
UserId,FriendId,GroupId
1 1 2
1 1 5
1 1 6
1 1 7
1 1 9
2种方式都有一定的缺陷:
第一种设计如果根据查询某个人的某个分组的好友,则需要拆分GroupId字段
第二种方式设计查询某个分组里的好友很方便,但会使好友数据量倍增。
希望大家能够讨论下。具体我可能有些没说清楚,有新浪微薄账号的可以去设置下好友这块。希望有高手能够根据新浪微薄的设计需求给出点意见,谢谢!