JST伝統的なアプリケーションデータモデルでは、変数や適当なアクセサメソッドを持つクラスを手動で定義していました。Dataフレームワークを使うと、エンティティモデルオブジェクトの抽象的な定義を提供する管理オブジェクトモデルを生成することができます。リレーションシップモデルとして知られているこのモデルは、エンティティとリレーションシップをデザインするのに十分な開発環境である、Xcodeのデータモデルデザインツールを使って定義します。アプリケーションのデータ型とリレーションシップをつなぐ青い線が実際の様子です。リレーションシップモデリングはデータ構造を記述する方法で、オブジェクト指向のシステムにマッピングすることもできます。この方法がデータベースの世界に登場してから、(もしかしたらあまり親しみのない概念かもしれませんが)次の概念を用いた技術が生まれてきました。エンティティ、データモデル中の情報の一単位です。属性、エンティティのコンポーネントです。次のような単純なスカラー値です。基本的なクラスのインスタンス。リレーションシップ、エンティティからエンティティへの参照。1対1や1対多と同様、リレーションシップは任意にも必須にもなります。プロパティ、属性とリレーションシップの総称。エンティティを持つでしょう。このエンティティは属性にタイトルとISBN番号を持ち、また他のエンティティへのリレーションシップを持ちます。エンティティなどがあります。Personエンティティはファーストネームとラストネームの属性を持つでしょう。以上のコンセプトは、オブジェクト指向プログラミングで使われるクラスとプロパティに近い点があります。リレーションシップモデリングはモデルデータとデータ間の関係に焦点を置いており、振る舞いには関与しません。エンティティと管理オブジェクト管理オブジェクトモデルの各エンティティの定義には、エンティティ名とランタイムでエンティティを表すのに使うクラス名が必要です。クラスが使われますが、このクラスのサブクラスも使うことができます。Dataフレームワークが要求する機能を実装しており、どんなエンティティに対しても使うことができます。監視することができます。KVCとKVOにより、管理オブジェクトをCocoaバインディングでシームレスに扱うことができます。必要な機能を一通り揃えていることに気付くでしょう。特定のエンティティに特別に属性や振る舞いを持たせたい場合のみ、サブクラスを実装すればいいのです。