核心数据建模多到很多

问题描述:

我有以下几点:核心数据建模多到很多

新政联系和DealContact。 A 交易可以有很多联系人。 A 联系人可以属于很多特价DealContact用于维护的这两种使用两个关系:到一个称为交易一对多称为接触。我还需要在DealContact中单独存储主要联系人。这是另一个一对一关系叫做主要

联系然后有一个逆一对多DealContact称为dealcontacts,并呼吁primarydealcontact一个到一个。 A 交易没有与交易联系相反。一笔交易也没有直接关系联系

在SQL我将使用一个连接表已经仿照此。我试图通过使用DealContact,因为我需要额外的属性存储,除了交易和相关的联系人

上如果设置是正确的或者是更简单的设置将是非常有益的任何建议。

事实证明,在重新设计我的Core Data模型并删除DealContact实体后,我发现实际上并没有将DealContact对象(具有核心数据访问器)传递给removeContactsObject集合。清除此问题后(通过从模型中一起移除DealContact实体,大大简化了这一问题)[处理removeContactsObject:oneContact]完全按预期工作。

让我把东西放下一个小老同学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