从数据库中获取用户的文章列表的最佳做法是什么?

时间:2015-09-23 12:25:44

标签: php mysql

我正在研究CMS类型结构。我已经到了大多数一切都到位的地步,除了我一直在思考的小东西。

因此,我们假设有一个用户表和一个文章表。现在,如果有人“喜欢”某篇文章,那么用户的ID将存储在文章表格的一列中。这样的事情11241,12412,12312。 (这些是随机用户ID)

现在我们假设有一个用户的个人资料页面,我想迭代用户喜欢的帖子并在那里显示。

现在,我已经想到了两种方法。

第一种方法是用户喜欢的文章ID存储在他的行中的用户表中,我们从获得它似乎效率低下。因为如果用户喜欢很多文章,那么我可能会在数据库的列中用完空间?

第二种方法将浏览每篇文章,看看用户的ID是否存在于文章保存的同类列表中。然而,这种方法真的很慢,而且非常糟糕,IMO。

那么最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

创建一个包含两列的表:user_idarticle_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';