今天去千橡面试, 被问到一个关于数据库设计的问题,没答好,哪个高手来指导一下? 问题是: 类似于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可以聚集到一起 PROC编程每次都要EXEC SQL COMMIT WORK RELEASE这句过后才能真正入库? RAC2上运行RMAN报"Unsatisfied data symbol" oracle的存储过程 查询语句问题!! 真郁闷,oracle 10g服务oracleDBConsoleorcl起不来了,提示错误,怎么解决? 请问把word,ppt,pdf存入blob字段中能否进行中文的全文检索 关于oracle数据库索引 in 和日期 请问怎样用Toad显示SQL的执行过程,急~~~~ 请求大家帮忙! 求救,急!!!! 数据库问题 存储过程游标的问题 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可以聚集到一起