“核心数据”中的“关系基数”是什么意思?

时间:2010-06-11 16:20:36

标签: iphone core-data

来自文档:

  

如果所有的托管对象都是   关系删除规则是Nullify,   然后对于那个对象至少有   没有额外的工作要做(你可能有   考虑其他对象   关系的目的地 - 如果   反向关系也是   强制性或有下限   基数,然后是目的地   对象或对象可能在一个   无效的状态)。

有人有这个基数的例子吗?什么是有益的,有什么重要的了解? (听起来很重要......)

1 个答案:

答案 0 :(得分:4)

对象关系的基数定义了左端有多少个对象被映射到右端有多少个对象。例如,它可以是:

  • 1 : 1(一对一) - 对于左类型的每个对象,只需要一个正确类型的对象。在这种情况下,通常两个对象都有一个指向另一个对象的指针或存储它的唯一ID。
  • 1 : 1..*(一对多) - 对于左类型的每个对象,至少需要一个正确类型的对象,但可以创建更多对象。在这种情况下,通常左侧的对象不知道右侧的对象,但右侧的对象有一个指针或保留左侧对象的唯一ID。
  • 1 : 0..1(一个到可选的一个) - 对于左类型的每个对象,不需要任何正确类型的对象,但如果存在,则它必须不超过一个。在这种情况下,通常左侧的对象不知道右侧的对象,但右侧的对象有一个指针或保留左侧对象的唯一ID。
  • 1..* : 1..*(多对多) - 对于左类型的每个对象,至少需要一个正确类型的对象,但是一个正确类型的对象可能满足左侧多个对象的要求类型。在这种情况下,通常左侧和右侧的两个对象都不知道其他对象,但它们都有指向常见第三个对象的指针或保留定义关系的唯一ID。
  • 等。

请注意,在我的所有示例中,我都谈到了正确对象与左对象的关系,每个基数都可以颠倒,而且一些基数指定了双向要求(即,从右到左和左对齐) -to-右)

以下是有关数据模型Cardinality的更多信息。

特别是,核心数据的上一段说明,如果删除位于1 : 11 : 1..*1..* : 1..*关系右侧的对象(换句话说,一个或多个其他对象依赖于此特定对象的存在),此类关系左侧的对象将处于无效状态。