网站点赞 评论 回复 数据库设计
本文主要分享了我在设计评论模块中的一些心得,希望对读者有些许帮助。
关于这种常用功能,查了许多资料 又基于公司的业务场景
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 点击打开链接