`
QuarterLifeForJava
  • 浏览: 176323 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

多级评论数据库设计

阅读更多
以下所有表述均基于MySQL5.6
表设计如下:

注:这里的uid可能会给大家带来些误解,大家可以把uid理解为uuid,主要用来分组
查询如下:
select GROUP_CONCAT(puid),GROUP_CONCAT(content) 
from a
GROUP BY uid
ORDER BY createtime ASC,sort ASC

结果如下:

设计及SQL语句分析
优点:一句SQL解决
缺点:
1、要用group by
2、某用户若引用10人的评论,
      那么该用户评论在数据库的记录就有11条,
      那么最坏情况下假设有100个用户评论了,
      那么在数据库就有100*(1+100)/2=5050条记录,
      即n*(n+1)/2,等差数列求和
小优化下缺点2:存时将puid和content并在一起,但是要注意分隔符的处理
较好的方案:
1、采用NOSQL,如MongoDB,因为列可以无限横向扩展,如:
{"id":"556f74aa-62ae","user1":"aaa"}
{"id":"5deb0570-62ae","user2":"bbb"}
{"id":"6332c65a-62ae","user3":"ccc"}
{"id":"67a184ed-62ae","user4":"ddd","user3":"ccc"}
{"id":"6bf8a503-62ae","user5":"eee","user4":"ddd","user3":"ccc"}
{"id":"713e6170-62ae","user6":"fff","user2":"bbb"}
2、将多级评论以HTML页面形式或类似user5:eee//@user4:ddd//@user3:ccc
  • 大小: 10.6 KB
  • 大小: 3.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics