Questão nº 63

Questão de Tecnologia da Informação · FGV ALEP 2024 (nº 63)

FGV2024Analista Legislativo - Desenvolvedor de SistemasTecnologia da Informação
Gabarito: Dver comentário ↓

Em uma Casa Legislativa, considere um cenário restrito, no qual parlamentares submetem proposições (propostas legislativas) para avaliação das instâncias do Parlamento.
O modelo de conceitual de classes a seguir modela tal situação:

Figura da questão de Tecnologia da Informação

Em um contexto no qual o modelo conceitual será mapeado segundo a abordagem Mapeamento Objeto-Relacional (ORM), e que a classe “Proposição” foi mapeada para um banco de dados relacional da seguinte forma:

Proposição ( {cod_proposicao} <PK>, identificacao, ementa, indexacao, tipo )

sendo o atributo “cod_proposicao” a chave primária da tabela (PK) e os demais atributos simples


Considerando, nas relações apresentadas, os atributos indicados como chaves primárias <PK> ou estrangeiras <FK> entre chaves, assinale a opção que representa um mapeamento ORM possível para as classes “Tramitação” e “Despacho”, mantendo-se a completa semântica do modelo conceitual.

Resposta comentada

Gabarito Alternativa D

O Mapeamento Objeto-Relacional (ORM) é a técnica de converter dados entre um sistema de tipos incompatíveis usado em uma linguagem de programação orientada a objetos (como classes e objetos) e um banco de dados relacional (como tabelas e linhas). Em essência, ele permite que você interaja com o banco de dados usando objetos da sua aplicação, sem precisar escrever SQL diretamente.

Analisando o modelo conceitual e as alternativas:

  • As relações entre Proposição e Tramitação, e entre Tramitação e Despacho, são de composição (indicado pelo losango preenchido) e de cardinalidade 1 para muitos (1 para 1..*). Isso significa que uma Tramitação pertence a uma Proposição e um Despacho pertence a uma Tramitação.
  • Em mapeamento ORM para composição 1-para-muitos, a chave primária da entidade "pai" (o lado do "1") geralmente se torna parte da chave primária da entidade "filha" (o lado do "muitos"), além de ser uma chave estrangeira. Isso garante que a identidade da entidade filha seja dependente da entidade pai e que cada instância da filha seja única dentro do contexto da pai.

Proposição ( {cod_proposicao} <PK>, identificacao, ementa, indexacao, tipo )

  • Tramitação (1) -- (1..*) Proposição: A chave primária de Proposição (cod_proposicao) deve ser uma chave estrangeira em Tramitação e fazer parte da chave primária de Tramitação. Assim, {cod_proposicao, cod_tramitacao} seria a PK de Tramitação.
  • Despacho (1) -- (1..*) Tramitação: A chave primária de Tramitação ({cod_proposicao, cod_tramitacao}) deve ser uma chave estrangeira em Despacho e fazer parte da chave primária de Despacho. Assim, {cod_proposicao, cod_tramitacao, cod_despacho} seria a PK de Despacho.

(A) Incorreta: Esta alternativa ignora completamente as relações de composição e cardinalidade, tratando Tramitação e Despacho como entidades independentes, sem chaves estrangeiras que as liguem a Proposição ou entre si.

(B) Incorreta: Embora estabeleça uma relação entre Tramitação e Despacho (com cod_tramitacao como FK e parte da PK de Despacho), ela falha em conectar Tramitação a Proposição, perdendo a semântica da primeira composição. Além disso, se cod_tramitacao fosse a única PK de Tramitação, implicaria que cod_tramitacao é globalmente único, o que não é o padrão para um identificador em uma composição 1-para-muitos.

(C) Incorreta: Esta alternativa inverte a direção da relação entre Tramitação e Despacho, sugerindo que Tramitação referencia Despacho, o que contradiz o modelo conceitual. Além disso, também falha em conectar Tramitação a Proposição.

(D) Correta: Esta opção implementa corretamente as relações de composição 1-para-muitos.

  • Tramitação ( {cod_proposicao<FK>, cod_tramitacao} <PK>, forma, regime ): A chave primária de Proposição (cod_proposicao) é corretamente incluída como chave estrangeira e parte da chave primária de Tramitação. Isso garante que cada cod_tramitacao seja único dentro de uma Proposição específica.
  • Despacho ( { {cod_proposicao, cod_tramitacao} <FK>, cod_despacho} <PK>, data, andamento ): A chave primária composta de Tramitação ({cod_proposicao, cod_tramitacao}) é corretamente incluída como chave estrangeira composta e parte da chave primária de Despacho. Isso garante que cada cod_despacho seja único dentro de uma Tramitação específica.
  • As restrições de chave estrangeira estão formuladas de forma precisa para chaves compostas, garantindo a integridade referencial e a completa semântica do modelo.

(E) Incorreta: Esta alternativa é um distrator muito forte, pois a estrutura das chaves primárias é idêntica à da alternativa D, que está correta. No entanto, o erro está na formulação das restrições de chave estrangeira para a tabela Despacho.

  • Restrições da tabela Despacho: cod_proposicao REFERENCIA Proposição(cod_proposicao), e cod_tramitacao REFERENCIA Tramitação (cod_tramitacao)
  • Para uma chave estrangeira composta que referencia a chave primária composta de Tramitação ({cod_proposicao, cod_tramitacao}), a restrição deve ser REFERENCIA Tramitação(cod_proposicao, cod_tramitacao). A formulação apresentada em E, com duas referências separadas (cod_proposicao para Proposição e cod_tramitacao para Tramitação), é semanticamente incorreta para a dependência direta de Despacho em Tramitação via sua chave primária composta. A chave estrangeira em Despacho deve referenciar a combinação de cod_proposicao e cod_tramitacao na tabela Tramitação como uma única unidade lógica, não como duas referências independentes, uma delas (cod_tramitacao) para uma coluna que não é única por si só na tabela Tramitação.

Fonte: FGV ALEP 2024 Analista Legislativo - Desenvolvedor de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho