多级评论数据库设计

以下所有表述均基于MySQL5.6
表设计如下:
[img]http://dl2.iteye.com/upload/attachment/0111/9611/5ad39fd5-2d3e-3017-afd2-ecc0ba13ee35.png[/img]
注:这里的uid可能会给大家带来些误解,大家可以把uid理解为uuid,主要用来分组
查询如下:

select GROUP_CONCAT(puid),GROUP_CONCAT(content)
from a
GROUP BY uid
ORDER BY createtime ASC,sort ASC

结果如下:
[img]http://dl2.iteye.com/upload/attachment/0111/9615/43f492b4-8567-3f44-8f5a-ac37c1ec3243.png[/img]
设计及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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值