产品评论投票如何在数据库中建模?

问题描述:

我想知道您如何为投票产品评论建模。如果你已经做了任何网上购物,你可能已经注意到,许多产品评论有一个"x people out of x found this review helpful."产品评论投票如何在数据库中建模?

假设许多客户将审查许多产品,许多客户将对许多评论投票,是最好有一个表总投票和有帮助的话列,这样的:

customerReviews(id, customerId, productId, reviewText, totalVotes, helpfulVotes) 

还是有两个表,分别在第二存储票,因为这样的:

customerReviews(id, customerId, productId, reviewText) 
reviewVotes(id, reviewId, customerId, helpfull) (helpfull would be a 0,1 value) 

你的想法是值得赞赏的。这里的另一个假设是投票客户必须是会员。

我真的认为,对于大多数常见用例,您不需要坚持谁投票审查,也没有什么特别投票。出于可用性的原因,您至多需要将其保留在会话变量中,让用户在有限的时间段内更改其投票。

这样,你只需要保持每复习计数,而不是按每个客户:

review(id, productId, authorId, text, votes, helpfulCount) 

这样就没有必要聚集,求和,计数或其他任何潜在的昂贵的操作,和东西简单。简单很好。

我会把它们都放在同一张桌子上,以使事情变得简单。我之前也试过这个,那就是我如何去做的。