Entity Data Model のリレーションシップ

リレーションシップは、複数のエンティティ間の論理的な関係です。アプリケーション内で特定の意味を持つデータには、その構成要素間にリレーションシップが存在します。データ モデリングにはリレーションシップが不可欠です。しかし、リレーショナル データベース モデルでは、リレーションシップが明示的にはサポートされていません。ただし、リレーションシップに含まれる一部の制約は、主キー、外部キー、および参照整合性を使って実装されています。

対照的に、エンティティ データ モデル (EDM) は、データ モデルのリレーションシップを明示的にサポートすることで、柔軟なモデリング機能を実現しています。リレーションシップのサポートは EDM クエリにも及んでおり、リレーションシップに基づく明示的な参照とナビゲーションが可能となっています。

EDM は、アソシエーションと呼ばれるピア ツー ピアのリレーションシップ モデルをサポートしています。詳細については、「アソシエーション (EDM)」を参照してください。

顧客が 1 つまたは複数の注文をするとき、各注文には製品を識別する情報が含まれており、注文した製品は 1 つまたは複数の仕入先から納品される、という状況を考えると、アソシエーションの必要性は明らかです。

EDM では、エンティティとアソシエーションが定義されているスキーマで、エンティティ間のアソシエーションが指定されます。

リレーションシップの特徴

リレーションシップは、次数、複数要素の接続性、および方向によって特徴付けられます。データ モデリングのシナリオにおけるリレーションシップは、次数 (単項、2 項、3 項、... n 項など) および複数要素の接続性 (一対一、一対多、または多対多) を持ちます。同じ型のエンティティ間のアソシエーションなど、一部のアソシエーションでは、方向が重要な意味を持ちます。

リレーションシップの特徴を次の図に示します。

単項リレーションシップ ダイアグラム2 項リレーションシップ ダイアグラム3 項リレーションシップ ダイアグラム

それぞれの図では、リレーションシップの次数が四角形の数で表されています。リレーションシップは、ダイヤ型の図形で表されます。ダイヤと四角形を結ぶ線は、そのリレーションシップにおける複数要素の接続性を表します。線が 1 本であれば、一対一のリレーションシップを表します。接続先で 3 本に分岐している線は、一対多または多対多のリレーションシップにおける "多" の終端を表しています。

次数

リレーションシップの次数は、そのリレーションシップが存在する型の数です。最も一般的なリレーションシップの次数は、2 (2 項) です。この場合は、2 つの型が関連付けられていることになります。単項リレーションシップでは、従業員と別の従業員との間の上司と部下の関係など、特定の型のインスタンスが、同じ型のもう 1 つのインスタンスに関連付けられます。3 項リレーションシップでは 3 つの型が、n 項リレーションシップでは任意の数 (n 個) の型が関連付けられていることになります。3 項リレーションシップと n 項リレーションシップは、主に理論上の説明に用いられます。EDM では、単項リレーションシップと 2 項リレーションシップがサポートされます。

複数要素の接続性

複数要素の接続性とは、型のインスタンスがいくつ関連付けられているかを表します。

書籍とその著者との間には、2 項リレーションシップが存在します。各書籍には、少なくとも 1 人の著者が存在します。このリレーションシップは、Book クラスと Author クラスとの間で指定されますが、この 2 つのクラスの関係は必ずしも一対一とは限りません。このリレーションシップにおける複数要素の接続性とは、その書籍が何人の著者によって書かれたか、および、個々の著者がこれまで何冊の書籍を執筆したかを意味します。この例におけるリレーションシップの次数は 2 項です。リレーションシップにおける複数要素の接続性は多対多となります。

方向

EDM では、すべてのリレーションシップは双方向です。EDM アソシエーションはどちらの End からでもナビゲートできます。

アソシエーションの両方の End にあるエンティティが、どちらも同じ型である場合、EDM アソシエーションの End プロパティの Role 属性を使用して方向性を指定できます。従業員と上司の間のアソシエーションが意味することと、そのアソシエーションの個々の End が意味することは異なります。アソシエーションの End はどちらも従業員ですが、それぞれに異なる Role 属性があります。このケースを、参照に関する制約を使って実装する例については、「Association 要素 (SSDL)」を参照してください。

リレーションシップの詳細については、次の各トピックを参照してください。

このセクションのトピック

参照

概念

Entity Data Model の型
エンティティの実装 (EDM)
アソシエーションの実装 (EDM)