Core Dataは、オブジェクトグラフを可能な限り透過的に管理および永続化することを目的とした高レベルのライブラリです。Core Dataがデータベース内のオブジェクト(ちなみに必ずしもデータベースである必要はありません)をリンクする方法は、実装の詳細です。
モデルエディタでは、必要なエンティティを作成し、それらをリレーションシップにリンクするだけです。CoreDataが接続を管理します。
Person:
- first_name: string
- middle_name: string
- last_name: string
- private_address: -> Address (to-one relationship)
- work_address: -> Address (to-one relationship)
Address:
- persons: ->> Person (to-many relationship, you may want to reuse an address)
- address1: string
- address2: string
- zip: string
- city: string
- country: string
...
person.first_nameはその人の名を返し、person.private_address.cityはその人の居住都市を簡単に返します。address.personsは、同じアドレス(プライベートまたは/および仕事)を共有するすべての人をNSSetとして返します。address.persons.countは、そのアドレスを共有する人の数を返します。表示されるのはオブジェクトグラフです。
Core Dataは、エンティティが少なくとも保存されると、すべてのエンティティにある種の一意のID、不透明なNSManagedObjectIDを提供します。おそらく、URIRepresentationを使用したほうがよいでしょう(ここでも、エンティティが保存されたら)。店舗間の関係を作成する場合は、URIRepresentationを使用するか、独自のIDを使用できます。エンティティごとの一意のID、またはストアごとの一意のIDを維持するのはかなり簡単です。
しかし、ほとんどの場合、そのような低レベルの懸念に対処する必要はありません。Core Dataは、関係の管理に非常に優れています。