Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2023

Banco de DadosSQL
Código
qq890102
Banca
FUNDATEC
Órgão
BRDE
Ano
2023
Nível
Superior
Cargo
Analista de Sistemas - Administração de Banco de Dados
Uma empresa de logística, que possui carros e bombas de combustível, deseja controlar o abastecimento de sua frota. Ela deseja poder gerenciar cada abastecimento realizado em um de seus veículos. O analista identificou os dados importantes, apresentados abaixo na forma de nome de atributo e sua semântica. Projetou então uma tabela ABASTECIMENTO, descrita abaixo em SQL padrão, que apresentou ao DBA.46.png 693×171Create table ABASTECIMENTO (nbomb int not null, capac int not null, data_hora timestamp not null, placa char(7) not null, descr varchar(50) not null, ano_fab date not null, litros int not null, primary key (nbomb, data_hora)); A DBA analisou essa proposta e observou que não seguia as formas normais. Com base na descrição dos atributos acima, assinale com V, se a dependência funcional é responsável pelo fato da tabela não estar na terceira forma normal, ou com F, em caso contrário. ( ) nbomb, data-hora → capac ( ) nbomb, data-hora → placa ( ) nbomb, data-hora → ano-fab A ordem correta de preenchimento dos parênteses, de cima para baixo, é:
  1. AV – V – V.
  2. BF – V – F.
  3. CV – F – V.
  4. DF – F – V.
  5. EF – F – F.
Revelar gabarito e comentário

GabaritoC — V – F – V.

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 Banco de Dados: Terceira Forma Normal e Dependências Funcionais

Gabarito: letra C (V – F – V). A tabela ABASTECIMENTO não está na terceira forma normal (3FN) porque apresenta dependências funcionais transitivas: nbomb → capac e nbomb → ano_fab. A dependência nbomb, data_hora → placa é direta da chave primária composta e não viola a 3FN. A análise se baseia no conceito de dependência funcional e nas regras de normalização de bancos de dados relacionais.

A normalização é o processo de organizar os dados de um banco de dados relacional para reduzir redundâncias e evitar anomalias de inserção, atualização e exclusão. Ela é feita em etapas, chamadas formas normais (1FN, 2FN, 3FN, FNBC, 4FN, 5FN). Cada forma normal impõe uma regra sobre a estrutura das tabelas e as dependências entre os atributos.

A terceira forma normal (3FN) é uma etapa crucial. Uma tabela está na 3FN se, e somente se, estiver na 2FN e nenhum atributo não-chave depender transitivamente da chave primária. Uma dependência transitiva ocorre quando um atributo não-chave depende de outro atributo não-chave, que por sua vez depende da chave primária. Em outras palavras, há uma cadeia de dependência: chave → atributo intermediário → atributo final.

Na tabela ABASTECIMENTO, a chave primária é composta por (nbomb, data_hora). Os atributos capac (capacidade da bomba) e ano_fab (ano de fabricação da bomba) são características da bomba, não do abastecimento. Portanto, eles dependem apenas de nbomb, que é parte da chave. Isso configura uma dependência parcial (violação da 2FN) e, consequentemente, uma dependência transitiva em relação à chave completa (violação da 3FN). Já o atributo placa identifica o veículo abastecido e depende do abastecimento como um todo, ou seja, de (nbomb, data_hora), sendo uma dependência direta da chave.

Para entender melhor, considere um exemplo: a bomba de número 5 tem capacidade de 1000 litros e foi fabricada em 2020. Se houver dois abastecimentos nessa bomba em horários diferentes, a capacidade e o ano de fabricação serão repetidos em ambas as linhas, gerando redundância. Isso ocorre porque essas informações são da bomba, não do abastecimento. A solução seria separar a tabela em duas: uma para bombas (nbomb, capac, ano_fab) e outra para abastecimentos (nbomb, data_hora, placa, litros).

A pegadinha desta questão está em identificar que capac e ano_fab são atributos da bomba, não do abastecimento. O candidato pode ser levado a pensar que, por estarem na tabela, todos os atributos dependem da chave completa. No entanto, a análise correta exige verificar a semântica de cada atributo e identificar as dependências funcionais reais.

Guarde a distinção entre dependência parcial (atributo depende de parte da chave) e dependência transitiva (atributo depende de outro atributo não-chave). É exatamente essa distinção que separa as alternativas desta questão.

Critério

nbomb, data_hora → capac

nbomb, data_hora → placa

nbomb, data_hora → ano_fab

Dependência real

nbomb → capac (atributo da bomba)

nbomb, data_hora → placa (atributo do abastecimento)

nbomb → ano_fab (atributo da bomba)

Tipo de dependência

Parcial (viola 2FN) e transitiva (viola 3FN)

Direta da chave primária composta

Parcial (viola 2FN) e transitiva (viola 3FN)

Responsável pela violação da 3FN?

Sim (V)

Não (F)

Sim (V)

Alternativa A — ❌ Incorreta

Afirma que as três dependências são responsáveis pela violação da 3FN. Isso está errado porque a dependência nbomb, data_hora → placa é uma dependência direta da chave primária composta. O atributo placa identifica o veículo que foi abastecido em um determinado momento e em uma determinada bomba, portanto depende do abastecimento como um todo. Essa dependência não viola a 3FN, pois não é transitiva nem parcial. A alternativa erra ao incluir essa dependência como causadora da violação.

Alternativa B — ❌ Incorreta

Afirma que apenas a segunda dependência (nbomb, data_hora → placa) é responsável pela violação. Isso está errado porque essa dependência é direta da chave e não viola a 3FN. Além disso, a alternativa exclui as dependências nbomb → capac e nbomb → ano_fab, que são justamente as que causam a violação, por serem parciais e transitivas. A alternativa inverte a lógica: aponta a dependência correta como errada e ignora as verdadeiras causadoras do problema.

Alternativa C — ✅ Correta ⟵ GABARITO

Afirma que a primeira (nbomb, data_hora → capac) e a terceira (nbomb, data_hora → ano_fab) dependências são responsáveis pela violação da 3FN, enquanto a segunda (nbomb, data_hora → placa) não é. Isso está correto. capac e ano_fab são atributos da bomba e dependem apenas de nbomb, que é parte da chave. Isso configura dependência parcial (violação da 2FN) e, em relação à chave completa, uma dependência transitiva (violação da 3FN). Já placa depende do abastecimento como um todo, sendo uma dependência direta da chave, sem violar a 3FN.

Alternativa D — ❌ Incorreta

Afirma que apenas a terceira dependência (nbomb, data_hora → ano_fab) é responsável pela violação. Isso está errado porque a primeira dependência (nbomb, data_hora → capac) também é uma dependência parcial e transitiva, pois capac é atributo da bomba e depende apenas de nbomb. A alternativa exclui uma das dependências que causam a violação, apresentando um diagnóstico incompleto.

Alternativa E — ❌ Incorreta

Afirma que nenhuma das dependências é responsável pela violação da 3FN. Isso está errado porque as dependências nbomb → capac e nbomb → ano_fab são parciais e transitivas, violando a 3FN. A alternativa ignora completamente o problema de normalização presente na tabela.

PEGA ESSA DICA!

Para identificar violações de 3FN, verifique se cada atributo não-chave depende apenas da chave primária completa. Se um atributo depende de parte da chave (dependência parcial) ou de outro atributo não-chave (dependência transitiva), a tabela não está na 3FN. Nesta questão, capac e ano_fab são atributos da bomba, não do abastecimento, então dependem apenas de nbomb.

Gabarito: letra C

Link permanente: /questoes/qq890102