今天去千橡面试, 被问到一个关于数据库设计的问题,没答好,哪个高手来指导一下? 问题是: 类似于qq群, 一个人可以加入多个群,一个群有多个人, 人的个数可能有几百万,群的个数也得数十万,怎么设计这几个表? 我的答案是: 设计一个表存有3个字段, ID, 人的ID,群的ID, 面试官说 数据量很大, 这样 这个表会很大,这个设计不好,谁能指点一下,怎么设计会合适? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主少说了2个表表1:人表,存储人的信息(N个字段,人id......)表2:群表,存储群的信息(N个字段,群id......)表3:人群关系表(只有3列,自增序列标识id,人id,群id)。而楼主只说了表3,面试官误认为你只考虑了一张表,这样会有很多冗余数据。----------------------------------以上是自己的一点见解,不当之处,请斧正! 我也是像Oraclelogan说的那样,有下面的3个表表1:人表,存储人的信息(N个字段,人id......) 表2:群表,存储群的信息(N个字段,群id......) 表3:人群关系表(只有3列,自增序列标识id,人id,群id)。如果有1千万个人,一个人在10个群里,人群关系表中就要有1亿条数据,面试官的意思是这个表数据量太大了,有没有其他设计来解决这个问题? 1亿条数据量是最大量,不会达到的,这个人群关系表的数据量不一定就比人的数据量,可能有很多人不加入任何群,加入两个以上群的人也不太多.即使数据量会达到1亿,也可以对表进行分区,利用list分区方法将表分为10个区,每个群一个区就可以了. 把人、群的内容再详细分类。比如说一般群,vip群,从多个维度分 顶!至少需要一个QQ用户表,QQ群表,二者关系表! 表1:人表,存储人的信息(N个字段,人id......) 表2:群表,存储群的信息(N个字段,群id......) 表3:人群关系表(只有3列,自增序列标识id,人id,群id)。 表1和表3可以聚集到一起 关于物化视图日志表建索引的问题 ------------@@-------------征集DBMS常用包的经验分享-------------@@---------- oracle结合ibatis里面的批量修改sql语句如何写啊? 警告: 创建的触发器带有编译错误。 高分求救!如何解决回滚段太小问题?急,急,急,急! 请教,如何将XML存入oracle数据库 我的oracle怎么提示无法连接到management server呢? 急急急:大家帮忙unix底下启动数据库服务失败 请进来取分!!!!!!!!!!! 节日快了,散分 存储过程游标的问题 trigger update sum
楼主少说了2个表表1:人表,存储人的信息(N个字段,人id......)
表2:群表,存储群的信息(N个字段,群id......)
表3:人群关系表(只有3列,自增序列标识id,人id,群id)。而楼主只说了表3,面试官误认为你只考虑了一张表,这样会有很多冗余数据。----------------------------------
以上是自己的一点见解,不当之处,请斧正!
表1:人表,存储人的信息(N个字段,人id......)
表2:群表,存储群的信息(N个字段,群id......)
表3:人群关系表(只有3列,自增序列标识id,人id,群id)。
如果有1千万个人,一个人在10个群里,人群关系表中就要有1亿条数据,面试官的意思是这个表数据量太大了,有没有其他设计来解决这个问题?
1亿条数据量是最大量,不会达到的,这个人群关系表的数据量不一定就比人的数据量,可能有很多人不加入任何群,加入两个以上群的人也不太多.
即使数据量会达到1亿,也可以对表进行分区,利用list分区方法将表分为10个区,每个群一个区就可以了.
比如说一般群,vip群,从多个维度分
至少需要一个QQ用户表,QQ群表,二者关系表!
表2:群表,存储群的信息(N个字段,群id......)
表3:人群关系表(只有3列,自增序列标识id,人id,群id)。
表1和表3可以聚集到一起