首页 > segmentfault.com对某个问题发表赞,后台数据库是如何设计的?

segmentfault.com对某个问题发表赞,后台数据库是如何设计的?

【需求】:例如网站一个问题,用户可以对该问题发表赞,之后可以取消赞,还可以查询某个用户赞过哪些问题

【疑问】:后台的问题表如何设计?是不还需要添加一张赞表?


这个赞应该是跟问题关联的,每个问题记录下 like 的详细信息,包括 likeByUserId, time 等等信息,还可以添加一个 count 字段,这样读取赞个数时比较方便,但是会造成一定的数据冗余。
用户取消赞时可以有两种选择,第一种是直接删除问题内该用户的 like 信息,另一种是使用一个标记 like 状态的字段 status,并设为 false,我会选择后种,因为用户取消赞的行为是可以用于分析用户行为的数据。
mongo 为例:

"likedBy" : [ 
    {
        "_id" : 
        "userId" : 
        "createdAt" : 
        "status" : 
        ["count"] : 
    }
【热门文章】
【热门文章】