2011-01-26 84 views
5

我有一个数据模型我试图从基于SQLite的表结构移植到核心数据模型。我的SQLite结构有一个区域表和一个TransitLogs表。 TransitLog可以具有以下内容(在我的sqlite模式中) start_zone_id end_zone_id核心数据到同一实体的多个关系

每个都是区表的外键。这在SQL中正常工作。但是,在转向Core Data时,我无法理解如何对此进行建模。

我第一次尝试有我有一个startZone和的endzone关系,我TransitLog实体两个关系属性点到区(抱歉无法张贴的Xcode的截图,因为这是我的第一篇文章在这里)

我的问题是如何处理startZone和endzone关系属性的反向关系。我不需要他们吗?在我阅读过这个主题的文档和书籍中,最好始终使用反向关系,但如果它不适用,我想知道这种特殊情况。或者我只是在Core Data中对此进行了不正确的建模。

感谢您的任何建议。

迈克

回答

3

你可以有指向TransitLog的区域实体,称为像startLogsendLogs两个独立的一对多关系。这些将分别是startZoneendZone的逆。

+1

请注意,虽然在编译/语法意义上并非绝对需要,但反向关系对于允许CoreData在删除多个集时更新多个集是必需的。 – 2011-01-26 21:30:44

1

谢谢你们 - 这两个答案都有很大帮助。 Westsider是对的,我现在不需要从区域到TransitLogs,这就是我为什么想知道的原因。但据说我猜测我可能在某个时候需要它们(成千上万的用户渴望它)),现在可能更好地建模它。

再次感谢您的答案。

2

非平凡模型版本控制和迁移可以是一个真正的时间接收器 - 尤其是第一次。出于这个原因,以及Apple建议使用它们,我会建议添加相反的关系。

这就是说,我发现至少有一种情况下,加入反向关系根本没有意义 - 并且一切正常。但是在那种情况下,现在(并且仍然)非常难以找到一种场景,其中有史以来是有用的或必要的。