[firebase-br] Views
Sandro Souza
escovadordebits em gmail.com
Sex Fev 19 12:02:20 -03 2010
Bom dia/tarde Thiago.
Grande Thiago, as visões servem apenas gerar consultas pré-montadas,
escondendo toda a complexidade da mesma para quem a utiliza.
Em termos de performance, eu acredito que não haja qualquer benefício,
pois trata-se apenas de um SELECT pré-compilado, mas durante a execução
terá a mesma performance de se executar o mesmo código SELECT que forma
a visão.
A única vantagem é realmente a de facilitar a vida de quem efetua
constantemente consultas complexas, pois precisará apenas executar um
simples comando SELECT sobre a visão, sem ter que conhecer toda a
complexidade do SELECT verdadeiro que está "nos bastidores" e que gera
os registros retornados pela visão.
No caso das visões alteráveis (quando criamos gatilhos (triggers) para
as situações INSERT, UPDATE e DELETE), elas adquirem uma vantagem a
mais, que é a de esconder também a complexidade dessas operações nas
diferentes tabelas que estão envolvidas nessa visão.
Por exemplo, para quem trabalha com Delphi (como eu), e nos deparamos
com SELECTs que envolvem mais de uma tabela, e precisamos também efetuar
operações de inclusão, alteração e exclusão nos registros desse mesmo
SELECT complexo, encontramos uma certa dificuldade, pois o próprio
componente de query (TQuery, TIBQuery, TSQLQuery, TADOQuery, etc...) não
saberá como efetuar essas operações, já que não se trata apenas de uma
única tabela, mas sim de uma combinação específica de mais de uma
tabela, e nessa situação, precisamos da ajuda de outros componentes
(TUpdateSQL, TIBUpdateSQL, etc...) onde possamos informar os comandos a
serem executados, no mínimo, nessas 3 operações distintas (INSERT,
UPDATE e DELETE).
Nessa situação, se o banco de dados der suporte à visões alteráveis,
como é o caso do Firebird, seria melhor efetuar esse trabalho mais
complexo no próprio banco de dados.
Dessa forma, criaríamos uma visão, formada pelo mesmo SELECT que se
encontra no nosso componente de query, e também criaríamos um gatilho
(trigger) para cada uma das possíveis operações (INSERT, UPDATE e DELETE).
Do ponto de vista da aplicação cliente, aquela visão alterável funciona
exatamente como uma tabela comum, com todas as operações possíveis.
Temos aí o ganho de algumas vantagens, como as seguintes:
1 - Reduz bastante o trabalho de desenvolvimento no lado da aplicação
cliente, pois agora um simples componente de query já consegue tratar
normalmente essas operações, já que a visão alterável será tratada como
uma tabela comum, simplificando bastante todas as operações nesse lado.
2 - Dentro de cada um dos gatilhos podemos executar várias operações, e
não estamos presos a um simples comando de INSERT, UPDATE ou DELETE como
ficamos quando utilizamos um TUpdateSQL, por exemplo. Nesse caso do uso
de gatilhos, cada um pode executar inúmeras operações, tornando as
operações mais inteligentes e flexíveis.
Do meu ponto de vista, essas são as vantagens.
Espero ter ajudado mais que atrapalhado. :D
Thiago Balbino escreveu:
> Boa tarde Pessoal, seguinte estou desenvolvendo uma aplicação desktop em
> Delphi 7 + FireBird 2.1, estou implementando o uso de Views no sistema,
> queria saber de vocês quais as utilidades das *views *por exemplo, ganho de
> performance etc...?
>
> desde ja agradeço.
>
Mais detalhes sobre a lista de discussão lista