我正在尝试创建一个投票表并最大限度地提高性能。由于投票只能是UP或DOWN,我在考虑使用bit
1 = up
和0 = 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。
是的,我想允许用户删除投票。
答案 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。