为简单起见,假设我们有一个所有用户的单一供稿。
提要只是文章的列表。
每个用户都可以自由地收藏某篇文章或将其从个人 View 中删除。
用户删除文章不影响其他用户;每个用户都有自己的提要“ View ”。
简单方法
我设计的一个天真的方案如下:
(当然,在实际应用中,用户与文章的关系不仅仅是隐藏或加星标。)
问题
看起来应该在第一次更改选项之后延迟创建链接表条目。否则,当新用户注册或弹出新文章时,我们将不得不创建大量空链接记录,并处理并发。
这意味着为特定用户选择文章列表是一个结合了以下内容的查询:
- 选择
ArticleUserLink
不存在的所有文章; - 选择
ArticleUserLink
存在且is_hidden = 0
的所有文章。
Is
OR
the answer here, or is there a more effective database design / query to solve the problem?
最佳答案
使用内部查询怎么样?
SELECT *
FROM Article a
WHERE NOT EXISTS(SELECT * FROM ArticleUserLink WHERE article_id = a.id AND (is_hidden IS NULL OR is_hidden != 0))
关于mysql - 类似 Google Reader 的应用程序的数据库模式和查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7902333/