为什么一个实体需要一个逆向的?

我有一个非常简单的核心数据模型,包含一个包含多个图像的图库。 在我看来,画廊与图像有一对多的关系就足够了,但是如果我也不build立从图像到图库的反向关系,我会得到编译器的警告和错误。 从面向对象的angular度来看,在我看来,一个Image不应该知道或在乎它是否在一个Gallery或任何其他ManagedObject中,那么为什么编译器会迫使我创build这种反向关系呢? 在图像上拥有“画廊”属性似乎是非常错误的。

核心数据使用反向关系来帮助保持参照完整性。 当你改变一个关系或删除一个对象时,它会显着提高性能。 如果没有这些相同的动作,那么可能会导致全表扫描。

在我看来,没有反过来应该是一个错误,而不是一个警告。 在一些相当常见的情况下,这种差别可能会很大。

试想一下没有它们的多实体级联删除。 可能花费足够的时间,操作系统认为你的应用程序已经崩溃。

我认为你不能将oo原则应用于数据库结构 – 它们不在同一个域中。 核心数据是关于表和行以及它们之间的指针。 让我们看看参照完整性和你的画廊的例子。 如果您从图像到图库没有关系,那么当您删除图像时,系统将不知道在图库中删除其引用。 你可能会认为这种细节应该被照顾,但是我认为你是这样的,你应该接受它。 也许发送一个错误报告给苹果公司..