我正在研究CMS类型结构。我已经到了大多数一切都到位的地步,除了我一直在思考的小东西。
因此,我们假设有一个用户表和一个文章表。现在,如果有人“喜欢”某篇文章,那么用户的ID将存储在文章表格的一列中。这样的事情11241,12412,12312
。 (这些是随机用户ID)
现在我们假设有一个用户的个人资料页面,我想迭代用户喜欢的帖子并在那里显示。
现在,我已经想到了两种方法。
第一种方法是用户喜欢的文章ID存储在他的行中的用户表中,我们从但获得它似乎效率低下。因为如果用户喜欢很多文章,那么我可能会在数据库的列中用完空间?
第二种方法将浏览每篇文章,看看用户的ID是否存在于文章保存的同类列表中。然而,这种方法真的很慢,而且非常糟糕,IMO。
那么最佳做法是什么?
答案 0 :(得分:2)
创建一个包含两列的表:user_id
和article_id
。当用户“喜欢”某篇文章时,请在此表格中插入一行。然后,当您想要查看用户#123喜欢的文章时,您可以发出如下查询:
SELECT `article_id` FROM `article_user` WHERE `user_id` = '123';
如果您需要文章数据,只需加入article_id
列即可:
SELECT `article`.*
FROM `article`
LEFT JOIN `article_user` ON `article`.`id` = `article_user`.`article_id`
WHERE `article_user`.`user_id` = '123';