让我用一个小的老式 ASCII 模型来说明问题。
Deal
- stuff
Contact
- stuff
- dealcontacts ->> DealContact
- primarydealcontact -> DealContact
DealContact
- stuff
- deal -> Deal
- contacts ->> Contact
- primary -> Contact
好的。
这东西不是很核心。
先说第一件事。
Deal: 我看不出与 不成反比的意义DealContact.deal。您必须Deal手动处理删除,以确保没有DealContact相关的Deal. 这种反向关系几乎不会让你付出任何代价。
Contact: 为什么是Contact.primarydealcontract一对一的关系?你确定一个Contact不能是几个的主要联系人Deal?
无论如何都要详细说明。让我们讨论什么不是非常核心数据。DealContact.
那个实体有什么意义?基本上,您已Deal连接到许多Contact,包括主要的Contact. 中的附加字段DealContact肯定与 theDeal或 a相关Contact,那么为什么要为它们提供专用实体呢?
这就是我看到实体的方式:
Deal
- stuff // from Deal & from DealContact
- contacts ->> Contact
- primarycontact -> Contract
Contact
- stuff
- deals ->> Deal.contacts
- dealsprimary ->> Deal.primarycontact
Core Data 将创建必要的关系表来跟踪多对多关系。Core Data 在这方面做得很好。
当然我不知道你申请的所有细节,所以我的建议是,好吧,一个建议。而已。它可能适合您的需求,也可能不适合。但考虑到你所说的,它应该对你有用。