核心数据:我可以向父实体添加关系吗?

时间:2011-04-26 17:04:12

标签: core-data attributes entity-relationship parent nsmanagedobject

我制作了Photo实体,该实体具有Data属性来存储图像数据。 PhotoThumbnail实体的父级。我还在PhotoThumbnail之间添加了一对一关系,以便Photo可以拥有Thumbnail

这似乎有效,但有点令人困惑。

你认为设计另一个名为Image的实体具有图像数据属性并制作Photo& Thumbnail的{​​{1}}个孩子?

1 个答案:

答案 0 :(得分:1)

  

你认为这是更好的设计吗?   制作另一个名为Image的实体   具有图像数据属性和make   照片& Image的缩略图子项?

你不应该将实体继承视为一种整洁设计的手段,而应该使用它来使多个实体可以生成相同的关系。

假设您有一个Person实体,该实体具有图像数据,但图像的大小或类型不同,但您需要所有图像实体处于相同的关系中。你会这样设置:

Person{
    images<-->>Image.person
}

Image{
    person<<-->Person.images
}

GIF:Image{
    //... GIF related attributes
}

JPG:Image{
    //... JPG related attributes
}

由于GIFJPG实体继承自Image,因此您可以将两者都置于Person.images关系中。

在您的情况下,除了类比之外,似乎没有特别的理由使PhotoThumbnail继承自公共超级实体。

此外,如果您使用的是SQLite存储,则父实体的所有子实体最终都在同一个表中。对于非常大的数据集,这可能会产生性能问题。所以,这是另一个不使用实体继承只是为了整洁的原因。