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

时间:2010-10-13 23:51:38

标签: database-design

我想知道您对如何为产品评论建模投票的想法。如果您已完成任何在线购物,您可能已经注意到许多产品评论都有"x people out of x found this review helpful."

假设许多客户会审核许多产品,并且许多客户会对许多评论进行投票,那么最好有一个包含totalVotes和usefulVotes列的表格:

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

或者有两个表,第二个分别存储投票:

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

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

2 个答案:

答案 0 :(得分:2)

我真的认为,对于大多数常见用例,您不需要坚持投票进行审核,也不需要投票。出于可用性原因,最多需要将其保存在会话变量中,让用户在有限的时间段内更改其投票。

通过这种方式,您只需要为每次审核保留一个计数,而不是每个客户:

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

这种方式不需要聚合,求和,计算或任何其他可能代价高昂的操作,事情很简单。简单就是好。

答案 1 :(得分:1)

为了简单起见,我会把它们放在同一张桌子上。我之前也尝试过这个,这就是我如何去做的。