Buscar

Continue navegando


Prévia do material em texto

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO CEARÁ
CIÊNCIA DA COMPUTAÇÃO
MARIA GABRIELE ALMEIDA OLIVEIRA
RESUMO DE VIEWS
JAGUARUANA - CE
2016
Resumo Views
O que é uma view?
Uma view é uma maneira alternativa de observação de dados de uma ou mais entidades (tabelas), que compõem uma base de dados. Podemos fazer com que apenas uma parte do banco de dados seja “visível”. Pode ser considerada como uma tabela virtual ou uma consulta armazenada. 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. 
Vantagens de usar views
Economia de tempo. Não será necessário escrever a instrução várias vezes, a view pode ser reutilizada quando necessário.
Possibilidade de “mascarar” o banco de dados real. 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. 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. 
Definição de View
Definimos uma view na SQL usando o comando create view. Para isso, é preciso atribuir-lhe um nome e formular a consulta que calcula a view. A forma do comando create view é:
	CREATE VIEW v AS <expressão de consulta>
onde <expressão de consulta> é qualquer expressão de consulta válida. O nome da view é representada por v.
Como um exemplo, considere a view consistindo nas agências e seus clientes. Suponha que queremos que essa view seja chamada de todos_clientes. Definimos essa view da seguinte maneira:
CREATE VIEW todos_clientes AS
	(SELECT nome_agencia, nome_cliente
	FROM depositante, conta
	WHERE depositante.numero_conta = conta.numero_conta)
UNION
	(SELECT nome_agencia, nome_cliente
	FROM tomador, empréstimo
	WHERE tomador.numero_emprestimo = emprestimo.numero_emprestimo)
Uma vez que definimos uma view, podemos usar o nome da view para se referir à relação virtual gerada por ela. Usando a view todos_clientes, poremos encontrar todos os clientes da agência Perryridge escrevendo
SELECT nome_cliente
FROM todos_clientes
WHERE nome_agencia = ‘Perryridge’
Atualização de uma view
Embora seja uma ferramenta útil, para as consultas, as views apresentam sérios problemas se usadas para expressões de atualizações, inserções ou exclusões. A dificuldade é que uma modificação no banco de dados expressa em termos de uma view precisa ser traduzida para uma modificação nas relações reais no modelo lógico do banco de dados. Uma view que envolve várias tabelas, tem problemas com a modificação de dados.
Para que uma view seja considerada “atualizável”, ela deve satisfazer as condições aaixo:
A cláusula FROM possui apenas uma relação de banco de dados;
A cláusula SELECT contém apenas nomes de atributos da relação e não possui quaisquer expressões, agregadas ou expressões distinct;
Qualquer atributo não listado na cláusula SELECT pode ser atribuído como nulo;
A consulta não possui uma cláusula GROUP BY ou HAVING.
Sob essas restrições, a modificação de dados seriam proibidas na view todos_clientes criada no tópico anterior.
Suponha que uma view conta_downtown seja definida desta forma:
CREATE VIEW conta_downtown AS
(SELECT numero_conta, nome_agencia, saldo
FROM Conta
WHERE nome_agencia = ‘Downtown’)
Esta view é atualizável, já que ela satisfaz as condições listadas anteriormente.
Alteração de uma VIEW
	ALTER VIEW <nome_da_view> [(colunas)]
	AS <SELECT>
Exclusão de uma view
	DROP VIEW <nome_da_view>
Cláusula WITH CHECK OPTION
Mesmo com as condições de atualização, o seguinte problema ainda acontece. Suponha que um usuário tente inserir a tupla (‘A-999’, ‘Perryridge’, 1000) na view conta_downtown. Essa tupla pode ser inserida na relação Conta, mas ela não apareceria na view conta_downtown, já que não satisfaz a seleção imposta pela view.
Como padrão, a SQL permitiria essa atualização. Entretanto, as VIEWS podem ser definidas com uma cláusula WITH CHECK OPTION no final da definição de view, então se uma tupla inserida não satisfazer a condição da cláusula WHERE da view, a inserção é rejeitada pelo sistema de banco de dados.