Questão de Banco de Dados — Normalização — FGV 2024
Banco de Dados›Normalizaçã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 é:
AA -> E;
BA, D -> E;
CD -> A;
DD -> B, C, D;
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.