Php thumb UP&;的MySQL表结构;下载评论系统?

Php thumb UP&;的MySQL表结构;下载评论系统?,php,mysql,database,Php,Mysql,Database,我已经为评论创建了一个表,但我想为Digg和Youtube等评论添加上下拇指的功能,我使用php和mysql,我想知道实现这一功能的最好的表方案是什么,因此,有很多喜欢的评论将位于顶部 这是我当前的评论表:评论(id、用户、文章、评论、戳记) 注意:只有注册的用户才能投票,所以评论中每个用户只能投1票 谢谢您可以在每个拇指动作中添加分数字段和递增或递减: UPDATE comments SET score=score+1 Where id=123 然后,当您选择order by score D

我已经为评论创建了一个表,但我想为Digg和Youtube等评论添加上下拇指的功能,我使用php和mysql,我想知道实现这一功能的最好的表方案是什么,因此,有很多喜欢的评论将位于顶部

这是我当前的评论表:评论(id、用户、文章、评论、戳记)

注意:只有注册的用户才能投票,所以评论中每个用户只能投1票


谢谢

您可以在每个拇指动作中添加分数字段和递增或递减:

UPDATE comments SET score=score+1 Where id=123

然后,当您选择order by score DESC.

时,由于用户应注册为向上/向下移动,我将存储用户ID和post ID以验证向上/向下移动


2个表格适用于此任务。如果您需要设计,请告诉我。

保留一张投票表。例如投票(评论id、用户id、值、戳记)-值为-1或+1

这允许问责,并且您可以对(评论id、用户id)进行唯一索引,以防止重复投票。如果用户正在发送垃圾邮件,您还可以轻松删除用户及其所有投票

对于按分数排序的评论,可以在评论表和投票表之间进行连接,并使用SUM/GROUP by获得总分。然而,这可能是缓慢的。对于速度,您可以考虑在注释表中保留得分字段。每次将新行添加到投票表时,您都会从评论的分数中加/减1


因为您将每个投票都存储在一个表中,所以很容易根据需要重新计算分数。堆栈溢出的作用与声誉类似-用户的总声誉分数会被缓存并每隔一段时间重新计算一次。

如果对注释id进行唯一索引,则注释只能有1票。。。如果你对用户做一个唯一的索引,用户只有1票。@JuliSmz没错。这将是两个唯一的索引,一个在
comment\u id
上,另一个在
user\u id
上,并将按照您的建议进行分解。然而,我的答案建议在
(comment\u id,user\u id)
上建立一个唯一的索引。这允许每个评论和用户组合有一行(因此每个评论、每个用户有一票),这很好:)