Pular para o conteúdo principal

Questão de Banco de Dados — Modelagem e Mapeamento ER-relacional — VUNESP 2023

Banco de DadosModelagem e Mapeamento ER-relacional
Código
vu195951
Banca
VUNESP
Órgão
CIJUN
Ano
2023
Cargo
Ana ( )

O conjunto de problemas conceituais e técnicos que surgem quando um modelo orientado a objetos é mapeado em um modelo relacional para persistência de dados (Object-Relational Mapping ou ORM) é denominado

  1. Aimpedance mismatch.
  2. Bbuffer overflow.
  3. Cstack overflow.
  4. Daccess violation.
  5. Epath traversal.
Revelar gabarito e comentário

GabaritoA — impedance mismatch.

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

Object-Relational Mapping (ORM) e o impedance mismatch

Gabarito: letra A. O conjunto de problemas conceituais e técnicos que surgem ao mapear um modelo orientado a objetos para um modelo relacional é denominado impedance mismatch (ou "incompatibilidade de impedância"). Esse termo descreve a dificuldade de conciliar dois paradigmas distintos: o modelo de objetos (com classes, herança, polimorfismo e encapsulamento) e o modelo relacional (baseado em tabelas, tuplas e chaves). As demais alternativas referem-se a problemas de segurança ou de execução de programas, não a desafios de mapeamento objeto-relacional.

O conceito de impedance mismatch é central no desenvolvimento de aplicações que utilizam bancos de dados relacionais com linguagens orientadas a objetos. Quando um programador escreve código em Java, C# ou Python, ele manipula objetos que possuem estado e comportamento. No entanto, ao persistir esses objetos em um banco relacional, é necessário traduzir a estrutura de classes para tabelas, e as instâncias para linhas. Essa tradução não é trivial, pois os dois modelos têm princípios diferentes: o modelo relacional é baseado em teoria de conjuntos e lógica de predicados, enquanto o modelo orientado a objetos é baseado em conceitos como identidade, herança e polimorfismo.

A origem do termo vem da engenharia elétrica, onde "impedância" é a oposição ao fluxo de corrente em um circuito. Quando dois componentes têm impedâncias diferentes, há uma perda de eficiência na transferência de energia. Analogamente, no contexto de banco de dados, a "incompatibilidade de impedância" representa a perda de eficiência e a complexidade adicional ao conectar o mundo dos objetos com o mundo relacional. Essa incompatibilidade se manifesta em vários aspectos, como a diferença entre tipos de dados (por exemplo, um objeto pode ter um atributo do tipo Date, enquanto o banco relacional pode armazenar datas em formatos diferentes), a representação de herança (que não tem correspondência direta em tabelas) e a navegação entre objetos (que no modelo relacional é feita por meio de joins).

Na prática, o impedance mismatch é o motivo pelo qual surgiram os frameworks de mapeamento objeto-relacional (ORM), como Hibernate (Java), Entity Framework (.NET) e SQLAlchemy (Python). Esses frameworks automatizam a conversão entre objetos e tabelas, reduzindo o trabalho manual do programador. No entanto, mesmo com o uso de ORMs, o impedance mismatch não desaparece completamente; ele apenas é gerenciado de forma mais eficiente. Por exemplo, ao consultar um objeto com seus relacionamentos, o ORM pode gerar consultas SQL complexas, e o desenvolvedor precisa entender o funcionamento interno para evitar problemas de desempenho.

A banca explora aqui um conhecimento específico de terminologia. O candidato que não conhece o termo impedance mismatch pode ser tentado a escolher uma das alternativas que parecem relacionadas a problemas de computação, como buffer overflow ou stack overflow. No entanto, essas opções referem-se a falhas de segurança ou de execução de programas, não a desafios de modelagem de dados. A alternativa correta é a única que se relaciona diretamente com o mapeamento objeto-relacional.

Alternativa A — ✅ Correta ⟵ GABARITO

O termo impedance mismatch é exatamente o que descreve o conjunto de problemas conceituais e técnicos que surgem ao mapear um modelo orientado a objetos para um modelo relacional. A expressão é amplamente utilizada na literatura de banco de dados e engenharia de software para designar a incompatibilidade entre os paradigmas de programação orientada a objetos e o modelo relacional. Essa incompatibilidade inclui diferenças de tipos de dados, representação de herança, navegação entre objetos e gerenciamento de identidade. O uso de frameworks ORM é uma tentativa de mitigar esses problemas, mas eles não são eliminados por completo.

Alternativa B — ❌ Incorreta

Buffer overflow (estouro de buffer) é uma vulnerabilidade de segurança que ocorre quando um programa escreve dados além dos limites de um buffer de memória, podendo corromper dados adjacentes ou executar código malicioso. Não tem relação com o mapeamento objeto-relacional. A banca inclui essa alternativa como um distrator para confundir o candidato que não conhece o termo correto, mas ela se refere a um problema de segurança de software, não a um desafio de modelagem de dados.

Alternativa C — ❌ Incorreta

Stack overflow (estouro de pilha) é um erro de execução que ocorre quando a pilha de chamadas de um programa excede seu limite, geralmente devido a recursão infinita ou a um número excessivo de chamadas de função. É um problema de execução de programas, não um problema de mapeamento objeto-relacional. Assim como o buffer overflow, é um distrator que se refere a um erro de programação, não a um desafio de persistência de dados.

Alternativa D — ❌ Incorreta

Access violation (violação de acesso) é um erro que ocorre quando um programa tenta acessar uma área de memória à qual não tem permissão, geralmente resultando em uma falha de segmentação. É um erro de execução de programas, não um problema de mapeamento objeto-relacional. A banca inclui essa alternativa como um distrator, mas ela não tem relação com o conceito de impedance mismatch.

Alternativa E — ❌ Incorreta

Path traversal (também conhecido como directory traversal) é uma vulnerabilidade de segurança que permite a um atacante acessar arquivos fora do diretório raiz de uma aplicação web, explorando falhas na validação de caminhos de arquivos. É um problema de segurança de aplicações web, não um problema de mapeamento objeto-relacional. A banca inclui essa alternativa como um distrator, mas ela se refere a uma vulnerabilidade de segurança, não a um desafio de modelagem de dados.

Gabarito: letra A

Link permanente: /questoes/vu195951