Compartilhar via


Conceitos de CSDL

A CSDL(linguagem de definição de esquema conceitual) baseia-se na Estrutura de Dados de Entidade, que é uma abstração para representar tipos diferentes de dados de modo a habilitar conjuntos de dados discrepantes para serem acessados, consultados ou exportados de modo programático. A CSDL é usada para representar modelos de tabela para geração de relatórios porque é especialmente apropriada para definir aplicativos orientados a dados.

Esta seção explica como o modelo de dados de entidade se aplica a modelos de tabela, e fornece exemplos de como um modelo é representado em CSDL.

Exemplos obtidos no banco de dados de exemplo AdventureWorks são usados para ilustrar esses conceitos, disponíveis em Codeplex. Para obter mais informações sobre os exemplos, consulte o artigo sobre Exemplos do Adventure Works para SQL Server.

Estrutura de um modelo em CSDL

Um documento CSDL que descreve um modelo de relatório e seus dados começa com a instrução xsd, seguida pela definição de um modelo.

O modelo é um namespace, que contém as seguintes entidades, associações e propriedades principais:

  • O EntityContainer lista as tabelas do modelo.

  • Cada tabela é listada com o EntityContainer como um EntitySet.

  • Cada relação entre duas tabelas é descrita como um AssociationSet que define os pontos de extremidade de relação e as funções de relação.

  • O elemento EntityType é estendido para BISM a fim de fornecer detalhes adicionais sobre as tabelas e as colunas nelas contidas, incluindo propriedades para fins de classificação e exibição.

  • O elemento Measure define cálculos que podem ser usados no modelo. Uma medida pode ser se transformada em um KPI através da adição de um conjunto de atributos de exibição especiais, usando o novo elemento KPI.

  • Não há nenhuma representação separada de perspectivas. Colunas e tabelas que não são incluídas em uma perspectiva estão presentes na CSDL, mas sinalizadas com o atributo Hidden.

Entities, EntitySets e EntityTypes

A noção de uma entidade na Estrutura de Dados de Entidade é estendida para representar colunas e tabelas do modelo de dados. O trecho a seguir mostra a lista de elementos EntitySet em um modelo simples que contém apenas três tabelas.

<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> />

O EntitySet não contém informações sobre colunas ou dados na tabela. A descrição detalhada das colunas e suas propriedades é fornecida no elemento EntityType.

O elemento EntityType de cada entidade (tabela) inclui uma coleção de propriedades que definem a coluna de chave, o tipo de dados e comprimento da coluna, a nulidade, o comportamento de classificação etc. Por exemplo, o trecho CSDL a seguir descreve três colunas da tabela Customer. A primeira coluna é uma coluna oculta especial usada internamente pelo modelo.

<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>

Para limitar o tamanho do documento CSDL gerado, as propriedades que aparecem mais de uma vez em uma entidade são especificadas por uma referência a uma propriedade existente, de modo que a propriedade precise ser listada apenas uma vez para o EntityType. O aplicativo cliente pode obter o valor da propriedade localizando o EntityType que corresponde ao OriginEntityType.

Relações

Na Estrutura de Dados de Entidade, as relações são definidas como associações entre entidades.

As associações sempre têm exatamente duas extremidades, cada uma apontando para um campo ou uma coluna em uma tabela. Portanto, várias relações são possíveis entre duas tabelas, se as relações tiverem pontos de extremidade diferentes. Um nome de função é atribuído aos pontos de extremidade da associação e indica como a associação é usada no contexto do modelo de dados. Um exemplo de nome de função poderia ser ShipTo, quando aplicado a uma ID de cliente relacionada à ID de cliente em uma tabela Orders.

A representação CSDL do modelo também contém atributos na associação que determinam como as entidades são mapeadas umas para as outras em termos de multiplicidade da associação. A multiplicidade indica se o atributo ou a coluna no ponto de extremidade de uma relação entre tabelas está em um dos lados de uma relação ou nos vários lados. Não há nenhum valor separado para relações um para um. As extensões BISM para CSDL suportam a multiplicidade 0 (o que significa que a entidade não está associado a nada) ou 0..1 (o que significa uma relação um para um ou um para muitos).

O exemplo a seguir representa a definição CSDL de uma relação entre as tabelas Data e ProductInventory, na qual as duas tabelas são associadas na coluna DateAlternateKey. Observe que, por padrão, o nome do AssociationSet é o nome totalmente qualificado das colunas envolvidas na relação. Porém, você pode alterar esse comportamento ao criar o modelo, para usar um formato de nomenclatura diferente.

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

Propriedades de visualização e navegação

Uma parte importante das extensões para a Estrutura de Dados de Entidade de modelagem de tabela são as propriedades para definição da apresentação na camada de relatório, e para navegação nas relações entre entidades. Normalmente, ao criar um modelo de dados, você não considera importante controlar como os dados são ordenados ou agrupados, ou qual pode ser o valor padrão, pressupondo que o aplicativo cliente especificará ordenação e outros detalhes da apresentação. No entanto, os modelos de tabela do Analysis Services foram projetados para integração ao cliente de relatório do Power View, e incluem propriedades e atributos que oferecem suporte à apresentação de entidades do modelo de dados na superfície de design do relatório.

As extensões de visualização incluem atributos que especificam a agregação padrão a ser usada com dados numéricos, indicam que um campo de texto aponta para a URL de uma imagem ou especificam o campo usado para classificar o campo atual.

Propriedades de nome e convenções de nomenclatura

A especificação CSDL informa que cada entidade tem um nome exclusivo e um identificador que podem ser usados como uma chave. Além disso, algumas entidades podem ter legendas usadas para fins de exibição, e nomes contextuais que são alterados, dependendo do local em que a entidade é usada.

O elemento Documentation fornece a oportunidade para designers de relatório fornecerem uma descrição da entidade, a fim de ajudar os usuários comerciais a entender o significado dos dados. Algumas entidades também permitem um ou mais atributos Annotation, que fornecem metadados extras para consumo pelo aplicativo ou pelos clientes.

Quando você gera um modelo para as ferramentas do Analysis Services, os nomes criados para objetos seguem as convenções do Analysis Services para nomeação de objeto e exclusividade de nome. No entanto, como a CSDL é uma parte da Estrutura de Dados de Entidade que requer que os nomes obedeçam às convenções dos identificadores C#, quando o servidor criar a CSDL para um modelo, o servidor adotará os nomes usados no esquema Analysis Services e criará automaticamente novos nomes de objeto em conformidade com os requisitos da CSDL. A tabela a seguir descreve as operações através das quais os novos nomes são gerados.

Regra

Ação

Exemplo

Nenhum caractere proibido

Os caracteres proibidos são substituídos pelo sublinhado.

Exemplo em construção

Os nomes devem ser exclusivos

Se duas cadeias de caracteres forem iguais, uma se tornará exclusiva através do acréscimo de um sublinhado e um número

exemplo em construção

Legendas e qualificadores têm traduções e, em um determinado idioma, um ou outro poderia estar presente. Isso significa que, nos casos em que um qualificador e um nome ou um qualificador e uma legenda são concatenados, as cadeias de caracteres poderiam estar em dois idiomas diferentes.

Consulte também

Conceitos

Introdução às extensões CSDL para modelos de tabela