核心数据查找表

时间:2011-04-23 04:49:09

标签: iphone core-data

如何使用Core Data建模可变查找表?

说我有一张叫做“绘画”的桌子。每幅画可以有一个或几个“颜色”,例如“红色”,“蓝色”等。因此,“颜色”表是共享的。

我该如何建模?

我希望能够通过添加或删除颜色来修改“颜色”表。

3 个答案:

答案 0 :(得分:2)

如果您希望能够将遍历所有使用该颜色的绘画对象,那么您可能希望使用多对多的绘画 - >>颜色与多对反关系颜色 - >>绘画。这似乎可能就是你要找的东西。

另一方面,如果你不需要从Color转换到绘画,那么这可能是你想要放弃反向关系并且只需要多次绘画的罕见情况之一 - > >颜色

修改

如果您希望能够删除由绘画引用的颜色,那么您可能希望保持这两个实体之间的反向关系。此外,您需要在Color - >>绘画和绘画 - >>颜色关系上定义'删除规则'。在这两种情况下,“无效”似乎是最好的选择。因此,当删除颜色时,所有引用它的绘画都会使该引用无效(删除)。同样,当删除一幅画时,引用它的所有颜色都将停止引用它。

换句话说,不需要检查查找失败。也就是说,防御性编码始终是一种好习惯。

答案 1 :(得分:1)

是的,多对多关系是建模的正确方法。

答案 2 :(得分:1)

你需要一个像这样的数据模型:

Painting{
    name:string
    colors<<-->>Color.paintings
}

Color{
    name:string
    paintins<<-->>Painting.color
}