[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