我甚至不知道应该问什么问题。好吧,我想为我的评论竖起大拇指,但不确定如何或最好的方式。我只是为竖起大拇指创建一个新字段吗?
答案 0 :(得分:5)
如果您需要跟踪对哪些人投票,您应该制作Votes
表:
vote_id
:主键。user_id
:进行此投票的用户的ID。 [Users
表的外键。] comment_id
:投票的评论ID。 [Comments
表的外键。] vote
:投票(如果你只有一个微不足道的竖起/缩小系统,可能是+1或-1)。date
:投票时。评论的分数现在只是具有vote
的所有comment_id
列的总和。
请注意,与在score
表中添加整数Comments
列不同,这样做的好处是可以告诉您评论所遇到的争议程度。在不知道投了多少票的情况下,两个评分的净得分为零可能会遇到很多争议(人们对评论的优点同样分歧,所以总得分徘徊在0左右),或根本没有(没有人关心投票。)
答案 1 :(得分:4)
仅仅存储评论已被投票的次数的int将受到滥用。您可能还希望将每个投票与投射它的用户相关联,这样您就可以阻止人们对同一评论进行反复投票。
为了实现这一目标,我认为你需要一张单独的投票表。该表中的每条记录都应具有评论ID和投票人的用户ID。
答案 2 :(得分:1)
这取决于你想用它做什么。为什么不在评论表上添加int
列,为评论存储竖起/缩小的总数?
答案 3 :(得分:0)
如比尔和约翰所建议的那样,创建一个单独的表可能是最好的方法。但出于性能原因,您可能仍希望在votes
表中添加comments
列。这样,当您只想显示评论的投票计数时,您将无需访问votes
表。我相信这就是投票的工作方式。
答案 4 :(得分:0)
在评论表中创建2个字段vote_up
和vote_down
,并在用户投票时相应地增加其计数器,这样您就可以将评论分数显示为这些值的总和或百分比,在后一种情况下,您可以添加第三个字段vote_score
,如果您希望能够按分数排序,则会存储百分比。
然后创建投票表以防止用户在相同的时间段内投票两次相同的评论,如果是这样,只需将cron作业设置为每天运行一次并删除早于time()-( 86400 * DAYS_TO_KEEP_VOTE )
的条目