解析数据库设计:如何获取特定类别的所有帖子

Parse DB Design: How to get all the posts for particular category

我正在使用 Parse.com

创建一个讨论系统

在我的[简化]系统中,有PostCategoryComment

如您所想,Post可以属于一个或多个Category,也可以有多个Comment

但是,用户通常希望在 Category 中看到所有 Post。如果我这样设置我的数据库

Post (name, content, categories)
Category(name)

我担心查询 Category 中的所有 Post 会非常低效(因为它必须检查每个 [=12= 的 categories 字段].

但是,如果我像这样设计数据库

Post (name, content)
Category(name, posts)

我查询 Categorys a Post 属于什么对我来说效率很低,因为它必须搜索所有 Category 中的所有 Posts 数组]s。

我确定这一定是一个常见的数据库设计难题,但我对此还是个新手。处理和解决此问题的最佳方法是什么?

您要查找的是 PostCategory 之间的 bi-directional、many-to-many 关系。使用 Parse,您至少可以采用三种方法。

  1. 您可以将列作为 PFRelation 添加到 Post table。您可以向 Post 询问其 categories 关系,从中创建查询并 运行 它。相反,如果您有一个 category,您可以在 categories 键上使用 where 子句创建一个 Post 查询。 PFRelation如果你有大 collections 就很好 collections。
  2. 如果您认为关系模型更好,只需创建一个名为 CategoryPosts 的 "join" table。它将有两个指针列,一个用于 Post,另一个用于 Category。这样也很高效。
  3. 最后,您可以将数组列添加到 class。由于所有结果都是一次加载的,因此这最适合较小的 collections.

这些选项在 Parse Relations Documentation 中有更详细的描述。