Powered by SmartDoc

ER(エンティティリレーションシップ)モデリング

TapKitではER(エンティティリレーションシップ)モデリングを使用して、リレーショナルデータベースとオブジェクトをマッピングします。

エンティティと属性

データベースのテーブルはエンティティに、フィールドは属性にそれぞれマッピングされます。この情報を元に、データベース行はデータベースオブジェクトにマッピングされ、属性は値にアクセスするためのキーとなります。

リレーションシップ

リレーションシップは参照元の属性と参照先の属性を定義するだけの単純なものです。リレーションシップは属性と同じくデータベースオブジェクトのキーであり、データベースオブジェクトからは属性と同じようにリレーション先のオブジェクトを扱うことができます。

リレーションシップの方向性

リレーションシップは「単一方向」です。リレーションシップには参照元のエンティティと参照先のエンティティを設定しますが、これを逆にたどることはできません。つまり、リレーションシップを両エンティティから利用したいなら、両エンティティにリレーションシップを作成する必要があります。

結合

リレーションシップを作成すると、フレームワークは必要なテーブルを結合してリレーション先のオブジェクトをフェッチします。テーブルの結合方法には「内部結合、右外部結合、左外部結合、完全外部接合」のいずれかを設定します。

リレーションシップカーディナリティ

TapKitのリレーションシップには「1対1」のものと「1対多」のものがあります。「1対1」の場合はリレーション先のオブジェクトを直接参照しますが、「1対多」ではリレーション先のオブジェクトの配列を参照します。

双方向のリレーションシップ

例えばEmployee(従業員)エンティティとProject(プロジェクト)エンティティが「多対多」の関係にあるとき、「1対1」や「1対多」のリレーションシップでは実現することができません。このような「多対多」のリレーションシップを実現するには、補助となるエンティティを作成します。

補助であるEmployeeProjectエンティティからは、EmployeeエンティティとProjectエンティティに対してそれぞれ「1対1」のリレーションシップを張ります。対してEnployeeエンティティとProjectエンティティからは、EmployeeProjectエンティティに対して「1対多」のリレーションシップを張ります。