首页 > 微博系统中的“关注”和”被关注“需要分两个表吗?

微博系统中的“关注”和”被关注“需要分两个表吗?

我研究了一下,记事狗微博开源系统,发现他分为两个表。

一个是粉丝表,一个是关注表。

比如粉丝表 a关注了b,关注了c。数据是这样的

uid touid
a b
a c

关注表的数据,也是一模一样。

我搞不懂为啥分成两个表,而且两个表的数据结构都差不多,这样不会造成数据冗余吗?要说速度上的快,每个表都是2条数据,不少不多。看不懂哪里提高了速度。


分两张表是为了当数据量大了之后,需要进行分表


不需要吧,可以用一个字段标示


你的想法是对的,没必要分两个表


同 @vayn ,一张表足矣。关注和被关注都是同一种相对关系,只是对象不同而已,一张表上就能表示。

uid touid
a b
a c
b c
c a

获取c的关注 SELECT touid FROM follow WHERE uid = 'c'
获取c的粉丝 SELECT uid FROM follow WHERE touid = 'c'

另外,随便吐槽几句,切勿当真。一、优化早死的快;二、记事狗的程序也没写到那种让人膜拜的程度,不看也罢。


分成两个表的话,数据应该是一模一样的,因为关注这个东西算是二元非对称关系,这样就造成数据冗余了。速度上面如果两个字段都建上索引不会太差。


是的。

一个Follower。一个Following

【热门文章】
【热门文章】