【发布时间】:2011-03-24 12:16:54
【问题描述】:
每个用户每个项目可以投票一次(只有注册用户可以投票)。所以我有一个用户投票表,其中包括用户 ID、投票项目 ID 和投票值(从 1 到 10)。
我需要显示每个项目的总票数和评分,因此我想知道什么是最好的:从 user_votes 表中获取该项目的所有票数,或者每次用户在一般投票表中投票时保存投票,并且然后从该数据库中获取该字段?
【问题讨论】:
每个用户每个项目可以投票一次(只有注册用户可以投票)。所以我有一个用户投票表,其中包括用户 ID、投票项目 ID 和投票值(从 1 到 10)。
我需要显示每个项目的总票数和评分,因此我想知道什么是最好的:从 user_votes 表中获取该项目的所有票数,或者每次用户在一般投票表中投票时保存投票,并且然后从该数据库中获取该字段?
【问题讨论】:
要考虑的一个因素是您将看到多少票。如果我们谈论的是数量级的巨大(比如数十万个项目中的每一个都有超过数万张选票),那么存储每张选票最终可能会使用比其价值更多的资源。
另一方面,如果投票数量相当少(比如几百个项目中的每一个都少于几百条记录),那么存储每个投票可能是有利的,因为它可以提供额外的灵活性未来的发展。一个月后,您可能会想出一些新的东西来处理这些信息,而积压的投票可能会非常有助于调整该信息的工作方式。
正如其他人所提到的,这可以很容易地与元表结合使用,以便更轻松地对事物进行排序并简化查询。就个人而言,我会为这种类型的事情推荐 view,因为这样做会通过自动更新包含派生数据的字段来减少您的开销。
【讨论】:
您应该将计算出的评分值保存在项目表中,这样您就可以按评分等对项目进行排序。这会容易得多。
【讨论】:
如果您只是增加一个总和,您将无法防止同一用户重复投票。
您可以将两者结合使用。保留一个表格,列出所有投票和 user_id/ip 地址,以验证他们尚未投票,并保留与该项目相关的总和以避免查询投票表。
【讨论】: