Pular para o conteúdo principal

Questão de Banco de Dados — Normalização — FCC 2025

Banco de DadosNormalização
Código
fc150369
Banca
FCC
Órgão
TRT 2
Ano
2025
Cargo
AJ TRT2

Uma equipe de TI de um Tribunal do Trabalho está revisando a modelagem lógica de um sistema de controle de intimações judiciais. Inicialmente, havia uma única tabela chamada Intimacoes com os seguintes atributos:

  •         id_intimacao (chave primária)
  •     nome_servidor
  •     cargo_servidor
  •     data_intimacao
  •     tipo_intimacao
  •     descricao_intimacao

Durante uma auditoria, identificou-se que:

  •     Servidores podem ser intimados várias vezes, mas têm nome e cargo fixos.
  •     O tipo_intimacao é escolhido de uma lista padronizada.
  •   Há repetição de dados e dificuldade de atualização nas colunas nome_servidor, cargo_servidor e tipo_intimacao.

Para resolver o problema, a equipe decide aplicar corretamente a terceira forma normal (3FN) por meio da ação:

  1. AAgrupar os dados por tipo_intimacao usando uma view e aplicar restrições de chave estrangeira apenas na visualização lógica do banco.
  2. BNormalizar apenas os dados de descricao_intimacao para uma nova tabela, pois ela representa um campo de texto variável, o que reduz o custo de armazenamento.
  3. CSeparar os dados em tabelas relacionadas: Servidores, Tipos_Intimacao e Intimacoes, usando chaves estrangeiras para remover dependências transitivas e garantir integridade referencial.
  4. DManter todos os atributos na mesma tabela, mas criar índices compostos sobre nome_servidor e tipo_intimacao para melhorar o desempenho e evitar redundância lógica.
  5. EEliminar a coluna cargo_servidor da tabela e normalizar apenas até a segunda forma normal, já que dividir em mais tabelas tornaria o sistema mais lento.
Revelar gabarito e comentário

GabaritoC — Separar os dados em tabelas relacionadas: Servidores, Tipos_Intimacao e Intimacoes, usando chaves estrangeiras para remover dependências transitivas e garantir integridade referencial.

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

Normalização de dados: aplicando a 3FN

Gabarito: letra C. A terceira forma normal (3FN) exige que a tabela esteja na 2FN e que nenhum atributo não-chave dependa transitivamente da chave primária — ou seja, cada atributo deve depender exclusivamente da chave. No caso, nome_servidor e cargo_servidor dependem do servidor (não da intimação), e tipo_intimacao é um valor padronizado que se repete; a solução correta é decompor em tabelas relacionadas (Servidores, Tipos_Intimacao e Intimacoes) com chaves estrangeiras, eliminando as dependências transitivas e a redundância.

A normalização é o processo de organizar os dados de um banco relacional para reduzir redundância e evitar anomalias de inserção, exclusão e atualização. Ela se dá por meio das formas normais, que são regras cumulativas: para estar na 3FN, a tabela precisa antes estar na 1FN e na 2FN. A 1FN exige atributos atômicos (sem valores multivalorados ou compostos). A 2FN exige que todo atributo não-chave dependa da chave primária inteira (dependência funcional total), eliminando dependências parciais — isso só é relevante quando a chave é composta. A 3FN, por sua vez, elimina as dependências transitivas: um atributo não-chave não pode depender de outro atributo não-chave, que por sua vez depende da chave.

No problema apresentado, a tabela Intimacoes tem id_intimacao como chave primária. Os atributos nome_servidor e cargo_servidor não dependem da intimação, mas sim do servidor — há uma dependência transitiva: id_intimacao → nome_servidor → cargo_servidor. Já tipo_intimacao é um valor de uma lista padronizada, que se repete em várias intimações, gerando redundância. A solução é decompor a tabela em três: Servidores (com id_servidor, nome_servidor, cargo_servidor), Tipos_Intimacao (com id_tipo, tipo_intimacao) e Intimacoes (com id_intimacao, id_servidor (FK), id_tipo (FK), data_intimacao, descricao_intimacao). Assim, cada fato é armazenado uma única vez, e as chaves estrangeiras garantem a integridade referencial.

Um exemplo prático: se o servidor "João" for intimado 10 vezes, na tabela original seu nome e cargo apareceriam 10 vezes. Se ele mudar de cargo, seria necessário atualizar 10 registros — uma anomalia de atualização. Com a decomposição, o cargo de João fica armazenado uma única vez na tabela Servidores; uma única atualização reflete em todas as intimações. O mesmo vale para o tipo de intimação: se a descrição de um tipo padronizado mudar, basta alterar um registro em Tipos_Intimacao.

