0

enter image description hereCoreData - 一對多關係 - 數據模型

這是我的核心數據結構。我有三個實體RoomKeyKeyRoomMap。現在我在RoomKey中有兩個屬性。我希望他們兩個的ID屬性應該與第三個表KeyRoomMap相關聯,並且在KeyRoomMap中還有更多的一個元素SuggestedTestPlan

我的問題是

  1. 這就好比結構 - 在這裏SQL表。但是我覺得這是核心Data中的錯誤結構 。我想加入keyIDroomID 與KeyRoomMap有一些關係。我怎麼能這樣做,就像我 添加keyID和roomID,它應該被自動添加到 KeyRoomMap?
  2. 每個房間都有更多的鑰匙。所以key1,key2與room1相關聯 ,key3與room2和key4,key5,key6與room3 。如何在這裏建立這樣的關係?

-----------------------編輯和添加

其實我的困惑也開始與key1的,如果和鍵2與會議室1相關。我可以加入他們與那裏的一對多關係。但keyroomMap實體被定義爲說key1和key2與Room1相關聯。如果我不製作這張表,那麼只有在這麼多的關鍵字的基礎上,我應該怎麼說?

回答

1

事實上,它看起來像你正在計劃它像SQL表。

從你的解釋聽起來:

  • 一個房間可以有多個按鍵

  • 一鍵即可解鎖一個房間

所以我會說你房間實體的關係ld是'鑰匙',這是一對多的關係。請記住,在覈心數據中,您還需要設置反向關係,因此關鍵實體之間的對應關係將是空間並且是一對一的關係。

我已經在下面的圖像中包含了數據模型圖。

Room - Key Model

我真的不知道你的目的是什麼的KeyRoomMap?那麼建議TestPlan屬性是否存在於Key或Room上?看起來KeyRoomMap實體似乎有兩個關係,因爲KeyRoomMap存在,它必須有一個對應的Room和Key,這兩個關係都是一對一的關係。我已經包含了一個可能的圖表,但沒有更多信息,我無法確定。

Room - Key - RoomKeyMap Model

編輯:否則是suggestedTestPlan可能基於其他實體衍生或計算的屬性?即。獲取屬性https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdRelationships.html#//apple_ref/doc/uid/TP40001857-SW7

+0

嘿丹尼爾感謝您的回答,但我真的在想我是否需要像這個標識符的任何屬性?因爲我在我的核心數據中使用了roomID和locationID作爲主鍵,現在如果我將它們與關係結合在一起,那麼不會有任何需要的ID。對 ? –

+0

是的,這是正確的。我曾假設標識符是特定於你的房間而不是數據庫標識符的東西(即在酒店房間標識符409中)。如果不是這種情況,你可以通過他們的關係訪問他們。 self.room.keys將爲您提供該房間的一組密鑰。或者如果你有一個key self.key.room會給你相應的房間。 –

+0

另外,如果您使用Xcode模型生成器,它將在您的模型類上爲您創建方法來添加和刪除對象。 Xcode> Editor>創建NSManagedObject子類。這將使用addKeyObject:(Key *)值等方法爲您生成Room.h和Room.m;和addKeys:(NSSet *)值; –