Entity Data Model のリレーションシップ
リレーションシップは、複数のエンティティ間の論理的な関係です。アプリケーション内で特定の意味を持つデータには、その構成要素間にリレーションシップが存在します。データ モデリングにはリレーションシップが不可欠です。しかし、リレーショナル データベース モデルでは、リレーションシップが明示的にはサポートされていません。ただし、リレーションシップに含まれる一部の制約は、主キー、外部キー、および参照整合性を使って実装されています。
対照的に、エンティティ データ モデル (EDM) は、データ モデルのリレーションシップを明示的にサポートすることで、柔軟なモデリング機能を実現しています。リレーションシップのサポートは EDM クエリにも及んでおり、リレーションシップに基づく明示的な参照とナビゲーションが可能となっています。
EDM は、アソシエーションと呼ばれるピア ツー ピアのリレーションシップ モデルをサポートしています。詳細については、「アソシエーション (EDM)」を参照してください。
顧客が 1 つまたは複数の注文をするとき、各注文には製品を識別する情報が含まれており、注文した製品は 1 つまたは複数の仕入先から納品される、という状況を考えると、アソシエーションの必要性は明らかです。
EDM では、エンティティとアソシエーションが定義されているスキーマで、エンティティ間のアソシエーションが指定されます。
リレーションシップの特徴
リレーションシップは、次数、複数要素の接続性、および方向によって特徴付けられます。データ モデリングのシナリオにおけるリレーションシップは、次数 (単項、2 項、3 項、... n 項など) および複数要素の接続性 (一対一、一対多、または多対多) を持ちます。同じ型のエンティティ間のアソシエーションなど、一部のアソシエーションでは、方向が重要な意味を持ちます。
リレーションシップの特徴を次の図に示します。
それぞれの図では、リレーションシップの次数が四角形の数で表されています。リレーションシップは、ダイヤ型の図形で表されます。ダイヤと四角形を結ぶ線は、そのリレーションシップにおける複数要素の接続性を表します。線が 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)」を参照してください。
リレーションシップの詳細については、次の各トピックを参照してください。
このセクションのトピック
- アソシエーション (EDM)
ピア ツー ピアの関係をモデル化するリレーションシップについて説明します。
- ナビゲーション プロパティ (EDM)
リレーションシップをナビゲートするためのナビゲーション パスを保持するプロパティについて説明します。