![]() |
MC536 - Visões (Views)Prof. Célio Guimarães IC - Unicamp |
![]() |
Referência: livro-texto, pp 146-150.
Utilidades de Visões
pode exibir apenas dados relevantes para a aplicação,
pode ocultar dados privativos como salário.
por exemplo: somas e médias de dados financeiros.
podem envolver diversas tabelas e subconsultas,
simplificando o acesso aos dados para o usuário final
(conforme veremos em exercício a ser proposto).
Comandos para manipular visões
create view jogadores_ativos as
select *
from jogadores
where natp is not null
select nome, cid_res
from jogadores_ativos
where cid_res = 'Monte Carlo'
Colunas de uma visão podem receber novos nomes.
Neste exemplo criamos uma visão a partir de outra visão:
create view pessoas(ncid, nreg) as
select cid_res, natp
from jogadores_ativos
Colunas da visão também podem ser calculadas (via funções agregado):
Esta visão exibe quantos jogadores residem em cada cidade:
create view residentes(quantidade) as
select cid_res, count(*)
from jogadores
group by cid_res
delete
from jogadores_ativos
where natp = 281 -- remove da tabela base!
drop view jogadores_ativos (remove apenas a definição)
update jogadores_ativos
set natp = 8477
where natp = 224
Processamento de consultas a visões
Consulta:
select numj
from jogadores_ativos
where cid_res = 'Monte Carlo'
Efeito :
select numj
from jogadores_ativos
where cid_res = 'Monte Carlo'
and natp is not null
Anomalias na atualização de visões
Regra básica: a atualização de uma visão sempre deverá incidir sobre uma tabela base.
Se não for possível, por ambiguidade, restrições de integridade, etc, ela é rejeitada.
Mesmo assim, anomalias podem ocorrer.
Exemplos:
update jogadores_ativos
set natp = null
where numj = 16
Neste caso, o jogador 16 não mais pertencerá à visão!
insert into jogadores_ativos
values(999, 'Newcombe', ...etc, NULL)
Aqui o novo jogador é inserido na tabela base (jogadores) mas não na visão!