Compartilhar via


Views no SQL Server

Introdução

As views provem a abstração da camada de dados sendo possivel mostrar ao usuario ou desenvolvedor somente as informações que são pertinentes a ele. Nesse artigo então será explicado o que são views.

Materiais de referência Microsoft:

http://msdn.microsoft.com/pt-br/library/ms187956.aspx

***Views ***

Visões ou Views é conhecida como uma tabela virtual que é definida por uma consulta e utilizada como uma tabela. É semelhante a uma tabela, porem a tabela propriamente dita é armazenada na base dados e a View não, o que a View faz é simplesmente armazenar a instrução SQL no banco de dados, sem ter que a cada consulta ter que escrever todo o script novamente. Enganam-se quem pensa que Views trazem benefícios, ou melhor, desempenho para o banco de dados, pois a View é simplesmente um encapsulamento de uma instrução SQL. O custo é o mesmo, pois internamente o SQL da View será executado como se fosse a própria instrução repassada. Em uma “grosseira” comparação com o mundo da Orientação a Objeto as Views seriam como os métodos GET não permitindo o acesso direto as complexas estruturas do banco.As Views também permitem algumas vezes uma maior segurança, pois você pode negar o acesso de um usuário a uma tabela, e conceder a ele somente a permissão da View. Assim como podemos limitar a visão apenas das colunas, podemos também limitar a visão de algumas linhas. Sem contar que a View fornece uma abordagem modularizada na resolução de problemas. Vamos a alguns detalhes mais técnicos.

Restrições

Algumas das restrições das views são.

 

  • A clausula Order by não pode ser utilizada em uma view, a menos que exista um TOP ou FOR XML na definição da consulta.
  • Todas as consultas devem possuir nomes, e todos os nomes das colunas devem ser únicos.

Opções de Criação

Vamos demonstrar então algumas opções de criação das Views que em minha opinião e de muitos Dba’s certificados são muito importantes, porem raramente são utilizadas.

  • SCHEMABINDING: Liga o esquema da View com o esquema dos objetos relacionados, impedindo que esses sejam apagados ou alterados (nas colunas utilizadas).
  • ENCRYTION: Armazena de forma criptografada a definição da View, ao invés de um texto aberto, podemos visualizar o texto da View através do comando (sp_helptext nome_view). Lembrando que uma vez criptografada essa view não pode ter mais seu código aberto, então para modificar a view, você terá que dropar e depois recriá-la.
  • WITH CHECK: Impede um insert ou update que conflite com o filtro (clausula WHERE) da View.

*** Conclusão***

Ainda existem algumas formas de se ganhar performance com views, realizando a indexação da mesma e sendo assim conseguiremos demonstrar para o usuário a performance obtida com as views. Vimos que as views fornecem então uma abstração a camada de dados e também segurança para aqueles que desejam.