聊天记录的数据库表设计

现在用户数量大致有10万人

所使用的数据库一定为mysql

想保存所有人聊天记录在在数据库中

即使一个人的聊天数据条数只有100条

那如果把所有记录保存在一张表中,那不就有1000万条记录

这样应该会导致查询效率极低吧?

有没有具体其的数据库设计方法或思想

比如多表?只是有这个想法,但是不懂其运作机制

大家说说想法,让小弟参考参考 谢谢了!

5个回答

最佳解决方案:分表+备份
分表:根据用户的id,把不同用户的聊天信息放到对应的表中,以缓解数据量的压力。
备份:后台搞个过程,定期把老的数据备份的备份表里,同时把已备份的数据删除。
我们公司类似这样的功能就是这么做的。

还有一种方法,不如知道适不适合你的需求,那就是像qq一样,把该用户的聊天记录以文件的形式写在他本地.

好的设计是针对一个新注册的用户,建立一张对应此用户的聊天记录表

按日期分表

我觉得每个用户创建一个表是不错的想法,问题是表会太多.单表记录太少.成本太高.10w个表做起统计来会很麻烦.
我的意思将用户分类:比如 号码10000-19999的作为一个号段记录在一个表里面. 这样表相对少点,记录量相对合理.
另外要做备份表,定期备份过期信息,比如前3个月的聊天记录等.

ps: 我不理解,聊天记录属于隐私来的,这个也要记录!??

二)针对学生课程数据库查询(1) 查询全体学生的姓名、学号、所在系,并用别名显示出结果。(2) 查询信息系、数学系和计算机科学系学生的姓名和性别。(3) 查询所有姓刘学生的姓名、学号和性别。(4) 查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。(5) 查询每个学生选修课程的总学分。(6) 查询每个学生的学号、姓名、选修的课程名及成绩。(7) 查询所有选修了1号课程的学生姓名。(分别用嵌套查询和连查询)(8) 创建一个视图View_s,通过这个视图找到既选修了课程1又选修了课程2的学生的信息。(9) 查询平均成绩大于85的学生学号及平均成绩。(10) 要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如果年龄相等,则按照学号从低到高排序(11) 向student(学生表)中插入一条数据:姓名华晨宇,学号955008,性别为男,系别为管理系,出生日期为1990/5/5,年龄为30。(12) 删除cs表中成绩为空的信息。(13) 新建一个登录名dll,并创建一个用户dll,并将student表的查询、插入和删除的权限授予dll。(14) 回收dll的student的删除权限。(15) 在course表中的credit字段增加一个constraint约束,约束名字为C_credit,要求credit字段的取值为1-5之间的整数。
老师们给做做这道题,谢谢了!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问