核心数据建模多到很多
我有以下几点:核心数据建模多到很多
新政,联系和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
,包括主Contact
。 DealContact
中的其他字段肯定与Deal
或Contact
相关,那么为什么要为他们设立专门的实体?
这是我所看到的实体:
Deal
- stuff // from Deal & from DealContact
- contacts ->> Contact
- primarycontact -> Contract
Contact
- stuff
- deals ->> Deal.contacts
- dealsprimary ->> Deal.primarycontact
核心数据将创造必要的关系表来跟踪许多一对多的关系。核心数据做得很好。
当然,我不知道你的应用程序的所有细节,所以我的建议是,好,一个建议。而已。它可能适合您的需要,或不适合。但考虑你所说的话,它应该适合你。
感谢您的出色建议。这极大地帮助消除了我的模型的复杂性并简化了应用程序的整体。但这并未解决问题。见下面的解决方案。 – 2012-07-14 22:04:26