我正在设计一个' http api'对于客户端应用程序,它关于评论,情况是,如果应用程序用户登录,他可能喜欢一些评论而不像他们,但他们不能喜欢两次或更多次,所以每次当应用程序从我获取评论数据' http api',数据应该能够告诉客户端应用程序评论是否已被用户所喜欢。 好吧,我最近实现了api,但我发现它工作得不好,我的设计是:
插入 我创建了一张表'评论'用于保存评论(内容,创建时间等)的表格'用户'适用于应用用户,还有一张桌子“喜欢'用于记录哪个用户喜欢哪个评论的信息 当用户喜欢评论时: 1,增加记录' like_counts'在表格'评论' 2,插入表格中设置用户='用户'和评论='评论'
查询:
问题是当客户端获得一个页面的评论时,这意味着我必须使用表格' Like'执行20个查询。我认为,检查用户之前是否喜欢它,这将是非常糟糕的设计。我知道我可以使用一些缓存,比如Redis,下一步,我想知道mysql方式的好方法是什么?
答案 0 :(得分:0)
我认为评论存储在一个表中,因此会有一个comment_id。
对于具有user_id的用户也是如此。
喜欢的内容存储在名为Likes的表中,有2列:user_id和comment_id。作为comments-table和user-table的外键。
它们一起形成表Likes中的主键。从而防止重复。
如果用户123想要再次评论评论1000,则会导致123-1000组合的重复密钥错误。 所以你的应用程序在插入之前不需要检查:插入将完全失败。在您的应用程序中,任务是识别该错误消息并提供错误消息