CSDL 개념

CSDL(개념 스키마 정의 언어)은 엔터티 데이터 프레임워크를 기반으로 하며, 별도의 데이터 집합을 프로그래밍 방식으로 액세스, 쿼리 또는 내보낼 수 있도록 하여 여러 데이터 유형을 나타내기 위한 추상화입니다. 특히 CSDL은 데이터 기반 응용 프로그램을 정의하는 데 적합하여 보고용 테이블 형식 모델을 나타내는 데 사용됩니다.

이 섹션에서는 엔터티 데이터 모델이 테이블 형식 모델에 적용되는 방법을 설명하고, CSDL로 모델을 표현하는 방법의 예를 제공합니다.

이러한 개념을 설명하는 데 사용하는 예는 Codeplex에서 제공하는 AdventureWorks 예제 데이터베이스를 통해 얻을 수 있습니다. 예제에 대한 자세한 내용은 Adventure Works Samples for SQL Server를 참조하십시오.

CSDL의 모델 구조

보고서 모델과 해당 데이터를 설명하는 CSDL 문서는 xsd 문으로 시작하여 모델에 대한 정의로 이어집니다.

모델은 다음과 같은 주요 엔터티, 연결 및 속성이 포함된 네임스페이스입니다.

  • EntityContainer는 모델의 테이블을 나열합니다.

  • 각 테이블은 EntityContainer를 사용하여 EntitySet로 나열됩니다.

  • 두 테이블 사이의 각 관계는 관계 끝점과 관계 역할을 정의하는 AssociationSet로 설명됩니다.

  • BISM이 테이블 및 해당 열에 대해 추가 세부 정보(정렬 및 표시용 속성 포함)를 제공하도록 EntityType 요소가 확장됩니다.

  • Measure 요소는 모델에 사용할 수 있는 계산을 정의합니다. 새 KPI 요소를 사용하면 특수 표시 특성 집합을 추가하여 측정값을 KPI로 전환할 수 있습니다.

  • 별도의 큐브 뷰 표현은 없습니다. 큐브 뷰에 포함되지 않은 열과 테이블은 CSDL로 표시되지만 Hidden 특성을 사용하여 플래그가 지정됩니다.

Entities, EntitySets 및 EntityTypes

엔터티 데이터 프레임워크에서 엔터티의 개념은 데이터 모델의 열과 테이블을 나타내도록 확장되었습니다. 다음 발췌 구문에서는 테이블이 세 개만 포함된 단순한 모델의 EntitySet 요소 목록을 보여 줍니다.

<EntityContainer Name="SimpleModel">
<EntitySet Name="DimCustomer"EntityType="SimpleModel.DimCustomer">
     <bi:EntitySet />
   </EntitySet>
<EntitySet Name="DimDate" EntityType="SimpleModel.DimDate">
     <bi:EntitySet />
   </EntitySet>
<EntitySet Name="DimGeography" EntityType="SimpleModel.DimGeography">
     <bi:EntitySet />
   </EntitySet> />

테이블의 열이나 데이터에 대한 정보가 EntitySet에 없습니다. 열과 해당 속성에 대한 자세한 설명은 EntityType 요소에 제공됩니다.

각 엔터티(테이블)에 대한 EntityType 요소에는 키 열, 열의 데이터 형식과 길이, Null 허용 여부, 정렬 동작 등을 정의하는 속성 모음이 포함됩니다. 예를 들어 다음 CSDL 발췌 구문에서는 Customer 테이블에 있는 세 개의 열을 설명합니다. 첫 번째 열은 모델에 내부적으로 사용되며 숨겨진 특수한 열입니다.

<EntityType Name="Customer">
  <Key>
     <PropertyRef Name="RowNumber" />
  </Key>
    <Property Name="RowNumber" Type="Int64" Nullable="false">
     <bi:Property Hidden="true" Contents="RowNumber"
       Stability="RowNumber" />
    </Property>
    <Property Name="CustomerKey" Type="Int64" Nullable="false">
      <bi:Property />
    </Property>
     <Property Name="FirstName" Type="String" MaxLength="Max" FixedLength="false">
       <bi:Property />
      </Property>

생성되는 CSDL 문서 크기를 제한하기 위해 엔터티에 두 번 이상 나타나는 속성이 기존 속성에 대한 참조에 의해 지정되므로 EntityType에 대해 속성이 한 번만 나열되어야 합니다. 클라이언트 응용 프로그램은 OriginEntityType과 일치하는 EntityType을 찾아 속성의 값을 가져올 수 있습니다.

관계

엔터티 데이터 프레임워크에서 관계는 엔터티 간의 연결로 정의됩니다.

