Core data 在核心数据中维护复杂的单向关系

Core data 在核心数据中维护复杂的单向关系,core-data,Core Data,我正在将领域中的数据模型迁移到核心数据(这样我就可以与集成同步)。该模型是一个图,在领域中,我自己通过事务中的删除等规则来管理图的完整性 我在这里制作了一个示例图,旨在描述问题的症结所在 我的图形中的所有对象都是对象。事物与其子事物之间有着有序的关系。但是,子内容有多种方式可以链接。例如,一个DerivedFromThing类型有两对多的关系(它们的反义词在另一个事物的子事物中) 因此,我的图有一整套反向关系,但不是一种在核心数据中似乎可以建模的方式 因为我已经有了管理诚信的代码,我很高兴自己

我正在将领域中的数据模型迁移到核心数据(这样我就可以与集成同步)。该模型是一个图,在领域中,我自己通过事务中的删除等规则来管理图的完整性

我在这里制作了一个示例图,旨在描述问题的症结所在

我的图形中的所有对象都是对象。事物与其子事物之间有着有序的关系。但是,子内容有多种方式可以链接。例如,一个DerivedFromThing类型有两对多的关系(它们的反义词在另一个事物的子事物中)

因此,我的图有一整套反向关系,但不是一种在核心数据中似乎可以建模的方式

因为我已经有了管理诚信的代码,我很高兴自己来处理所有的关系。然而,我在构建中收到警告,所以我想再次检查我是否采取了正确的方法

有没有一种方法可以在核心数据中为我的许多关系建模?如果不是的话,我是否会忽视我的警告而面临一些问题


谢谢。

我建议您避免CoreData中的单向关系:根据我的经验,当您不谈论反向时,CD会隐式地将其视为“对一”,这可能不是您想要的

虽然CD可以处理许多关系,但在您的情况下,我认为您可能需要通过直接建模一个中间实体(或可能两个或更多)来实现您的关系。例如,您可能有一个名为
Association
的实体,具有

  • associationType
    的属性(“父级”、“超级级”或其他类型)
  • 与事物实体关联的一对一关系(与多对反)
  • 从关联到派生自实体的一对一关系(也带有一对多逆)

很难给出进一步的建议,因为我怀疑您的真实模型比您的示例更复杂,但是上面的方法应该提供很好的灵活性。有关更多信息,请参见中的“基于语义对关系建模”。

我建议避免CoreData中的单向关系:根据我的经验,当您对反向关系只字不提时,CD会隐式地将其视为“对一”,这可能不是您想要的

虽然CD可以处理许多关系,但在您的情况下,我认为您可能需要通过直接建模一个中间实体(或可能两个或更多)来实现您的关系。例如,您可能有一个名为
Association
的实体,具有

  • associationType
    的属性(“父级”、“超级级”或其他类型)
  • 与事物实体关联的一对一关系(与多对反)
  • 从关联到派生自实体的一对一关系(也带有一对多逆)

很难给出进一步的建议,因为我怀疑您的真实模型比您的示例更复杂,但是上面的方法应该提供很好的灵活性。有关更多信息,请参阅中的“基于语义建模关系”。

非常感谢。这是一个非常清楚的解释,说明了我如何能够完整地描述这个结构。我将尝试这种方法。这将使事情变得更加复杂,但我不想陷入意想不到的假设。这并不像我希望的那样。要使中间实体工作,我要么需要有多个派生的中间实体类型(例如,一个连接子事物和超事物,一个连接子事物和父事物),要么必须在事物上有一个通用的“超事物”链接,才能使用这里建议的associationType。我会仔细研究这两个问题,看看哪一个最优雅。非常感谢。这是一个非常清楚的解释,说明了我如何能够完整地描述这个结构。我将尝试这种方法。这将使事情变得更加复杂,但我不想陷入意想不到的假设。这并不像我希望的那样。要使中间实体工作,我要么需要有多个派生的中间实体类型(例如,一个连接子事物和超事物,一个连接子事物和父事物),要么必须在事物上有一个通用的“超事物”链接,才能使用这里建议的associationType。我将研究这两个问题,看看哪一个最优雅。