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

本文主要分享了我在设计评论模块中的一些心得,希望对读者有些许帮助。

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

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

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中 一个放(用户最终的点赞状态) 一个放待更新待插入到数据库的点赞状态,通过一个定时任务去 跑 待更新待插入的数据同步到数据中

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

参考文章

http://blog.****.net/ztchun/article/details/71106117 点击打开链接

http://www.jianshu.com/p/f9e27a96da89 点击打开链接