アソシエーション End の多重度
"アソシエーション End の多重度" は、アソシエーションの 1 つの End に存在できるエンティティ型のインスタンス数を定義します。
アソシエーション End の多重度には、次のいずれかの値を指定できます。
1 つ (1): アソシエーション End に 1 個のエンティティ型インスタンスが存在することを示します。
0 または 1 (0..1): アソシエーション End に 0 個か 1 個のエンティティ型インスタンスが存在することを示します。
多数 (*): アソシエーション End に 0、1 つ、または複数のエンティティ型のインスタンスが存在することを示します。
アソシエーションは、多くの場合、そのアソシエーション End の多重度により特徴付けられます。 たとえば、アソシエーション End の多重度が 1 (1) と多数 (*) の場合、アソシエーションは一対多のアソシエーションと呼ばれます。 次の例で、PublishedBy
アソシエーションは一対多のアソシエーションです (出版社が多くの書籍を出版し、書籍は 1 社の出版社により出版されます)。 WrittenBy
アソシエーションは多対多のアソシエーションです (書籍の著者が複数の場合があり、著者は複数の書籍を執筆することができます)。
例
下のダイアグラムは、PublishedBy
および WrittenBy
という 2 つのアソシエーションの概念モデルを示しています。 PublishedBy
アソシエーションのアソシエーション End は Book
および Publisher
のエンティティ型です。 Publisher
End の多重度は 1 (1) で、Book
End の多重度は多数 (*) です。
ADO.NET Entity Framework では、概念スキーマ定義言語 (CSDL) と呼ばれるドメイン固有言語 (DSL) を使用して、概念モデルを定義します。 次の CSDL は、上のダイアグラムに示された PublishedBy
アソシエーションを定義しています。
<Association Name="PublishedBy">
<End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
<End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
</Association>