VISÕES EM SQL (VIEW)
Em banco de dados relacionais, uma visão (ou "view"), é uma consulta (instrução SQL) armazenada no banco de dados geralmente chamada de "tabela virtual". Essa tabela virtual é derivada de uma ou mais tabelas já existentes no banco de dados e podem ser consultadas como se fossem uma tabela real. Ao criar uma view, o resultado da consulta não é armazenado fisicamente no banco de dados, a cada execução os dados são acessados diretamente das tabelas de origem. As views geralmente são usadas para simplificar consultas complexas, fornecer uma exibição personalizada dos dados ou limitar acesso a dados das tabelas reais.
Uma visão materializada (ou "materialized view") é semelhante a uma visão lógica. No entanto, visões materializadas têm a capacidade de persistir uma cópia dos resultados de sua consulta diretamente no banco de dados de uma forma semelhante a uma tabela real. Esses resultados podem ser dados resumidos ou calculados a partir de outras tabelas.
A materialização de uma visão é uma estratégia que aprimora o desempenho do banco de dados ao lidar com consultas complexas que envolvem muitas tabelas e cálculos. Quando uma consulta é feita em uma visão materializada, ela é realizada diretamente no resultado calculado anteriormente, sem executar nenhum cálculo adicional. Isso torna o processo mais rápido e reduz a carga no banco de dados com um tempo de resposta mais rápido.
É importante considerar que será necessário um espaço extra em disco para armazenar os resultados da consulta e as informações armazenadas na visão materializada precisam ser atualizadas sempre que houver mudanças nas tabelas originais. Essa manutenção é necessária para garantir que os dados estejam sempre consistentes.
As visões materializadas são especialmente úteis em consultas que são feitas com frequência e que envolvem operações complexas, mas cujos dados originais não mudam com muita frequência. Dessa forma, o benefício da rapidez na consulta compensa o esforço de manter os dados atualizados. Além disso, é importante notar que nem todos os SGBD suportam Views Materializadas nativamente. Por exemplo, o MySQL não oferece suporte direto a este recurso, embora seja possível implementar uma funcionalidade semelhante através de outros mecanismos, como gatilhos e eventos.
Em um cenário fictício, você é um aluno matriculado na disciplina SGD2 (Sistemas de Gerenciamento de Dados 2) e foi selecionado para um projeto especial. Seu objetivo é aprimorar o sistema de geração de relatórios de acompanhamento acadêmico na Faculdade do Gama (FGA). A administração da universidade busca um relatório abrangente que avalie minuciosamente o desempenho dos alunos em todas as disciplinas oferecidas pela FGA.
Para obter essas informações, o administrador do banco de dados da universidade concedeu acesso a três tabelas principais: "aluno", "disciplina" e "cursa". A tabela "aluno" contém informações detalhadas sobre cada aluno, a tabela "disciplina" contém detalhes sobre as disciplinas oferecidas e a tabela "cursa" tem relação entre alunos e disciplinas, registrando as notas e a frequência de cada aluno em cada disciplina. Além disso, foram disponibilizados os seguintes diagramas:
Para atender às demandas da administração da FGA, você decide desenvolver uma view materializada que agregue essas informações de forma eficaz.
O código SQL cria uma visão materializada chamada "relatorio_disciplina" que contém informações sobre o número de alunos matriculados, a média das notas e a média de faltas para cada disciplina oferecida pela FGA. Essa visão materializada pode ser consultada para obter o relatório detalhado das disciplinas.
Uma das vantagens das views materializadas é que podemos atualizá-las conforme necessário para manter os dados atualizados. Reconhecendo que os dados do relatório não mudam com frequência, você decide agendar a atualização da view materializada em intervalos regulares, por exemplo, no início de cada semestre. Para atualizar a visão materializada, é empregado um comando específico para cada SGBD, como exemplo PostgreSQL:
Com a view materializada pronta e atualizada, você está pronto para fornecer à administração da FGA um relatório completo e detalhado. Alguns exemplos de consultas que podem ser execultadas na visão materializada "relatorio_disciplina":
Consulta disciplinas com as maiores média de notas:
Consulta disciplinas com o maior número de alunos:
Consulta de uma disciplina específica e suas estatísticas:
Nesse exemplo, foi demonstrado como a utilizar Views Materializadas. Essa abordagem contribui para a disponibilização ágil e eficaz de informações relevantes, otimizando consultas no banco de dados. A estratégia de atualização da view materializada a cada semestre assegura a constante atualização dos dados, sem causar excesso de carga ao sistema.
Atividade de Fixação
No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como está sua compreensão sobre o mesmo, são sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento. Boa revisão sobre visão materializada!