【需求】:例如网站一个问题,用户可以对该问题发表赞,之后可以取消赞,还可以查询某个用户赞过哪些问题
【疑问】:后台的问题表如何设计?是不还需要添加一张赞表?
这个赞应该是跟问题关联的,每个问题记录下 like
的详细信息,包括 likeByUserId
, time
等等信息,还可以添加一个 count
字段,这样读取赞个数时比较方便,但是会造成一定的数据冗余。
用户取消赞时可以有两种选择,第一种是直接删除问题内该用户的 like
信息,另一种是使用一个标记 like
状态的字段 status
,并设为 false
,我会选择后种,因为用户取消赞的行为是可以用于分析用户行为的数据。
以 mongo
为例:
"likedBy" : [
{
"_id" :
"userId" :
"createdAt" :
"status" :
["count"] :
}