Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FGV 2024

Banco de DadosPostgreSQL
Código
fg099833
Banca
FGV
Órgão
TJ-RR
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Cibersegurança
PostgreSQL 16 suporta tanto Views (Visões) quanto Materialized Views (Visões Materializadas).Avalie as seguintes afirmações relacionadas a esses conceitos.I. Tanto uma Materialized View como uma View são apenas cópias virtuais, sem que haja um armazenamento físico dos dados (resultados da consulta).II. O comando REFRESH MATERIALIZED VIEW nome_da_visao_materializada; substitui completamente o conteúdo da Materialized View, descartando os dados antigos.III. A utilização da cláusula WITH NO DATA, no comando de criação de uma Materialized View, faz com que sua estrutura seja criada, mas sem preenchê-la, isto é, sem popular com dados no momento da criação.Está correto o que se afirma em
  1. AI, apenas.
  2. BI e II, apenas.
  3. CI e III, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoD — II e III, apenas.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Views e Materialized Views no PostgreSQL

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.

NÃO CAIA NESSA!

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.

REFRESH MATERIALIZED VIEW nome; substitui todo o conteúdo, descartando os dados antigos.

Cláusula WITH NO DATA

Não se aplica.

Cria a estrutura da visão materializada sem populá-la com dados.

Item I — ❌ Incorreta

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.

Item II — ✅ Correta

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.

Item III — ✅ 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