我正在开发的网站,允许用户阅读文章。我想实现的功能,提供自动标记文章阅读时,他们是由用户访问。问题是我不知道如何在db中存储已读文章数据。可能会有成千上万的文章和成千上万的用户。将每个项目/用户的行存储在“read文章”连接表中似乎是一种低效的方法。还有其他选择吗?
发布于 2013-05-12 17:57:20
可能有成百上千的文章和成千上万的用户。将每个项目/用户的行存储在“read文章”连接表中似乎是一种低效的方法。
每个{user, article}对存储一行的方案是正确的。认为拥有大量行会使此方案效率低下的说法是不正确的:现代数据库已经过优化,可以非常高效地处理大量行。
此外,“几十万篇文章和几千个用户”将转化为许多行的暗示也是不正确的:您将为用户阅读的每篇文章存储一行,而不是为每篇文章存储一行,因此您得到的行数将比最坏情况估计的行数少几个数量级。
发布于 2013-05-12 17:57:23
根据您的策略:
如果您为每个用户存储唯一的文章(稍后阅读功能),则可以存储文章的状态。
如果你有一组任何用户都可以阅读的文章,那么你就正确地引入了额外的表来存储阅读状态。我看不出这种方法有什么错。
https://stackoverflow.com/questions/16506098
复制相似问题