网站点赞 评论 回复 数据库设计

未结 0 3225
VIP1 2019年09月20日
悬赏:30积分

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhw0596/article/details/83044972
本文主要分享了我在设计评论模块中的一些心得,希望对读者有些许帮助。

关于这种常用功能,查了许多资料 又基于公司的业务场景 

1.由用户发表作品  其他已注册用户 在浏览个用户发表的作品时可以进行 点赞 评论 (同时可以撤销点赞)

2.同时对评论的内容也可以进行相应的点赞 (同时可以撤销点赞)

3.以及后期规划 对评论的用户可以进行相应的回复

基于以上三点 我查了一些网上资料

最终决定 设计以下 三张表

用户表就不多说了 id account nickname password 等等

评论表(comment)设计如下:

表字段    字段说明
id    主键
compose_id    作品id
compose_type    作品类型
content    评论内容
from_userid    评论用户id

回复表(reply)设计:

表字段    字段说明
id    主键
comment_id    评论id
reply_id    回复目标id
reply_type    回复类型
content    回复内容
from_userid    回复用户id
to_userid    目标用户id

点赞表(zan)设计如下:

表字段    字段说明
id    主键
type_id    对应的作品或评论的id
type    点赞类型  1作品点赞  2 评论点赞 3....
user_id    用户id
status    点赞状态  0--取消赞   1--有效赞
对于 评论表来说  它是挂载于 作品之下的  。  1个作品有多个评论。

而回复表,由于业务场景是 不管对评论表进行回复还是对于回复进行回复  它都是属于 评论表下的子集 不会出现子子孙孙这种树形结构。 所以在回复表设置一个父亲

comment_id,  有reply_type 来区分  该条回复是针对评论进行回复 还是针对回复进行回复

对于 点赞表  ---考虑到  点赞可以对作品进行点赞 也可以对评论进行点赞  设计type 来区分 该点赞类型( type )是针对 作品还是评论 以及后期有可能的需求 回复点赞等等

由于公司没用到redis 直接操作数据库mysql, 一般来说 对于作品或文章来时 点赞与取消赞  是一件很频繁操作的事件  ,这样数据量一大感觉  频繁的更新会很耗服务器性能。目前  想法是 用个redis做缓存,频繁点赞的更新操作 放到redis中 一个放(用户最终的点赞状态) 一个放待更新待插入到数据库的点赞状态,通过一个定时任务去 跑 待更新待插入的数据同步到数据中

对于评论 想法是 先取拉取数据到缓存中  用缓存输出到页面。

回帖
  • 还没有人回复
本周热议
没有相关数据
layui

微信扫码关注 网盟开源 公众号