Pular para o conteúdo principal

Questão de Banco de Dados — Normalização — FGV 2024

Banco de DadosNormalização
Código
fg165203
Banca
FGV
Órgão
TJ AP
Ano
2024
Cargo
AJ ( )

Considere uma tabela relacional com atributos (colunas) A, B, C, D e E, na qual as dependências funcionais conhecidas são:

 

A -> B

 

A -> C

 

A -> D


D-> E

 

O comando de criação dessa tabela é mostrado a seguir.

 

create table X(A int, B int, C int, D int, E int,

               constraint K1 unique (A),

               constraint K2 unique (D)

              )

 

De acordo com as formas normais Primeira, Segunda, Terceira e Boyce-Codd, a dependência funcional adicional necessária e suficiente para a validade desse esquema é:

  1. AA -> E;
  2. BA, D -> E;
  3. CD -> A;
  4. DD -> B, C, D;
  5. EE -> A.
Revelar gabarito e comentário

GabaritoC — D -> A;

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: Formas Normais e Dependências Funcionais

Gabarito: letra C. A dependência funcional adicional necessária e suficiente para a validade do esquema é D → A. Com as dependências dadas (A → B, A → C, A → D, D → E) e as chaves candidatas A e D, a tabela viola a 3FN e a FNBC devido à dependência transitiva D → E (D não é chave, mas determina E). Ao adicionar D → A, D passa a ser uma superchave, eliminando a violação e tornando o esquema válido para todas as formas normais até a FNBC.

A normalização é o processo de organizar os dados em tabelas para minimizar redundância e anomalias de inserção, exclusão e atualização. Ela se baseia nas dependências funcionais (DFs) entre atributos. Uma dependência funcional A → B significa que o valor de A determina unicamente o valor de B. As formas normais são regras cumulativas: para estar na 2FN, a tabela deve estar na 1FN; para estar na 3FN, deve estar na 2FN; e assim por diante.

Vamos analisar o esquema dado: R(A, B, C, D, E) com as DFs A → B, A → C, A → D e D → E. As chaves candidatas são A (pois A determina todos os outros) e D (pois D → E, e com D → A, D determinaria todos). O comando SQL define K1 unique (A) e K2 unique (D), confirmando que A e D são chaves candidatas.

A tabela está na 1FN, pois todos os atributos são atômicos. Está na 2FN, pois a chave é simples (A ou D), não havendo dependência parcial. Porém, viola a 3FN e a FNBC devido à dependência transitiva D → E: D não é uma superchave, mas determina E, que é um atributo não chave. Para corrigir, é necessário que D seja uma superchave, o que é alcançado adicionando D → A. Com isso, D determina A, e por transitividade, D determina todos os outros atributos, tornando-se uma chave candidata. Assim, a dependência transitiva é eliminada e o esquema fica válido para todas as formas normais até a FNBC.

Critério

Esquema Original (A, B, C, D, E)

Com D → A (Gabarito)

Chaves candidatas

A (única, pois D não determina A)

A e D (ambas determinam todos os atributos)

Dependência transitiva

D → E (D não é superchave)

Eliminada (D agora é superchave)

Conformidade com 3FN

❌ Viola (atributo não-chave E depende de D, que não é chave)

✅ Válida

Conformidade com FNBC

❌ Viola (D → E, mas D não é superchave)

✅ Válida

Efeito da DF adicional

D passa a ser superchave, eliminando a violação

Alternativa A — ❌ Incorreta

A → E não é suficiente. Embora A → D e D → E impliquem A → E por transitividade, essa dependência já é derivada das existentes e não resolve o problema da dependência transitiva D → E. Ainda haveria a violação da 3FN e FNBC, pois D continuaria não sendo superchave.

Alternativa B — ❌ Incorreta

A, D → E é uma dependência redundante, pois A → D e D → E já implicam A, D → E. Adicionar essa dependência não altera o conjunto de chaves candidatas nem elimina a dependência transitiva D → E. Portanto, não é suficiente para a validade do esquema.

Alternativa C — ✅ Correta ⟵ GABARITO

D → A é a dependência necessária e suficiente. Ao adicionar D → A, D passa a determinar A, e por transitividade (D → A, A → B, A → C, A → D), D determina todos os atributos, tornando-se uma superchave. Isso elimina a dependência transitiva D → E, pois D agora é chave candidata. O esquema fica válido para 1FN, 2FN, 3FN e FNBC.

Alternativa D — ❌ Incorreta

D → B, C, D é uma dependência que inclui D no lado direito, o que é trivial e não adiciona informação. Além disso, não torna D uma superchave, pois não determina A nem E diretamente. Portanto, não resolve a violação da 3FN e FNBC.

Alternativa E — ❌ Incorreta

E → A não é suficiente. Embora possa criar uma nova chave candidata (E), não elimina a dependência transitiva D → E, pois D ainda não seria superchave. A violação da 3FN e FNBC persistiria.

NÃO CAIA NESSA!

A banca explora a confusão entre dependência funcional derivada e dependência que altera o conjunto de chaves. A → E (alternativa A) é uma dependência válida, mas já derivada das existentes, e não corrige a violação. A pegadinha é pensar que qualquer dependência adicional resolve o problema, quando é preciso que D se torne superchave.

PEGA ESSA DICA!

Para resolver questões de normalização, identifique as chaves candidatas e verifique se há dependências transitivas ou parciais. Se houver uma dependência X → Y onde X não é superchave, adicione uma dependência que torne X superchave. Neste caso, D → A faz D virar chave.

Gabarito: letra C

Link permanente: /questoes/fg165203