Questão de Banco de Dados — Visão (View) — FUNDATEC 2025
- Código
- qa699101
- Banca
- FUNDATEC
- Órgão
- BRDE
- Ano
- 2025
- Cargo
- Ana Sist ( )
- AAsserção declarativa.
- BVisão.
- CSQL embutida.
- DCursor.
- EAtualização incremental.
GabaritoE — Atualização incremental.
Gabarito: letra E. A estratégia que mantém a tabela de uma visão materializada sempre atualizada quando as tabelas básicas são modificadas é a atualização incremental, na qual o SGBD determina quais novas tuplas devem ser inseridas, excluídas ou modificadas na visão a partir das mudanças aplicadas às tabelas base. Esse conceito está diretamente ligado à materialização de visões, conforme a literatura clássica de banco de dados (Elmasri & Navathe).
Para entender a questão, é preciso primeiro distinguir os dois grandes grupos de visões. A visão comum (virtual) não armazena dados: ela guarda apenas a consulta SQL definida no momento da criação, e, a cada acesso, o SGBD executa essa consulta sobre as tabelas base — por isso ela reflete sempre o estado atual dos dados, mas paga o custo de processamento a cada leitura. Já a visão materializada é diferente: o SGBD executa a consulta e armazena fisicamente o resultado em uma tabela real, o que acelera as consultas posteriores, mas cria o problema da defasagem — se as tabelas base mudarem, a tabela materializada fica desatualizada até que seja recalculada.
É exatamente nesse ponto que entra a atualização incremental. Quando uma visão é materializada, o SGBD precisa de uma estratégia eficiente para manter essa tabela física sincronizada com as tabelas base. Em vez de descartar e recalcular a visão inteira a cada alteração (o que seria caro), a atualização incremental identifica apenas as tuplas afetadas pela mudança — inserções, exclusões e modificações — e aplica somente essas diferenças à tabela materializada. O trecho abaixo, da obra de Elmasri & Navathe, descreve exatamente esse mecanismo:
Elmasri & Navathe — Sistemas de Banco de Dados:
"Técnicas que usam o conceito de atualização incremental têm sido desenvolvidas para essa finalidade, nas quais o SGBD pode determinar quais novas tuplas devem ser inseridas, excluídas ou modificadas em uma tabela de visão materializada quando uma atualização de banco de dados é aplicada a uma das tabelas básicas definidas."
Ainda segundo a mesma fonte, existem três estratégias de quando essa atualização ocorre: a imediata (atualiza a visão assim que as tabelas base são alteradas), a adiada (atualiza quando a visão é consultada) e a periódica (atualiza em intervalos regulares, podendo devolver resultados desatualizados). A questão, porém, não pergunta quando atualizar, e sim como atualizar — e a resposta é a técnica de atualização incremental, que é o mecanismo que decide quais tuplas devem ser inseridas, excluídas ou modificadas.
A pegadinha da banca está em confundir o objeto (a visão) com a estratégia de manutenção (a atualização incremental). A alternativa B (Visão) é o conceito central do enunciado, mas não responde à pergunta — ela é o que precisa ser atualizado, não o mecanismo que faz a atualização. Guarde essa distinção: visão é o objeto; atualização incremental é a técnica que mantém a visão materializada sincronizada.
Asserção declarativa não é um termo da área de banco de dados relacional. O conceito mais próximo seria "asserção" (assertion), que no SQL é um mecanismo de integridade que garante que uma condição seja sempre verdadeira no banco — mas isso nada tem a ver com atualizar a tabela de uma visão. A banca usa um termo vago para induzir o candidato a marcar algo que "parece técnico", mas não existe nesse contexto.
A visão é o objeto central do enunciado — é ela que precisa ser mantida atualizada — mas não é a estratégia de atualização. A visão comum é uma tabela virtual que reflete os dados das tabelas base a cada consulta; a visão materializada é a que armazena fisicamente o resultado. Em nenhum dos casos a visão em si é a técnica que atualiza sua própria tabela. A banca troca o objeto pela estratégia: a pergunta é como atualizar, e a resposta não pode ser o próprio objeto a ser atualizado.
SQL embutida (embedded SQL) é a técnica de incorporar comandos SQL dentro de uma linguagem de programação hospedeira (como C, Java ou COBOL), permitindo que o programa acesse o banco de dados. Isso é uma forma de interação entre aplicação e SGBD, não um mecanismo de manutenção de visões materializadas. A confusão aqui é entre a forma de acesso aos dados e a estratégia de sincronização interna do banco.
Cursor é um mecanismo do SQL que permite percorrer linha a linha o resultado de uma consulta, geralmente usado em procedimentos armazenados ou SQL embutida para processar registros individualmente. Ele é uma ferramenta de navegação sobre resultados, não uma estratégia de atualização de visões. A banca explora a associação mental com "atualizar registros", mas o cursor não tem relação com a manutenção de visões materializadas.
A atualização incremental é exatamente a técnica descrita no enunciado: quando as tabelas básicas são atualizadas, o SGBD determina quais tuplas devem ser inseridas, excluídas ou modificadas na tabela da visão materializada, garantindo que ela esteja sempre atualizada. Essa é a estratégia eficiente para manter a visão sincronizada sem precisar recalculá-la do zero a cada alteração. O trecho de Elmasri & Navathe citado acima confirma literalmente essa definição.
A regra de ouro para levar à prova: visão comum = consulta armazenada, sempre atual, paga o custo a cada leitura; visão materializada = resultado armazenado fisicamente, rápido de ler, mas precisa de atualização — e a técnica que faz essa atualização é a incremental.
Gabarito: letra E
Link permanente: /questoes/qa699101