PHP / MySQL:评级系统 - 总结每个用户投票或更新一般投票表?

时间:2010-08-03 01:43:21

标签: php mysql

每个用户每个项目可以投票一次(只有注册用户可以投票)。所以我有一个用户投票表,其中包括用户ID,投票的项目ID和投票值(从1到10)。

我需要显示每个项目的总票数和评级,以便我想知道什么是最好的:从user_votes表中获取该项目的所有投票或者每次用户在一般投票表中投票时保存投票然后只获得那个数据库的字段?

3 个答案:

答案 0 :(得分:1)

您应该在项目表中保存计算出的评分值,这样您就可以按评级等对项目进行排序。这将更容易。

答案 1 :(得分:1)

要考虑的一个因素是你将会看到多少票。如果我们谈论巨大的数量级(比如数十万项中的每一项都要多数万票),那么存储每一次投票最终可能会使用更多的资源而不是它的价值。

另一方面,如果投票数量相当少(比如几百项每一项少于几百条记录),那么存储每项投票可能有利于增加它可以提供的灵活性。未来的发展。从现在开始的一个月,你可能会想到一些与这些信息有关的新事物,并且积压投票可能非常有助于定制应该如何运作。

正如其他人所提到的,这可以很容易地与元表结合使用,以便更轻松地对事物进行排序并简化查询。就个人而言,我建议view用于此类事情,因为这样做会通过为包含派生数据的字段自动更新来减少开销。

答案 2 :(得分:0)

如果您只是增加一笔金额,您将无法阻止来自同一用户的重复投票。

您可以使用两者的组合。保留一个列出所有投票和user_id / ip地址的表格,以验证他们是否已经投票,并保留与该项目相关联的金额,以避免查询投票表。