Php “喜欢评论”数据库设计?

Php “喜欢评论”数据库设计?,php,mysql,database,database-design,phpmyadmin,Php,Mysql,Database,Database Design,Phpmyadmin,我有帖子和评论的数据库表。 我想让用户对每一条评论和帖子都有一个喜欢或不喜欢的地方。 所以..我几乎没有这样做的想法。请告诉我我对不对 在注释表中创建两个附加列 likes | liked_uids 如果一个人点击了like按钮,那么在likes字段中为当前值添加+1,否则为当前值添加-1。 并将用户的id作为一个以-破折号分隔的标记添加到喜欢的uids字段中。 下一次我可以把这个字符串放到数组中检查, 当前用户id是否已记录。如果用户id为,则可以决定该用户是否参与了 但我在这个结构上没有什

我有帖子和评论的数据库表。 我想让用户对每一条评论和帖子都有一个喜欢或不喜欢的地方。 所以..我几乎没有这样做的想法。请告诉我我对不对

在注释表中创建两个附加列

likes | liked_uids
如果一个人点击了like按钮,那么在likes字段中为当前值添加+1,否则为当前值添加-1。 并将用户的id作为一个以-破折号分隔的标记添加到喜欢的uids字段中。 下一次我可以把这个字符串放到数组中检查, 当前用户id是否已记录。如果用户id为,则可以决定该用户是否参与了

但我在这个结构上没有什么问题,如果一个以上的用户同时喜欢一个帖子会怎么样?然后我可能会丢失最后一个uid字符串中的一些数据


那么请告诉我正确的方法是什么?

您可以这样创建->

id type ('comment/like') uid comment      post_id
1   comment               1   good post    100
2    like                 2   null         101
3   like                  1  null          102
4   comment               3  bad post      104
不建议存储喜欢次数。如果要统计特定帖子的喜欢次数,请执行以下操作:

select count(*) from tableName where post_id = 100
存储由任何分隔符分隔的用户id将导致出现问题,因此不建议这样做。如果使用分隔符更新或检索您的商店用户id,这将是一项整洁的工作

若要查看特定用户是否喜欢特定帖子,请使用以下查询:

select count(*) from tableName where post_id = 100 AND uid =1

一种方法是使用一个单独的Likes表,其中包含Likes、DisLikes、Likes、DisLikes和mapping表,用于评论和喜欢,例如:comments、posts和Likes posts\u Likes

我在手机上的输入速度太慢了^^^所有内容都已回答

我从未做过类似的事情,但我不会在注释表中添加这两列。我更愿意创建一个新的表,比如投票,它将有以下列

comment_ref | like | user_ref
每当有人喜欢一条评论,你就在那里插入一行新词。还可以将注释和用户的组合作为键,这样就不能插入两次

最后,您只需进行这样的查询,以获得单个评论的投票

SELECT COUNT(*) FROM votes WHERE comment_ref = 123

谢谢难道你不认为当表格随着时间的推移填满数千行时,这不会影响站点的效率吗?Mysql可以处理比你期望的更多的记录。你们现在的表格会给你们带来麻烦。你们可以用1表示喜欢,用0表示不喜欢,而不是用1表示喜欢。在这种情况下,您可以编写一个查询,如SELECTSELECT COUNT FROM VOUTS(其中like=1)和comment_ref=123(注释为like),SELECT COUNT FROM VOUTS(其中like=0)和comment_ref=123(注释为DISLIKE)。您不希望将信息保存为字段中的分隔字符串。这永远都不好,几乎没有选择。别这样。曾经相信我:。。。如果您的数据意味着多个东西,userid可以属于一个东西,您需要一个一对多的连接,因此这意味着一个额外的表。问题是,解释如何做到这一点以及为什么基本上是一个如何设计数据库101,所以我认为范围有点太大了。试着读懂标准化。