엔터티 집합

엔터티 집합은 엔터티 형식의 인스턴스 및 해당 엔터티 형식에서 파생된 형식의 인스턴스에 대한 논리적 컨테이너입니다. (파생 형식에 대한 자세한 내용은 엔터티 데이터 모델: 상속 참조). 엔터티 형식과 엔터티 집합 간의 관계는 관계형 데이터베이스의 행과 테이블 간 관계와 유사합니다. 행과 마찬가지로 엔터티 형식은 데이터 구조를 설명하고, 테이블과 마찬가지로 엔터티 집합에는 지정된 구조의 인스턴스가 포함됩니다. 엔터티 집합은 데이터 모델링 구문이 아니며 데이터 구조를 설명하지 않습니다. 대신 엔터티 집합은 엔터티 형식 인스턴스를 그룹화하여 데이터 스토리지에 매핑할 수 있도록 호스팅 또는 스토리지 환경(예: 공용 언어 런타임 또는 SQL Server 데이터베이스)에 대한 구문을 제공합니다.

엔터티 집합은 엔터티 집합 및 연결 집합의 논리적 그룹인 엔터티 컨테이너 내에서 정의됩니다.

엔터티 형식 인스턴스가 엔터티 집합에 있으려면 다음 조건을 충족해야 합니다.

  • 인스턴스 형식이 엔터티 집합의 기반이 되는 엔터티 형식과 같거나 인스턴스 형식이 엔터티 형식의 하위 형식입니다.

  • 인스턴스의 엔터티 키가 엔터티 집합 내에서 고유합니다.

  • 인스턴스가 다른 엔터티 집합에 없습니다.

    참고 항목

    같은 엔터티 형식을 사용하여 여러 엔터티 집합을 정의할 수 있지만 지정된 엔터티 형식의 인스턴스는 하나의 엔터티 집합에만 있을 수 있습니다.

개념적 모델의 각 엔터티 형식에 대해 엔터티 집합을 정의할 필요는 없습니다.

예시

다음 다이어그램에서는 세 가지 엔터티 형식 Book, PublisherAuthor가 포함된 개념적 모델을 보여 줍니다.

Example model with three entity types

다음 다이어그램에서는 위에 표시된 개념적 모델을 기반으로 하여 엔터티 집합 두 개(BooksPublishers)와 연결 집합(PublishedBy)을 보여 줍니다. Books 엔터티 집합에 있는 Bi는 런타임 시 Book 엔터티 형식의 인스턴스를 나타냅니다. 마찬가지로 Pj는 Publishers 엔터티 집합의 Publisher 인스턴스를 나타냅니다. BiPj는 PublishedBy 연결 집합의 PublishedBy 연결 인스턴스를 나타냅니다.

Screenshot that shows a Sets example.

ADO.NET Entity FrameworkCSDL(개념 스키마 정의 언어)이라는 DSL(Domain-Specific Language)을 사용하여 개념적 모델을 정의합니다. 다음 CSDL에서는 위에 표시된 개념적 모델의 각 엔터티 형식에 대해 하나의 엔터티 집합이 있는 엔터티 컨테이너를 정의합니다. 각 엔터티 집합의 이름과 엔터티 형식은 XML 특성을 사용하여 정의됩니다.

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

형식당 여러 엔터티 집합(MEST)을 정의할 수 있습니다. 다음 CSDL에서는 Book 엔터티 형식에 대한 두 개의 엔터티 집합이 있는 엔터티 컨테이너를 정의합니다.

<EntityContainer Name="BooksContainer" >
  <EntitySet Name="Books" EntityType="BooksModel.Book" />
  <EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
  <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
  <EntitySet Name="Authors" EntityType="BooksModel.Author" />
  <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
    <End Role="Book" EntitySet="Books" />
    <End Role="Publisher" EntitySet="Publishers" />
  </AssociationSet>
  <AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
    <End Role="Book" EntitySet="Books" />
    <End Role="Author" EntitySet="Authors" />
  </AssociationSet>
</EntityContainer>

참고 항목