帮助投票表架构的想法

时间:2010-12-29 21:00:45

标签: sql

我正在尝试创建一个投票表并最大限度地提高性能。由于投票只能是UP或DOWN,我在考虑使用bit 1 = up0 = down这是不直观的?有更好的方法吗?

UserVotes (3 way primary key between all three tables)
+----------+----------+-------------+
|  UserID  |  IsUp    | CommentID   |
+----------+----------+-------------+
|    1     |  1       |  99         |
|    2     |  0       |  99         |

当用户点击投票结果或投票结果按钮

时,将进行更新
If VoteUpButtonClicked Then
    VoteService.Add(userID,True, CommentID)
End If

If VoteDownButtonClicked Then
     VoteService.Add(userID, False, CommentID)
End If

然后调用将是“计数”

Dim TotalUpVotes = VoteServce.QueryVotes().Where(Function(v) v.IsUp And v.CommentID = CommentID).Count
Dim TotalDownVotes = VoteService.QueryVotes().Where(Function(v) Not v.IsUp And v.CommentID = CommentID).Count

我正在使用SQL Server 2008和Linq to SQL。

是的,我想允许用户删除投票。

3 个答案:

答案 0 :(得分:3)

怎么样:

UserId (int) PK
CommentId (int) PK
Vote (tinyint) (1 or -1)
Voted (Date)

然后你可以简单地将值加总

答案 1 :(得分:0)

由于您是将逻辑表包装在一起以完成项目要求的那个,我认为是您需要回答它是否直观的问题。它需要你很直观。

答案 2 :(得分:0)

我希望投票表能保留投票的实时总和:

UpVote int DownVote int

当用户投票时,

+1到适用的列。

将投票存储在日志表中

用户名 CommentID IsUp(位)

如果用户删除了他的投票,您可以在UpVote或DownVote上查询IsUp和-1。