2012-07-13 52 views
0

我有以下幾點:核心數據建模多到很多

新政聯繫和DealContact。 A 交易可以有很多聯繫人。 A 聯繫人可以屬於很多特價DealContact用於維護的這兩種使用兩個關係:到一個稱爲交易一對多稱爲接觸。我還需要在DealContact中單獨存儲主要聯繫人。這是另一個一對一關係叫做主要

聯繫然後有一個逆一對多DealContact稱爲dealcontacts,並呼籲primarydealcontact一個到一個。 A 交易沒有與交易聯繫相反。一筆交易也沒有直接關係聯繫

在SQL我將使用一個連接表已經仿照此。我試圖通過使用DealContact,因爲我需要額外的屬性存儲,除了交易和相關的聯繫人

上如果設置是正確的或者是更簡單的設置將是非常有益的任何建議。

回答

0

事實證明,在重新設計我的Core Data模型並刪除DealContact實體後,我發現實際上並沒有將DealContact對象(具有核心數據訪問器)傳遞給removeContactsObject集合。清除此問題後(通過從模型中一起移除DealContact實體,大大簡化了這一問題)[處理removeContactsObject:oneContact]完全按預期工作。

2

讓我把東西放下一個小老同學ASCII模式。

Deal 
- stuff 

Contact 
- stuff 
- dealcontacts ->> DealContact 
- primarydealcontact -> DealContact 

DealContact 
- stuff 
- deal -> Deal 
- contacts ->> Contact 
- primary -> Contact 

好的。

這東西不是非常coredataish。

第一件事第一件事。

Deal:我不明白這一點不會有一個反比關係到DealContact.deal。您必須手動處理Deal刪除操作,以確保沒有相關的Deal而沒有DealContact。這種相反的關係幾乎無濟於事。

Contact:爲什麼Contact.primarydealcontract是一對一的關係?您確定Contact不能成爲幾個Deal的主要聯繫人嗎?

無論如何細節。讓我們來討論一下不是非常低調的。 DealContact

該實體的要點是什麼?基本上,你有Deal連接到很多Contact,包括主ContactDealContact中的其他字段肯定與DealContact相關,那麼爲什麼要爲他們設立專門的實體?

這是我所看到的實體:

Deal 
- stuff // from Deal & from DealContact 
- contacts ->> Contact 
- primarycontact -> Contract 

Contact 
- stuff 
- deals ->> Deal.contacts 
- dealsprimary ->> Deal.primarycontact 

核心數據將創造必要的關係表來跟蹤許多一對多的關係。核心數據做得很好。

當然,我不知道你的應用程序的所有細節,所以我的建議是,好,一個建議。而已。它可能適合您的需要,或不適合。但考慮你所說的話,它應該適合你。

+1

感謝您的出色建議。這極大地幫助消除了我的模型的複雜性並簡化了應用程序的整體。但這並未解決問題。見下面的解決方案。 – 2012-07-14 22:04:26