
[英]MYSQL - Left join to gather posts and likes/comments from database tables
[英]“likes for comments” database designing? [closed]
我有用于Posts
和comments
数据库表。
我想允许用户对每个评论和帖子都喜欢或不喜欢。
所以..我没有这样做的想法。 请告诉我我是否正确。
在注释表中创建两个其他列。
likes | liked_uids
如果某人单击“喜欢”按钮,则在“ likes
字段中为当前值添加+1,否则为当前值添加-1。 并将用户的ID作为字符串(以“-”破折号分隔)添加到liked_uids
字段中。 然后下一次我可以将该字符串保存到数组中并进行检查,
当前用户ID是否已记录。 如果用户ID是,则可以确定该用户是否已参加。
但是我在这种结构上没有什么问题,如果一个以上的用户会一次喜欢一个帖子怎么办? 那么我可能会从liked_uids
字符串(最后一个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会使您陷入问题,因此不建议使用 。 如果使用定界符来更新或检索商店用户标识,将是一件容易的事。
如果要查看特定用户是否喜欢特定用户,请使用以下查询:
select count(*) from tableName where post_id = 100 AND uid =1
一种方法是使用单独的Likes表,该表的Likes,DisLikes,Likes_UID,DisLikes_UID列和映射表用于评论和点赞,例如: Comments_Likes和帖子和点赞Posts_Likes
我在手机上输入的速度太慢了^^一切都已回答。
我从未做过任何类似的事情,但是我不会在注释表中添加这两列。 我宁愿创建一个像“ votes”这样的新表,它还会有以下几列。
comment_ref | like | user_ref
每当有人喜欢评论时,您都要在其中插入新行。 您也可以将comment_ref和user_ref组合作为键,因此不能两次插入。
最后,您只需要进行查询即可获得单个评论的投票。
SELECT COUNT(*) FROM votes WHERE comment_ref = 123
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.