0

在 iOS 上 Swift 的 Parse.com API 参考中,根据多方的预期大小,何时使用不同类型的一对多关系非常清楚。

但我发现当双方都非常大时,使用哪种多对多关系不太清楚。

就我而言,我有一个可以做出小额(通常是一美元)贡献的Charity对象——所以可以想象每个人都可以做出数千个这样的贡献,每个人都可以有数千个贡献给它。UsersUserCharityUsers

为这类事情列出的多对多选项是解析关系、连接表和数组,文档对此进行了解释:

  • 当关系可靠地包含少于 100 个引用时,应该使用数组,这是非常清晰和有用的指导,我不应该使用数组。
  • 文档说 Parse Relations 可以用于,例如,连接Books多个AuthorsAuthors多个Books- 在这种情况下,给定Book的不太可能超过 100 Authors,并且很少会Author超过 100 Books-所以不清楚这是否是当双方都可能非常大时是合适的,就像我的情况一样。
  • 文档说,当额外的元数据应该附加到每个关系时,应该使用连接表,所以一方面,我目前没有明确的需要,另一方面,文档似乎甚至没有提到任何东西关于多对多关系的每一方的大小如何或是否重要。

在没有任何其他信息的情况下,看起来我应该使用 Join Tables,但这只是因为文档并不暗示我不应该,而不是因为文档说我应该

这似乎是一个站不住脚的理由。

我将非常感谢任何人可以提供的任何指导。

4

1 回答 1

2

在幕后,当您使用 Relation 时,Parse Server 会自动为您创建一个 Joint Table 并提供一些 API,以便轻松管理和获取其数据。因此,在性能方面,它应该非常相似。

Relation 的缺点是无法将新字段添加到它创建的“联合表”中。因此,例如,如果您需要存储每个用户喜欢的慈善机构,那么 User 和 Charity 之间的关系将是一个很好的选择,因为您只需要存储该关系存在而不需要存储任何额外的信息。

另一方面,如果您需要存储每个用户对每个慈善机构所做的捐赠,我将创建一个名为 Donation 或 UserCharity 的联合表,其中包含指向 User 类的指针、指向 Charity 类的指针以及捐赠的价值。在这种情况下,Relation 不合适,因为您需要存储捐赠值。

于 2020-04-23T16:44:35.283 回答