2013-10-17 154 views
1

我有很多关于如何在CoreData中创建关系N:M的问题。CoreData N:M关系

如果我有两个实体A和B,并具有关系N:在ER模型M具有以产生新的表C中,将包含表A的唯一id和B.用于

实施例实体关系:

enter image description here

现在,在数据库模型:

enter image description here

考虑到前面的例子将由核心数据完成?

enter image description here

或者:

enter image description here

事实是,我真的失去了与核心数据的关系,任何帮助将受到欢迎。

对不起,我的英文,但不是很好。

+0

你的问题是没有明确。请告诉我你需要什么。 – Ganapathy

+0

第一种方案是正确的。您可以在Xcode中的CoreData中创建多对多关系。不需要创建关联实体。 –

+0

但是如第二种方案所示,我有一个关系“时间”的属性。我怎么能在CoreData中做到这一点? – Filowk

回答

2

对此的答案是,如果要存储其他信息,则即使在Core Data中也必须使用“连接表”。您不必跟踪外键,因为这是由关系覆盖的。

通常,标准DB“连接表”具有丑陋的名称,如“tableA_tableB”。你应该努力寻找一个合适的名字来使这个概念清晰。例如:

Car <<--->> Person
成为
Car <--->> Rental <<---> Person

现在实体出租,你可以添加更多的信息,如时间。因此,举例来说,如果你想找到一个特定日期(存储的NSDate在租赁实体)之前租了一辆车的所有的人,你的断言将是这样的:

[NSPredicate predicateWithFormat:@"ANY rentals.time < %@", cutoffTime] 
+0

谢谢你的回答!现在将在桌面上的NSSet A和B和表C两个NSManagedObject,但现在查询获取B中的所有数据,就像将要做的那样?您制作B或C的查询? – Filowk

+0

对不起,C有1个对象和一个对象b,但问题是一样的。这个查询可以完成B中的所有数据吗?您制作B或C的查询? – Filowk

+0

我不懂语言。在租车方面,自然语言查询是什么? – Mundi