A pegadinha desta questão é confundir normalização com desempenho ou com soluções superficiais. A normalização não tem como objetivo melhorar a performance — pelo contrário, tabelas normalizadas podem gerar consultas mais lentas devido a joins. O objetivo é eliminar redundância e anomalias. Alternativas que propõem views, índices ou manter tudo em uma tabela não resolvem o problema lógico de dependências transitivas. A alternativa que propõe normalizar apenas descricao_intimacao também está errada, pois esse campo não é a fonte da redundância — os problemas estão em nome_servidor, cargo_servidor e tipo_intimacao.

Guarde o critério decisivo: para aplicar a 3FN, identifique as dependências transitivas (atributo não-chave dependendo de outro atributo não-chave) e decomponha em tabelas separadas, usando chaves estrangeiras para manter o relacionamento. É exatamente isso que separa a alternativa correta das demais.

Critério

Alternativa C (correta)

Alternativas A, B, D, E (incorretas)

Elimina dependências transitivas

Sim — decompõe em Servidores, Tipos_Intimacao e Intimacoes, removendo id_intimacao → nome_servidor → cargo_servidor

Não — A usa view (não física), B normaliza campo errado, D mantém tudo na mesma tabela, E remove atributo sem decompor

Elimina redundância de dados

Sim — cada servidor e tipo armazenados uma única vez

Não — repetição de nome/cargo/tipo persiste em todas as alternativas

Garante integridade referencial

Sim — chaves estrangeiras (id_servidor, id_tipo) em Intimacoes

Não — A tenta aplicar FK em view (inviável), B/D/E não criam relacionamentos

Ataca a causa real do problema

Sim — foca em nome_servidor, cargo_servidor e tipo_intimacao

Não — A/B/D/E tratam sintomas (view, campo errado, índice, remoção)

Aplica corretamente a 3FN

Sim — elimina dependência transitiva e parcial

Não — B/D/E não chegam à 3FN; A não normaliza fisicamente

Alternativa A — ❌ Incorreta

Criar uma view e aplicar restrições de chave estrangeira apenas na visualização lógica não resolve o problema. Uma view é uma consulta armazenada, não uma estrutura física; ela não elimina a redundância nem as dependências transitivas na tabela base. Além disso, chaves estrangeiras são definidas nas tabelas físicas, não em views. A normalização exige decomposição real das tabelas, não uma "ilusão" de normalização por meio de views.

Alternativa B — ❌ Incorreta

Normalizar apenas descricao_intimacao não ataca o problema. Esse campo é um texto variável que depende diretamente da intimação (id_intimacao), portanto não gera dependência transitiva nem redundância significativa. Os atributos problemáticos são nome_servidor, cargo_servidor (dependência transitiva) e tipo_intimacao (valor repetido de lista padronizada). A alternativa confunde o campo que "parece" variável com a real fonte de redundância.

Alternativa C — ✅ Correta ⟵ GABARITO

Esta é a aplicação correta da 3FN. Decompor em Servidores, Tipos_Intimacao e Intimacoes elimina as dependências transitivas: nome_servidor e cargo_servidor passam a depender da chave de Servidores, e tipo_intimacao passa a depender da chave de Tipos_Intimacao. As chaves estrangeiras em Intimacoes (id_servidor, id_tipo) garantem a integridade referencial e eliminam a redundância, pois cada dado é armazenado uma única vez.

Alternativa D — ❌ Incorreta

Manter todos os atributos na mesma tabela e criar índices compostos não elimina a redundância lógica. Índices melhoram o desempenho de consultas, mas não resolvem o problema de dependências transitivas nem evitam a repetição de nome_servidor, cargo_servidor e tipo_intimacao. A normalização é uma questão de modelagem lógica, não de otimização física. A alternativa confunde o papel dos índices (performance) com o da normalização (eliminar redundância).

Alternativa E — ❌ Incorreta

Eliminar cargo_servidor e parar na 2FN não é a solução. Remover um atributo não resolve a dependência transitiva de nome_servidor (que ainda dependeria do servidor, não da intimação). Além disso, a 2FN trata de dependências parciais (relevante apenas com chave composta), não de dependências transitivas — que são o foco da 3FN. A justificativa de que "dividir em mais tabelas tornaria o sistema mais lento" é uma falácia: a normalização pode gerar joins, mas o objetivo aqui é eliminar redundância e anomalias, não otimizar performance.

Gabarito: letra C

Link permanente: /questoes/fc150369