我有一个网站,用户可以在该网站上对页面上留下的评论进行评分。每条评论都有一个唯一的 ID(例如 402934) -downs 但我怎样才能确保每个用户只对所说的评论进行一次排名。我打算创建一个数据库,将每个评论编号作为一行,在该行中有一个数组,其中包含所有对其进行排名的用户以及所有对其进行排名的用户,但我有一种感觉不是最好的方法。我的下一个想法是为每个用户创建一个表格,然后创建一个数组来显示用户已排名的所有评论。它可能会以这种方式运行得更快(例如,从用户的 150 个排名中检查一条评论)
问问题
1074 次
1 回答
7
user_id
使用和创建一个新comment_id
表vote TINYINT(1)
。
1
in的值是竖起大拇指, invote
的值是竖起大拇指。0
vote
有一个UNIQUE KEY约束(comment_id, user_id)
。
如果您按照上述操作,将很容易检查用户是否对特定评论进行了投票,如果您希望能够快速(如快速执行)查看用户发表的所有评论,您还应该添加INDEX
到user_id
.
当用户投票时,您可以使用REPLACE INTO
to user_comment_thumbs
,例如:
REPLACE INTO `user_comment_thumbs` (user_id,comment_id,vote)
VALUES (@user_id, @comment_id, @vote);
如果用户已经投票,表中的条目将被更新,否则将插入一个新行。
于 2011-12-23T15:19:49.117 回答