CoreData基礎:オブジェクトグラフ
2007/03/30 (Fri) 22:07:46 JST
オブジェクトグラフとは、オブジェクトとリレーションシップの集合です。Core Dataの機能を理解するには、オブジェクトグラフとは何か、特にリレーションシップがどのように実現されるのかを知ることが重要です。
大抵のアプリケーションでは、モデルオブジェクトの管理 (Model-View-Controllerデザインパターンのモデル) の処理に集中します。この処理がアプリケーション中のデータ処理につながります。例えば描画用オブジェクトやTo-do項目、従業員オブジェクトです。次の例はこのドキュメントの全体に渡って使われるので、覚えておいてください。
例として従業員を表すEmployeeオブジェクトを挙げます。このオブジェクトは属性にファーストネーム、ラストネーム、給与を持ち、自分の所属する管理者と部署へのリレーションシップを持ちます。(プロパティ、属性、リレーションシップの違いは "Data Modeling Guide" を参照してください)部署は、属性に名前と予算を持つDepartmentオブジェクトです。
3種類のオブジェクト - 従業員、マネージャー (従業員でもあります) 、勤務部署 - は、図 1 のような小さいオブジェクトグラフを構成します。 オブジェクトグラフ中、オブジェクトからオブジェクトへの参照が1対1のリレーションシップで、その参照を複数持つコレクションオブジェクトからの参照が1対多のリレーションシップです。
従業員とマネージャ・部署間のリレーションシップについては、逆方向のリレーションシップも考慮する必要があります。つまりマネージャーへの報告である、マネージャー・従業員間のリレーションシップ (directReports
) と、部署・従業員間のリレーションシップ (employees
) です。この例ではどちらの逆方向リレーションシップもモデル化されています。ただし、リレーションシップを一方向のみにすることもできます。 従業員がどの部署に所属するのかを知る必要がなければ、リレーションシップを定義する必要はありません。
このほかに、Core Dataフレームワークはフェッチプロパティというリレーションシップも定義しています (上図には含まれていません) 。フェッチプロパティは、単方向の弱いリレーションシップです。例えば、オブジェクトのプロパティを表示するiTunesの動的なプレイリストがあるとします。各曲が特定のプレイリストに所属することなく、かつ曲が消されたり、リモートサーバからアクセス不可になっても、プレイリストは曲を保持することができます。
注意: このドキュメントでは、説明しやすくわかりやすい従業員の例を使います。このモデルは (Core Dataが扱う) 問題領域を理解するのに十分な要素を持っています。しかし、Core Dataフレームワークの便利なところは、クライアント - サーバ型に代表されるデータベースアプリケーションに限らず対応できる点です。Sketchのようなベクターアート描画アプリケーションから、Keynoteのようなプレゼンテーションアプリケーションまで使えます。
Inverse Pages: CoreData基礎