Introdução a Views

Olá Pessoal,

Escrevo esse artigo, primeiramente para reforçar os conhecimentos daqueles que já os tem e para trazer àqueles que ainda não tem em mente os conceitos e aplicações deste procedimento de banco de dados Microsoft. Este artigo foi escrito com seu foco voltado para o SQL Server 2000.

CONCEITOS

O que é uma view?
Onde se aplicam as views?
Ela é um procedimento armazenado?
Uma view influencia na desempenho de um banco de dados?
Como são criadas?
Como executamos, após a sua criação?

Uma view é uma maneira alternativa de observação de dados de uma ou mais entidades (tabelas), que compõem uma base de dados. Pode ser considerada como uma tabela virtual ou uma consulta armazenada.

Geralmente e recomendável, uma view, implementada encapsulando uma instrução SELECT (busca de dados para exposição), guarda os dados em uma tabela virtual, armazenando também em cache, pois todas as consultas ao banco, encapsuladas ou não, ao serem executadas, são armazenadas em cache. Por este motivo, pode ser mais rápido ter uma consulta armazenada em forma de view, em vez de ter que retrabalhar uma instrução.

As views nos possibilitam mais que simplesmente visualizar dados. Elas podem ser implementadas também com algumas aplicações de restrição:

- Restrição usuário x dados;

Ex.: Seu departamento de vendas não precisa saber ou ter acesso a uma coluna que contém valores (dados) referentes aos salários dos desenvolvedores.

- Restrição usuário x domínio;

Ex.: Podemos restringir o acesso de um usuário específico a colunas (domínios) específicas (os) de uma tabela.

- Associar vários domínios formando uma única entidade;

Ex.: Podemos ter várias "JOIN" encapsuladas em uma view, formando somente uma tabela arbitrariamente.

- Agregar informações, em vez de fornecer detalhes;

Ex.: Podemos apresentar um somatório de despesas em ligações de um determinado usuário, restringindo acesso aos detalhes da conta.

As vantagens de se usar views são:

- Economizar tempo com retrabalho;

Ex.: Você não precisar escrever aquela instrução enorme. Escreva uma vez e armazene!

- Velocidade de acesso às informações;

Ex.: Uma vez compilada, o seu recordset (conjunto de dados) é armazenado em uma tabela temporária (virtual).

- Mascarar complexidade do banco de dados;

Ex.: As views isolam do usuário a complexidade do banco de dados. Nomes de domínios podem ser referenciados com literais e outros recursos. Isso proporciona aos desenvolvedores a capacidade de alterar a estrutura sem afetar a interação do usuário com o banco de dados.

- Simplifica o gerenciamento de permissão de usuários;

Ex.: Em vez de conceder permissão para que os usuários contem tabelas base, os proprietários de bancos de dados podem conceder permissões para que os usuários consultem dados somente através de views. Isso também protege as alterações na estrutura das tabelas base subjacentes. Os usuários não serão interrompidos durante uma visualização de dados.

- Organizar dados a serem exportados para outros aplicativos;

Ex.: Você pode criar uma view baseada em uma consulta complexa, que associe até 32 tabelas e depois exportar dados para outro aplicativo para análise adicional. Pode ser gerado um arquivo de DUMP* automaticamente.

Criando views

Quando você cria uma VIEW, o SQL Server verifica a existência de objetos que contêm referências em uma definição de view. O nome de sua view deve seguir o padrão de regra de identificadores. A especificação do nome do proprietário de uma view é opcional* (caso você queira tornar uma view pública, declare "dbo.nome_entidade"). Não atribua a uma view, um nome já utilizado para outro objeto já existente no mesmo banco de dados.

Os objetos contidos em um banco de dados podem ser visualizados pelo Query Analyse, digitando o seguinte comando T-SQL:

USE NOME_DO_BANCO
GO
SELECT * FROM information_schema.tables
GO

Serão apresentados quatro domínios:

- Table_Catalog;

Informa o nome do banco, dono (owner) dos objetos;

- Table_Schema;

Informa o owner físico do objeto;

- Table_Name;

Informa o nome físico de referência do objeto;

- Table_Type;

Informa o tipo do objeto;

Em meio a view, podemos usar alguns comandos interessantes. Como destaque, WITH ENCRYPTION. Esse comando, encripta os códigos de sua view, não possibilitando a edição por outro usuário. Um detalhe que devemos nos alertar quanto à encriptação nas views é que, para desencriptá-la, devemos lembrar do comendo que foi escondido para retornar a view sem a criptação.

Logo abaixo, uma view completa que pode ser implementada no seu banco de dados local, alterando os parâmetros corretamente, de acordo com as entidades e domínios a serem referenciados.

Vamos criar uma view para retornar, nesse exemplo, todos os aniversariantes desse mês.

USE NOME_DO_BANCO
GO
CREATE VIEW dbo.viewAniversariante
(nome, sobrenome, data_nascimento)
AS
SELECT nome, sobrenome, CONVERT(char(8), data_nascimento, 2)
FROM usuario AS u INNER JOIN jovens AS j
ON u.usuario_no = j.usuario_no
GO

Dando tudo certo com as consistências, execute a view da seguinte maneira:

SELECT * FROM viewAniversariante
GO

Até a próxima, onde falaremos de triggers (gatilhos)...