Questão de Banco de Dados — PostgreSQL — FGV 2024
- Código
- fg099833
- Banca
- FGV
- Órgão
- TJ-RR
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista Judiciário - Cibersegurança
- AI, apenas.
- BI e II, apenas.
- CI e III, apenas.
- DII e III, apenas.
- EI, II e III.
GabaritoD — II e III, apenas.
Gabarito: letra D — estão corretas apenas as afirmativas II e III. A afirmativa I é falsa porque Materialized Views armazenam fisicamente os resultados da consulta, ao contrário das Views comuns, que são apenas virtuais. O comando REFRESH MATERIALIZED VIEW de fato substitui todo o conteúdo da visão materializada, descartando os dados antigos (afirmativa II correta). Já a cláusula WITH NO DATA na criação de uma Materialized View cria a estrutura vazia, sem populá-la (afirmativa III correta).
A banca testa o conhecimento da diferença fundamental entre Views e Materialized Views no PostgreSQL. Enquanto a View comum é uma "tabela virtual" que não armazena dados, a Materialized View realmente persiste o resultado da consulta em disco, como uma tabela física.
A afirmativa I tenta confundir o candidato tratando View e Materialized View como equivalentes quanto ao armazenamento. Muitos alunos, por associação automática, assumem que ambas são "virtuais". Mas a Materialized View é, por definição, uma estrutura que materializa (armazena) os dados. A View comum é que é virtual. Lembre-se: o nome já diz — "Materialized" = materializada, ou seja, com dados físicos.
Característica | View (Visão) | Materialized View (Visão Materializada) |
|---|---|---|
Armazenamento Físico | Não armazena dados; é uma consulta virtual executada a cada acesso. | Armazena fisicamente o resultado da consulta em disco. |
Comando de Atualização | Não possui comando de atualização; reflete os dados das tabelas base em tempo real. |
|
Cláusula | Não se aplica. | Cria a estrutura da visão materializada sem populá-la com dados. |
Afirma que tanto View quanto Materialized View são apenas cópias virtuais, sem armazenamento físico. Isso é falso. Uma View comum é realmente virtual: o SGBD executa a consulta subjacente a cada acesso, sem persistir os dados. Já uma Materialized View armazena fisicamente o resultado da consulta, ocupando espaço em disco e podendo ser indexada. O próprio contexto de apoio define Views como "objetos virtuais do Banco de Dados... uma tabela VIRTUAL que é gerada por meio da seleção de dados em outras tabelas" (). Essa definição não se aplica às Materialized Views.
O comando REFRESH MATERIALIZED VIEW nome_da_visao_materializada; realmente substitui todo o conteúdo da Materialized View pela execução da consulta que a define, descartando os dados antigos. Esse é o comportamento padrão (não concorrente). Existe a opção CONCURRENTLY para atualização sem bloqueio de leitura, mas o comando básico é o descrito. Portanto, a afirmativa está correta.
A cláusula WITH NO DATA no comando CREATE MATERIALIZED VIEW faz exatamente o que a afirmativa diz: cria a estrutura da visão materializada (as colunas e metadados), mas não a popula com dados. A Materialized View fica inicialmente vazia e inacessível para consultas até que um REFRESH seja executado. Esse é um recurso útil quando se deseja criar a estrutura antecipadamente e popular posteriormente.
Conclusão: Apenas as afirmativas II e III estão corretas, correspondendo à alternativa D.
Gabarito: letra D — corretas II e III.
Link permanente: /questoes/fg099833