연결에는 항상 테이블의 필드나 열을 각각 가리키는 두 개의 끝이 있습니다. 따라서 관계의 끝점이 다를 경우 두 테이블 사이의 관계가 여러 가지일 수 있습니다. 역할 이름이 연결의 끝점에 지정되고, 데이터 모델의 컨텍스트에서 연결이 사용되는 방법을 나타냅니다. 가령 Orders 테이블의 고객 ID와 관련된 고객 ID에 ShipTo라는 역할 이름을 지정할 수 있습니다.

또한 연결의 복합성을 기준으로 엔터티가 서로 매핑되는 방법을 결정하는 연결에 대한 특성이 모델의 CSDL 표현에 포함됩니다. 복합성은 테이블 간 관계 끝점의 특성이나 열이 관계의 한 편에 있는지 아니면 여러 편에 있는지 나타냅니다. 일 대 일 관계에 대한 별도의 값은 없습니다. CSDL을 위한 BISM 확장은 복합성 0(엔터티가 어디에도 연결되지 않음)이나 0..1(일 대 일 관계 또는 일 대 다 관계)을 지원합니다.

다음 예제에서는 DateAlternateKey 열에서 조인된 Date 테이블과 ProductInventory 테이블 간 관계에 대한 CSDL 정의를 나타냅니다. 기본적으로 AssociationSet 이름은 관계에 포함된 열의 정규화된 이름입니다. 그러나 모델을 설계할 때 다른 이름 형식을 사용하도록 이 동작을 변경할 수 있습니다.

<AssociationSet Name="ProductInventory_Date_DateKey" Association="Model.ProductInventory_Date_DateKey">
              <End EntitySet="ProductInventory" />
              <End EntitySet="Date" />
              <bi:AssociationSet />
            </AssociationSet>

시각화 및 탐색 속성

테이블 형식 모델링을 위해 엔터티 데이터 프레임워크로 확장할 경우 보고 계층에서의 표시를 정의하는 속성과 엔터티 간 관계를 탐색하는 속성이 중요합니다. 대개 데이터 모델을 만들 때는 클라이언트 응용 프로그램이 표시 순서와 그 밖의 세부 정보를 지정한다고 간주하므로 데이터 순서 지정 및 그룹화 방법 제어나 기본값 지정을 중요하게 여기지 않아도 됩니다. 그러나 Analysis Services 테이블 형식 모델은 Power View 보고 클라이언트와의 통합을 위해 디자인되었으며 보고서 디자인 화면에서 데이터 모델의 엔터티를 표시하도록 지원하는 속성과 특성을 포함합니다.

시각화를 위한 확장에는 숫자 데이터와 함께 사용할 기본 집계를 지정하거나, 텍스트 필드가 이미지 URL을 가리키도록 지시하거나, 현재 필드를 정렬하는 데 사용되는 필드를 지정하기 위한 특성이 포함됩니다.

이름 속성 및 명명 규칙

CSDL 사양은 키로 사용할 수 있는 고유 이름과 식별자를 각 엔터티에 제공합니다. 또한 일부 엔터티는 표시용으로 사용되는 캡션과 엔터티가 사용되는 위치에 따라 달라지는 컨텍스트 이름을 가질 수 있습니다.

Documentation 요소는 보고서 디자이너가 엔터티를 설명할 기회를 제공하여 비즈니스 사용자가 데이터의 의미를 이해하도록 돕습니다. 일부 엔터티는 응용 프로그램이나 클라이언트에서 사용할 추가 메타데이터를 제공하는 Annotation 특성을 한 개 이상 허용하기도 합니다.

Analysis Services 도구로 모델을 생성하는 경우 개체를 위해 만든 이름은 개체 이름 지정과 이름의 고유성을 위해 Analysis Services 규칙을 따릅니다. 그러나 CSDL은 이름이 C# 식별자용 규칙을 준수해야 하는 엔터티 데이터 프레임워크에 속하므로 서버에서 모델의 CSDL을 만들 때 Analysis Services 스키마에 사용된 이름을 가져와 CSDL 요구 사항에 맞는 새 개체 이름을 자동으로 만듭니다. 다음 표에서는 새 이름을 생성하기 위한 작업에 대해 설명합니다.

규칙

동작

금지된 문자가 없습니다.

금지된 문자는 밑줄로 대체됩니다.

예 작성 중

이름은 고유해야 합니다.

두 문자열이 같으면 밑줄과 숫자를 추가하여 문자열 하나를 고유하게 만듭니다.

예 작성 중

캡션과 한정자는 번역되며 둘 중 하나는 지정한 언어로 표시될 수 있습니다. 즉, 한정자와 이름 또는 한정자와 캡션이 연결된 경우 문자열이 서로 다른 두 언어로 표시될 수 있습니다.

참고 항목

개념

테이블 형식 모델용 CSDL 확장 프로그램 소개