具有上下投票的投票系统的数据库结构

时间:2010-12-09 23:40:48

标签: sql database schema voting-system

我将为Web应用程序创建一个投票系统,并想知道在(SQL)数据库中存储投票的最佳方法。

投票系统与StackOverflow类似。我现在在思考是否应该在不同的表格中存储上下投票。这样就可以更容易地计算所有的投票数。投票。另一方面,我必须查询两个表来查找用户或投票项目的所有投票。

另一种选择是一个带有布尔字段的表,该字段指定此投票是投票还是投票。但我猜计数上升或下调的选票相当慢(当你有很多选票时),布尔字段上的索引(据我所知)并没有多大意义。

您将如何创建数据库结构?一两张桌子?

4 个答案:

答案 0 :(得分:15)

关于评论,我们找到了最适合Zardoz

的解决方案

他不想总是计算投票数,并且需要尽可能详细的细节。所以解决方案是两者的混合。

  1. 在考虑的表中添加一个整数字段以存储投票计数(确保不会出现溢出)。
  2. 创建其他表以记录投票(用户,帖子,日期,上/下等)
  3. 我建议在日志表中插入/删除/更新投票时使用触发器自动更新“投票计数字段”。

答案 1 :(得分:11)

如果您的投票只是上/下,那么您可以制作一个votes表链接到帖子并且为1或-1(向上/向下)。通过这种方式,您可以一次性sum

答案 2 :(得分:2)

答案 3 :(得分:0)

我会想到,您需要在用户和正在投票的实体之间建立一个链接表。这将允许您查看哪些用户已经投票,并阻止他们提交进一步的投票。该表可以在布尔值中记录它是向上还是向下投票。

我建议在投票实体中存储一个当前的投票计数字段以便于查询。如果你省略了这个,那么大小的节省可以忽略不计。