首页 > 解决方案 > CoreData 外键/与同一张表的关系

问题描述

我无法弄清楚如何在 CoreData 中快速建模以下内容,因为它看起来不像在 SQL 中那么简单。我想要两个表中间的外键表,例如,

项目 ID、名称

资源 ID、名称

共享 资源 Project1_id、Project2_id、Resource_id

所以这个 SharedResource 实体我无法使用 CoreData 关系来解决 - 它会是一个具有三个 1:1 关系的新表吗?还是我完全偏离了轨道?

非常感谢 :)

标签: swiftcore-datadatabase-design

解决方案


具有三个关系的新实体(Core Data 没有说“表”)是一种方法。那看起来像这样。

具有 3 个关系的 SharedResource

主要缺点是如果不更新数据模型,就无法更改SharedResource(如果需要)上不同数量的项目。

另一种方法是使用两个关系,将SharedResource->Projects关系作为一对多关系,如下所示:

具有多对多关系的 SharedResource

这是灵活的,因为它可以允许任意数量的Projects单个SharedResource. 但是,如果您确实需要将其限制为 2,则需要在数据模型中设置最大计数(以便 Core Data 可以在您保存更改时验证限制),或者编写代码来强制执行限制。


推荐阅读