如何构建评审评级数据库?

时间:2013-05-10 19:09:30

标签: mysql

我知道这篇文章,但我觉得我的问题略有不同,而且不那么复杂。

MySQL rating database structure

如果我有五十个不同的项目并且我想为这些项目制作评级数据库,那么只需要有一个id列和一个得分列吗?

因此,每次输入新的评级时,项目的ID和评级都会在数据库中生成一个新行。

然后,当我想查询单个项目的结果时,我只需查询"WHERE id =xyz "然后平均评分或做我需要做的任何事情。

随着时间的推移,我最终会得到一个庞大的Id和评级数据库,我觉得这似乎有点草率,但是给每个项目和个别专栏等显然是大量的矫枉过正。

或者,我有没有更好的方法或其他我不考虑的事情?

1 个答案:

答案 0 :(得分:1)

您可能需要rater列,以便同一个人无法提交多个评分。如果您不打算使用登录,则可以使用保存在cookie中的随机字符串。当有人试图提交评级时,您会检查cookie。如果cookie存在,您要么覆盖旧的评级,要么不允许重新评级,但是您希望处理它。如果它不存在,则生成随机字符串并将其保存在cookie中。

如果您不需要跟踪每个单独的评级,您可以在每个项目表中只使用两列来完成所有操作。列将为avg_ratingnum_ratings。提交新评级后,您可以使用以下公式更新评级:

UPDATE item_table
SET avg_rating = @new_rating/(num_ratings+1) + avg_rating*(num_ratings/(num_ratings+1)),
    num_ratings = num_ratings + 1
WHERE item_id = @item
相关问题