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.