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