现有如下需求:
当用户第一次对一篇文章进行点赞时,该文章的点赞数加1,
当用户再次进行点赞时,点赞会取消,改文章的点赞数会减1.
我的思路如下:
Mysql数据库中建好了一张文章表artical_tb,
一张保存文章评论表comment_tb.
其中文章表中有一个字段likes用来保存该篇文章的点赞数量。
1、需要知道是哪个用户对哪一篇文章进行点赞,
即知道用户对象和文章id
2、记录用户对该文章点赞的状态(假设点赞过为1、未点赞为0;默认为0)
3、如果没有点过赞,则修改点赞状态为1并且将点赞数加1,
如果点过赞则修改点赞状态为0并且将点赞数减1。
但是现在我的问题是如何设计数据库来记录用户与文章的关系呢(某用户对某文章是否点过赞)
我的思路是新建一张用户文章表user_artical_tb
包含id、u_id(用户的id)、a_id(文章的id)、status(是否点赞);
当用户阅读文章的时候就将u_id和a_id保存如user_artical_tb中,
当用户进行点赞时来修改status。
可是我觉得这样设计太繁琐,而且需要频繁的操作数据库。
希望各位大佬给点意见。
如果不考虑负载的话你这样就可以了。最后那个status字段建议考虑下,如果没有可能延伸出来的点踩什么的需求的话可以把这个字段去掉,后面取消点赞就删除完事,避免时间长了堆数据太多。
就数据库和单表设计下估计拉取分页并显示当前页上用户对哪些文章点过赞这样的场景1,200qps是没什么问题的(数据千万级以下)。
就建一张点赞表,用户Id,文章ID。 用户点赞在这里查记录,没有就插记录, 文章表点赞数字段数据+1 ,再次点赞【取消】,也是查记录,这种情况下肯定有记录,删记录,文章表那边-1,有其他情况可以配合软删除,保留下操作记录
方案没有问题