如何检查用户是否已经评论了

问题描述:

我正在为客户端应用设计一个'http api',它关于评论,情况是如果应用用户登录,他可以喜欢一些评论,而不像他们,但他们不会喜欢两次或更多次,所以每当应用程序从我的'http api'获取评论数据时,数据应该能够告诉客户端应用程序该评论是否已被用户所喜欢。 好吧,我最近实施的API,但我发现它工作得不好,我的设计是:如何检查用户是否已经评论了

插入: 我创建节约评论一表“评论”(内容,创建时间等)一个用于应用用户的桌子'用户'和一个用于记录哪个用户喜欢哪个评论的信息的表'Like' 当用户喜欢评论: 1时,增加表'comment'中的记录'like_counts' 2,插入表中像设置用户='用户'和评论='评论'

查询:

  1. 查询从MySQL的评论列表(约20条每一页)
  2. 的foreach非常评论和查询表等,其中评论==“评论”和用户=“用户”
  3. 如果查询结果在步骤2中存在,这意味着用户之前喜欢评论。

的事情是当客户端得到一个页面,意味着我必须执行20个查询与表“喜欢”来检查,如果用户收到喜欢它的意见,那将是非常糟糕的设计,我认为。我知道我可以使用一些缓存,比如Redis,下一步,我想知道什么是mysql方式的好方法?

+0

在您的查询中使用“LEFT JOIN”可在您收到评论的同时从用户的“Like”表中获取信息。 – Barmar

+0

感谢您的回复,Barmar先生,LEFT JOIN将保存我的查询数量,这可能是最有效的工作方式,非常感谢。顺便说一句,是不是在这种情况下常见的做法?^ _^ –

我想这些评论存储在一个表中,并且因此会有一个comment_id。

与具有user_id的用户相同。

喜欢的内容存储在名为Likes的表中,并且有两列:user_id和comment_id。既作为评论表和用户表的外键。

他们一起构成表中的主键喜欢。从而防止重复。

如果用户123想要再次评论1000,则会导致123-1000组合的重复键错误。 因此,在插入之前,您的应用程序不需要检查:插入将会失败。在您的应用程序中,识别该错误消息并给出错误消息的任务

+0

是的,它会自动定义坏'喜欢'时插入表“喜欢”,但nouse查询... –

+0

我明白你需要这个知道插入是否被允许的信息。但是你还需要它在每个长列表中的记录?如上面Barmar所建议的那样,左连接就是这样 –