代码之家  ›  专栏  ›  技术社区  ›  Mohamad

如何在数据库中对产品评审投票进行建模?

  •  2
  • Mohamad  · 技术社区  · 16 年前

    我想知道你对如何为产品评论建模投票的想法。如果你在网上购物,你可能会注意到很多产品评论都有 "x people out of x found this review helpful."

    假设许多客户将审查许多产品,并且许多客户将对许多审查进行投票,那么最好有一个包含totalvots和helpfulvots列的表:

    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 回复  |  直到 16 年前
        1
  •  2
  •   Vinko Vrsalovic    16 年前

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

    这样,您只需要对每个评论进行计数,而不是对每个客户进行计数:

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

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

        2
  •  1
  •   Zud    16 年前

    我会把它们放在同一张桌子上只是为了让事情简单。我以前也试过,就是这样做的。