【问题标题】:Voting system with unequal votes票数不等的投票制度
【发布时间】:2015-07-31 11:43:22
【问题描述】:

我打算在我的 webapp(reactJs、flux、nodejs + express 服务器)中实现投票系统

许多用户(数千名)可以投票,他们的投票是不平等的。从 1 到 100。他们可以投票赞成或反对。我需要对数据库中的所有选票进行算术平均。我有数千页的投票系统。我该如何实施? 我想,我可以将每一页的所有投票存储在数据库表的一个单元格中。 当我需要在前端渲染平均投票时,我会像这样检索 json 对象:

{ page1: [1,22,5,7,32,...~1000 more numbers] }

并在客户端使用js计算算术平均值。

这是个好主意吗?也许还有其他方法?

【问题讨论】:

    标签: javascript database


    【解决方案1】:

    在这种情况下不会失去你与谁投票的关系吗?

    我宁愿将投票存储在多对多表上,参考用户投票、投票的元素和投票的价值。

    当您想显示平均值时,快速 Sql 查询可以返回算术平均值。

    但此外,您还可以了解更多有关用户投票行为的信息(始终投票最大值或最小值的用户,对某些项目这样做而对其他项目做相反的用户,投票某些项目但不投票其他项目的用户...和一个巨大的等)。

    考虑到这些数据,您可以实现比简单平均值更可靠的投票值......但这是完全不同的事情。

    【讨论】:

      【解决方案2】:

      如果您按照您的描述存储来自每个页面的所有投票,您可能会在跟踪谁投票和谁没有投票时遇到麻烦。我会建议一个简单的地图。

      Table 1:
      UserID (int), NumberOfVotes (int)
      
      Table2:
      PageID (int), UserID (int), ForOrAgainst (binary 1=for, 0=against)
      

      然后要计算选票,您可以简单地加入表格和 SUM(NumberOfVotes),然后从给定的 PageID 中减去 SUM(NumberOfVotes)。

      Here's an SQLFIDDLE 对给定页面的投票求和。请注意,您还需要第二个查询(或两个子查询)才能获得反对票。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        相关资源
        最近更新 更多