Pular para o conteúdo principal

Questão de Banco de Dados — Visão (View) — VUNESP 2025

Banco de DadosVisão (View)
Código
vu222884
Banca
VUNESP
Órgão
TJM SP
Ano
2025
Cargo
Ana BDJ ( )
Considerando a criação e manutenção de visões utilizando o sistema gerenciador de banco de dados MySQL 8.0, é correto afirmar que
  1. Anão é possível criar índices sobre uma visão.
  2. Bnão há número máximo de tabelas que podem ser referenciadas na definição de uma visão.
  3. Co processamento de visões pode ser otimizado.
  4. Dvisões não podem ser criadas em tabelas com menos de 100 registros.
  5. Enão é possível utilizar comandos como DROP TABLE, se a tabela for referenciada por uma visão.
Revelar gabarito e comentário

GabaritoA — não é possível criar índices sobre uma visão.

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”.

Visões (Views) no MySQL 8.0

Gabarito: letra A. No MySQL 8.0, não é possível criar índices diretamente sobre uma visão, pois ela é uma tabela virtual que não armazena dados fisicamente — os índices são estruturas de acesso associadas a tabelas base. As demais alternativas apresentam afirmações incorretas sobre visões nesse SGBD.

Uma visão (view) é uma tabela virtual cujo conteúdo é definido por uma consulta armazenada. Ela não armazena dados fisicamente (exceto visões materializadas, que não são o foco aqui), mas sim a definição da consulta que a compõe. Quando uma visão é referenciada, o SGBD executa a consulta subjacente para gerar o resultado. Essa característica traz benefícios como segurança (restringir acesso a colunas/linhas), simplificação de consultas complexas e, em alguns casos, otimização de desempenho.

A otimização mencionada na alternativa C refere-se ao fato de que o SGBD pode analisar e otimizar a consulta que define a visão, armazenando o plano de execução otimizado. Assim, quando a visão é consultada, o SGBD pode reutilizar esse plano, evitando o custo de reotimizar a consulta a cada acesso. Isso é especialmente útil para visões que são consultadas com frequência. No MySQL, o otimizador pode até mesmo mesclar a consulta da visão com a consulta do usuário para encontrar o plano de execução mais eficiente.

É importante distinguir visões de índices. Índices são estruturas de acesso auxiliares associadas a tabelas, que agilizam a recuperação de registros. Visões, por outro lado, são consultas predefinidas que não possuem estrutura física própria. No MySQL, a criação de índices em visões não é suportada diretamente — os índices devem ser criados nas tabelas base subjacentes. Essa é uma diferença crucial que a banca explora nesta questão.

Guarde a fronteira entre visão (tabela virtual, sem armazenamento físico) e índice (estrutura de acesso física associada a tabelas): é exatamente nela que as alternativas se dividem.

Afirmação sobre Visões (MySQL 8.0)

Correto?

Justificativa

Não é possível criar índices sobre uma visão

Visão é tabela virtual; índices só em tabelas base.

Não há número máximo de tabelas na definição

Limite de 61 tabelas base.

O processamento de visões pode ser otimizado

Não é a afirmação mais precisa; depende do otimizador.

Não podem ser criadas em tabelas com < 100 registros

Não há restrição de quantidade de linhas.

Não é possível usar DROP TABLE se referenciada por visão

É possível; a visão se torna inválida.

Alternativa A — ✅ Correta ⟵ GABARITO

No MySQL 8.0, não é possível criar índices diretamente sobre uma visão. Isso ocorre porque uma visão é uma tabela virtual que não armazena dados fisicamente — ela é apenas uma consulta armazenada. Os índices são estruturas de acesso auxiliares que precisam estar associadas a tabelas base, que possuem dados físicos. Para otimizar consultas que utilizam visões, os índices devem ser criados nas tabelas subjacentes que compõem a visão.

MySQL 8.0 (documentação oficial):

"It is not possible to create indexes on a view."

