投票制度不平等

时间:2015-07-31 11:43:23

标签: javascript database

我打算在我的webapp中实现投票系统(reactJs,flux,nodejs + express server)

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

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

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

这是个好主意吗?也许有另一种方式?

2 个答案:

答案 0 :(得分:2)

在这种情况下不会失去你之间的关系投票什么?

我宁愿在多对多的表格中存储投票,引用用户投票,投票元素和投票价值。

如果要显示平均值,快速的Sql查询可以返回aritmethic平均值。

此外,您可以了解更多关于用户投票行为的信息(总是投票最多或最小值的用户,对某些项目执行此操作的用户,而对其他项目执行相反操作的用户,投票某些项目但未投票其他项目的用户) ......还有一个巨大的等等。

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

答案 1 :(得分:1)

如果您按照自己的描述存储了每个页面的所有投票,那么您可能会遇到跟踪已投票和未投票的人的问题。我建议一个简单的地图表。

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总结给定页面的投票。请注意,您需要第二个查询(或两个子查询)才能获得投票反对。