次の方法で共有


エンティティとリレーションシップ (EDM)

エンティティ データ モデル (EDM) は、エンティティ関係 (ER) モデルです。標準的な基幹業務 (LOB) アプリケーションの場合、設計の初期段階ではデータの構造が抽象的です。アプリケーションが各種のデータを論理的な構造としてどのように保持するかは、設計時に指定する必要があります。たとえば、注文、顧客、注文明細、住所、仕入先、製品、従業員などをデータ構造で表現することになりますが、その多くはきわめて複雑です。エンティティは、基本的な概念が確認されて初めて、データ構造の細部を決める正式な仕様として用いることができます。

たとえば、Customer データ型は、連絡先名、会社名、住所、一意の識別子など、顧客ごとの詳細な情報を格納できるように設計されます。Order 型であれば、注文日、注文明細、期日、一意の識別子などのデータが格納されます。その他多くのデータ モデルと同様、EDM は、注文とその顧客の論理的な関係をリレーションシップとして表現します。

次の図は、データ構造の詳細を示したうえで、EDM によって指定されたエンティティとリレーションシップの概念を基に、それらをモデル化したものです。この図の中で、エンティティは四角形で表され、リレーションシップは四角形と四角形を結ぶ線で表されています。四角形内のテキストは、エンティティのプロパティを表します。

Customer、Order、OrderLines のダイアグラム

EDM では、最上位の概念のみをエンティティと呼びます。この図では、Customer が最上位の概念にあたり、エンティティとしてモデル化されています。EDM では、Customer エンティティが基本 EntityType から派生されます。

下位のデータ要素は、エンティティのプロパティと呼ばれます。Customer エンティティには、CustomerIDCompanyNameContactNameAddressPhone の各プロパティが存在します。それぞれのプロパティには、データ型があります。たとえば、CustomerID は文字列です。CompanyName および ContactName も同様です。

この図の Address プロパティは、複数種類の情報を格納する内部的な構造を持っているという点で、他のプロパティとは異なります。EDM では、この Address のように、入れ子のデータ構造をエンティティとしてモデル化し、アソシエーションとナビゲーション プロパティを使ってそのエンティティに関連付け、その内部でプロパティとして使用できます。

Customer 型と Address 型は、どちらも複数のプロパティから成る内部的な構造を持つという点では共通していますが、意味においても運用においても、CustomerAddress は異なります。通常、Customer は、クエリの単位として、または、データの変更処理や保存の単位として使用されます。一方、Address は、常に Customer データ型内に存在し、個別に使用されることはまずありません。

エンティティ間のリレーションシップは、アソシエーションを使ってモデル化されます。アソシエーションとは、CustomerOrder の関係など、エンティティ間のリレーションシップをいいます。すべての Order には、対応する Customer が必ず存在します。OrderCustomer は、論理的な関係はあるものの、独立したエンティティとして存在します。アソシエーション リレーションシップの詳細については、「アソシエーション (EDM)」を参照してください。

Order とその OrderLine アイテムなど、一方のエンティティが論理的にもう一方のエンティティを制御するようなリレーションシップも、アソシエーション リレーションシップで表現されます。各 Order は、少なくとも 1 つの OrderLine で構成されます。たとえば、Customer が製品番号 49 を注文した場合、注文された品目の情報は OrderLine で構成されます。OrderLine が、Order なしで存在することはできません。

参照

概念

エンティティの実装 (EDM)
アソシエーションの実装 (EDM)

その他のリソース

スキーマおよびマッピング スキーマ (Entity Framework)