问题是: 类似于qq群, 一个人可以加入多个群,一个群有多个人, 人的个数可能有几百万,群的个数也得数十万,怎么设计这几个表?
    我的答案是: 设计一个表存有3个字段, ID, 人的ID,群的ID,  
面试官说 数据量很大, 这样 这个表会很大,这个设计不好,谁能指点一下,怎么设计会合适?

解决方案 »

  1.   


    楼主少说了2个表表1:人表,存储人的信息(N个字段,人id......)
    表2:群表,存储群的信息(N个字段,群id......)
    表3:人群关系表(只有3列,自增序列标识id,人id,群id)。而楼主只说了表3,面试官误认为你只考虑了一张表,这样会有很多冗余数据。----------------------------------
    以上是自己的一点见解,不当之处,请斧正!
      

  2.   

    我也是像Oraclelogan说的那样,有下面的3个表
    表1:人表,存储人的信息(N个字段,人id......) 
    表2:群表,存储群的信息(N个字段,群id......) 
    表3:人群关系表(只有3列,自增序列标识id,人id,群id)。
    如果有1千万个人,一个人在10个群里,人群关系表中就要有1亿条数据,面试官的意思是这个表数据量太大了,有没有其他设计来解决这个问题?
      

  3.   


    1亿条数据量是最大量,不会达到的,这个人群关系表的数据量不一定就比人的数据量,可能有很多人不加入任何群,加入两个以上群的人也不太多.
    即使数据量会达到1亿,也可以对表进行分区,利用list分区方法将表分为10个区,每个群一个区就可以了.
      

  4.   

    把人、群的内容再详细分类。
    比如说一般群,vip群,从多个维度分
      

  5.   

    顶!
    至少需要一个QQ用户表,QQ群表,二者关系表!
      

  6.   

    表1:人表,存储人的信息(N个字段,人id......) 
    表2:群表,存储群的信息(N个字段,群id......) 
    表3:人群关系表(只有3列,自增序列标识id,人id,群id)。 
    表1和表3可以聚集到一起