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

标签 database-design

我想知道您对如何为产品评论建模投票的想法。如果您进行过任何网上购物,您可能会注意到许多产品评论都有“x 人中的 x 人发现此评论有帮助。”

假设许多客户会评论许多产品,并且许多客户会对许多评论进行投票,那么最好有一张包含 TotalVotes 和 HelpfulVotes 列的表,如下所示:

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

或者有两个表,第二个表单独存储投票,如下所示:

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

非常感谢您的想法。这里的另一个假设是,要投票的客户必须是成员(member)。

最佳答案

我确实认为,对于大多数常见的用例,您不需要坚持谁投票支持评论,也不需要坚持投票哪些特定的票。出于可用性原因,您最多需要将其保留在 session 变量中,让用户在有限的时间内更改其投票。

这样,您只需保留每个评论的计数,而不是每个客户的计数:

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

这样就不需要聚合、求和、计数或任何其他可能成本高昂的操作,而且事情很简单。简单就是好的。

关于database-design - 产品评论投票如何在数据库中建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928976/

相关文章:

php - 数据库设计: Multiple User Entities. 单个或多个表

mysql - 为以下简单示例设计架构的最佳方法是什么?

mysql - 使用临时表是否明智?

arrays - PostgreSQL 中是否有可用的多值字段类型?

mysql - 数据库设计——来自多个来源的独特数据

database-design - 你知道任何支持嵌入式文档(MongoDB)的数据库设计软件吗?

database - 关系数据库中的分层过滤

java - 在java中构建应用程序主机(例如wordpress.com或google group)的可能解决方案是什么?

database - 在数据库中存储合规性条件逻辑

sql - 分层属性建模