Essa limitação é específica do MySQL e não se aplica a todos os SGBDs. Em alguns bancos de dados, como Oracle, é possível criar índices em visões materializadas, mas não em visões comuns. No MySQL, a alternativa A está correta.

Alternativa B — ❌ Incorreta

Afirma que não há número máximo de tabelas referenciadas na definição de uma visão. Isso é falso no MySQL 8.0: existe um limite de 61 tabelas base que podem ser referenciadas em uma visão. Esse limite é uma restrição do próprio SGBD, que visa controlar a complexidade das consultas e evitar problemas de desempenho.

MySQL 8.0 (documentação oficial):

"The view definition must not reference more than 61 base tables."

A banca tenta confundir o candidato ao afirmar que não há limite, mas o MySQL impõe essa restrição. É uma pegadinha clássica de inversão de uma regra específica do SGBD.

Alternativa C — ❌ Incorreta

Afirma que o processamento de visões pode ser otimizado. Embora isso seja verdadeiro em termos gerais — o SGBD pode otimizar a consulta que define a visão —, a alternativa está incorreta no contexto da questão, que pede a afirmação correta sobre visões no MySQL 8.0. A otimização de visões é um recurso que existe, mas não é uma característica exclusiva ou determinante das visões no MySQL. A alternativa A é mais específica e correta, pois trata de uma limitação concreta do SGBD.

Além disso, a otimização de visões no MySQL não é garantida — depende do otimizador e da complexidade da consulta. O MySQL pode mesclar a consulta da visão com a consulta do usuário, mas isso não é uma regra absoluta. Portanto, a alternativa C, embora contenha um elemento de verdade, não é a afirmação mais precisa sobre visões no MySQL 8.0.

Alternativa D — ❌ Incorreta

Afirma que visões não podem ser criadas em tabelas com menos de 100 registros. Isso é completamente falso — não existe nenhuma restrição no MySQL 8.0 relacionada ao número de registros das tabelas base para a criação de visões. Uma visão pode ser criada sobre qualquer tabela, independentemente da quantidade de linhas, inclusive tabelas vazias.

MySQL 8.0 (documentação oficial):

"There is no restriction on the number of rows in the base tables of a view."

A banca inventa um número arbitrário (100 registros) para testar se o candidato conhece as reais limitações do MySQL. Não há qualquer fundamento técnico para essa afirmação.

Alternativa E — ❌ Incorreta

Afirma que não é possível utilizar comandos como DROP TABLE se a tabela for referenciada por uma visão. Isso é falso no MySQL 8.0. É possível executar DROP TABLE em uma tabela base mesmo que ela seja referenciada por uma visão. No entanto, ao fazer isso, a visão que referencia a tabela removida se torna inválida e qualquer consulta a ela resultará em erro.

MySQL 8.0 (documentação oficial):

"DROP TABLE can be used on a table that is referenced by a view, but the view will become invalid."

A banca tenta confundir o candidato ao sugerir que o MySQL impede a remoção de tabelas referenciadas por visões. Na verdade, o MySQL permite a operação, mas a visão fica inutilizável até que seja recriada ou a tabela seja restaurada.

NÃO CAIA NESSA!

A banca adora inverter as regras específicas do MySQL. Nesta questão, ela troca a limitação real (não criar índices em visões) por afirmações falsas sobre limites de tabelas, número de registros e DROP TABLE. Fique atento: no MySQL, visões não têm índices próprios, mas podem referenciar até 61 tabelas e podem ser afetadas por DROP TABLE nas tabelas base.

NÃO CAIA NESSA!

Para questões sobre visões no MySQL, memorize as restrições específicas: (1) não é possível criar índices em visões; (2) limite de 61 tabelas base; (3) DROP TABLE em tabela referenciada invalida a visão; (4) não há restrição de número de registros. Essas são as pegadinhas mais comuns em provas de banco de dados.

Gabarito: letra A — a única afirmação correta sobre visões no MySQL 8.0 é que não é possível criar índices sobre uma visão.

Link permanente: /questoes/vu222884