我有一个网站,用户可以对网页上留下的评论进行评分。每个评论都有一个唯一的ID(例如402934)如果我希望用户能够拇指向上/向下翻阅所述评论我可以看到我如何制作一个简单的计数器代码来跟踪拇指向上和拇指的数量 - 但是如何确保每个用户只对所述评论进行一次排名。我打算创建一个数据库,每个注释编号作为一行,并且在该行中有一个排列它的所有用户的数组并且所有用户都对它进行了排名,但我感觉不是最好的方法。我的下一个想法是为每个用户创建一个表,然后有一个数组显示用户排名的所有评论。它可能会以这种方式运行得更快(例如,从用户的150个排名中检查评论的6050排名,但我仍然觉得有更好的方法......任何想法?
答案 0 :(得分:7)
使用user_id
,comment_id
和vote TINYINT(1)
创建新表。
1
中vote
的值是竖起大拇指,0
中vote
的值是竖起大拇指。
(comment_id, user_id)
上有 UNIQUE KEY 约束。
如果您按照上述步骤操作,则可以轻松检查用户是否对特定评论进行投票,如果您希望能够快速(如快速执行)查看用户所做的所有评论您还应该向INDEX
添加user_id
。
当用户投票时,您可以REPLACE INTO
使用user_comment_thumbs
,如下所示:
REPLACE INTO `user_comment_thumbs` (user_id,comment_id,vote)
VALUES (@user_id, @comment_id, @vote);
如果用户已经投票,则表格中的条目将被更新,否则将插入新行。