假设我只允许注册用户投票。我应该限制每个用户每篇文章只能投票一次吗?
我应该维护一个包含 4 列的表 - articleid、userid、位(表示正/负)和一个日期时间列。
你还看到这被滥用了吗?
为了获得净评级,我会查询该表两次 - 一次计算所有正面投票,一次计算所有负面投票。
请告诉我您在我的方法中看到的任何缺陷/优化。
假设我只允许注册用户投票。我应该限制每个用户每篇文章只能投票一次吗?
我应该维护一个包含 4 列的表 - articleid、userid、位(表示正/负)和一个日期时间列。
你还看到这被滥用了吗?
为了获得净评级,我会查询该表两次 - 一次计算所有正面投票,一次计算所有负面投票。
请告诉我您在我的方法中看到的任何缺陷/优化。
保持对注册用户的投票可以避免滥用,通过不同的 IP 地址进行投票。
要获得净评分,您只需查询表一次,将所有选票相加,或者更好的是,您对最终投票的每个项目进行统计。投票一次意味着您增加或减少项目的评级。
编辑:如果您可以预先计算,我必须坚持查询多个表是不好的做法。分解关系模型是数据库优化的重要组成部分。
限制对注册用户的投票是避免可能的滥用的方法。但是,一旦用户投票,您可能需要考虑他们是否可以撤消投票。我相信这不会经常发生,但需要考虑一些事情。
顺便说一句,您不需要查询数据库两次,因为您可以通过查询分组获取这两个值,如下所示:
SELECT Vote, COUNT(Vote)
FROM tVotes
GROUP BY Vote, ArticleID
HAVING ArticleID = 1