2012-06-20 10 views
2

說,我們有2個實體:父母子女級聯刪除如何在coredata作品中的多對多關係中起作用?

父母被刪除,那麼所有兒童也被刪除。

太好了。

現在我們有一個名爲的愛好者

每個人都可以「愛」許多其他人並被許多人所喜愛。

如果個人被刪除會發生什麼?

是否級聯刪除:

  1. 不要在所有的工作?
  2. 當你最後一個愛你的人被刪除時刪除你嗎?

還是什麼?

回答

1

我認爲你不應該以這種方式使用級聯,因爲它會刪除你刪除的對象的所有愛好者,它可能會越來越多,並刪除整個數據庫。

因此,對您而言,更好的方法是擁有一箇中間(「加入」)實體,例如loverInfo。 下面是,蘋果建議你如何做到這一點,基於的朋友的關係。

一個最初被建模爲多對多關係的常見示例是「朋友」。雖然你是你表哥的表弟,不管他們喜不喜歡,但你不一定是你朋友的朋友。對於這種關係,您應該使用中間(「連接」)實體。中間實體的一個優點是,您還可以使用它來爲關係添加更多信息,例如,「FriendInfo」實體可能會包含一些關於具有「排名」屬性的友誼強度的指示。這是這裏

FIgure 3

說明在這個例子中,人有兩個一對多關係到FriendInfo:朋友們表示源人的朋友,befriendedBy代表那些誰算源作爲他們的朋友。 FriendInfo代表關於一個友誼的信息,「朝一個方向」。給定的實例記錄了消息來源是誰,以及他們認爲是他們的朋友的一個人。如果感覺是相互的,那麼會有一個相應的源和朋友交換的實例。與這種模式的交易時還有其他幾方面的考慮:

  • 從一個人建立了友誼到另一個,你必須 創建FriendInfo的一個實例。如果兩個人都喜歡對方,那麼你的 必須創建FriendInfo的兩個實例

  • 要打破友誼,必須刪除相應的FriendInfo實例 。

  • 從Person到FriendInfo的刪除規則應該是級聯的。如果 人被從商店中刪除,則FriendInfo實例 變得無效,因此也必須移除。
  • 作爲推論,從FriendInfo到Person的關係必須不是 是可選的 - 如果來源或朋友爲空,則FriendInfo的實例無效。
相關問題