我将为Web应用程序创建一个投票系统,并想知道在(SQL)数据库中存储投票的最佳方法。
投票系统与StackOverflow类似。我现在在思考是否应该在不同的表格中存储上下投票。这样就可以更容易地计算所有的投票数。投票。另一方面,我必须查询两个表来查找用户或投票项目的所有投票。
另一种选择是一个带有布尔字段的表,该字段指定此投票是投票还是投票。但我猜计数上升或下调的选票相当慢(当你有很多选票时),布尔字段上的索引(据我所知)并没有多大意义。
您将如何创建数据库结构?一两张桌子?
答案 0 :(得分:15)
关于评论,我们找到了最适合Zardoz
的解决方案他不想总是计算投票数,并且需要尽可能详细的细节。所以解决方案是两者的混合。
我建议在日志表中插入/删除/更新投票时使用触发器自动更新“投票计数字段”。
答案 1 :(得分:11)
如果您的投票只是上/下,那么您可以制作一个votes
表链接到帖子并且值为1或-1(向上/向下)。通过这种方式,您可以一次性sum
。
答案 2 :(得分:2)
https://meta.stackexchange.com/questions/1863/so-database-schema
值得一看或
http://sqlserverpedia.com/wiki/Understanding_the_StackOverflow_Database_Schema
答案 3 :(得分:0)
我会想到,您需要在用户和正在投票的实体之间建立一个链接表。这将允许您查看哪些用户已经投票,并阻止他们提交进一步的投票。该表可以在布尔值中记录它是向上还是向下投票。
我建议在投票实体中存储一个当前的投票计数字段以便于查询。如果你省略了这个,那么大小的节省可以忽略不计。