Ios CoreData-一对多关系-数据模型

Ios CoreData-一对多关系-数据模型,ios,core-data,relational-database,entity-relationship,iphonecoredatarecipes,Ios,Core Data,Relational Database,Entity Relationship,Iphonecoredatarecipes,这是我的核心数据结构。我有三个实体房间钥匙和钥匙房地图。现在我在Room和Key中有两个属性。我希望它们的ID属性都应该与第三个表KeyRoomMap关联,并且KeyRoomMap中还有多个元素suggestestplan 我的问题是 这里的结构类似于-SQL表。但我觉得这是最重要的 核心数据结构错误。我想加入keyID和roomID 与KeyRoomMap有一定关系。我怎么能这样做呢 添加keyID和roomID,应自动将其添加到 钥匙室地图 每个房间都有更多的钥匙。所以key1和key2是关

这是我的核心数据结构。我有三个实体
房间
钥匙
钥匙房地图
。现在我在
Room
Key
中有两个属性。我希望它们的
ID
属性都应该与第三个表
KeyRoomMap
关联,并且
KeyRoomMap
中还有多个元素
suggestestplan

我的问题是

  • 这里的结构类似于-SQL表。但我觉得这是最重要的 核心数据结构错误。我想加入
    keyID
    roomID
    与KeyRoomMap有一定关系。我怎么能这样做呢 添加keyID和roomID,应自动将其添加到 钥匙室地图
  • 每个房间都有更多的钥匙。所以key1和key2是关联的 对于room1,钥匙3与room2对应,钥匙4、钥匙5、钥匙6与room3对应 .我怎样才能在这里建立这样的关系
  • -----------------------编辑和添加


    实际上,我的困惑也始于key1和key2是否与Room1关联。我可以通过一对多的关系加入他们。但是keyroomMap实体的定义是为了说明key1和key2与Room1相关联。如果我不做这个表,那么仅仅是基于这么多键的关系,我该怎么说呢???

    事实上,看起来你像在计划SQL表一样

    根据你的解释,这听起来像:

    • 一个房间可以有很多钥匙

    • 一把钥匙可以打开一个房间
    因此,我想说,您房间实体上的关系将是“键”,这是一种多对多关系。请记住,在核心数据中,您还需要设置反向关系,以便关键实体上的对应关系是空间关系,并且是一对一关系

    我已将datamodel图作为下图包含在内

    我真的不确定你的钥匙室地图的目的是什么?钥匙或房间上是否存在suggestedTestPlan属性?似乎KeyRoomMap实体有两个关系,因为要使KeyRoomMap存在,它必须有一个对应的房间和键,这两个房间和键都是一对一关系。我已经包括了一个可能的图表,但没有更多的信息,我不能肯定


    编辑:否则是否建议测试计划一个可以基于其他实体派生或计算的属性?ie.Fetched properties

    嘿,Daniel,谢谢你的回答,但我真的在想我需要像这个标识符这样的属性吗?因为我使用roomID和locationID作为我的核心数据的主键,现在如果我用关系加入它们,就不需要任何ID了。是吗?是的,没错。我假设标识符是您房间的特定对象,而不是数据库id(即,在酒店房间标识符409中)。如果不是这样,你可以通过他们的关系接触他们。self.room.keys将为您提供一套该房间的钥匙。或者,如果您有一个密钥self.Key.room将为您提供相应的文件室。此外,如果您使用Xcode模型生成器,它将为您在模型类上创建方法来添加和删除对象。Xcode>编辑器>创建NSManagedObject子类。这将使用addKeyObject:(Key*)value等方法为您生成Room.h和Room.m;和addkey:(NSSet*)值;我的难题是,如果数据重复会怎样??我们不需要在每个表中都有一些独特的东西吗?我添加了更多的数据,请在您有空时也查看这些数据?