Questão de Banco de Dados — Banco de Dados Relacionais — FGV 2024
Banco de Dados›Banco de Dados Relacionais
Código
fg079627
Banca
FGV
Órgão
DATAPREV
Ano
2024
Nível
Superior
Cargo
ATI - Arquitetura, Engenharia e Sustentação Tecnológica
O esquema de um banco de dados relacional, especificado pelos
comandos SQL a seguir, atenderá às consultas
Nesse contexto, é correto afirmar que
Aa especificação da restrição imposta sobre o atributo cpf_cand da relação candidato produzirá erro de compilação, pois há a demanda pela especificação da cláusula CONSTRAINT.
Ba existência do atributo cpf_cand na relação candidato_questao viola, nessa relação, a segunda forma normal.
Ca restrição de integridade referencial imposta sobre o atributo cpf_cand da tabela candidato_questao é conflitante com a definição de chave primária da relação.
Da restrição de verificação imposta sobre o atributo gabarito da relação questao permite troca direta entre os predicados IN e EXISTS.
Eo atributo cpf_cand é um atributo principal da superchave mínima A= {cpf_cand, id_quest} da relação candidato_questao.
Revelar gabarito e comentário▾
GabaritoE — o atributo cpf_cand é um atributo principal da superchave mínima A= {cpf_cand, id_quest} da relação candidato_questao.
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”.
Banco de Dados Relacionais: Chaves, Integridade e Formas Normais
Gabarito: letra E. O atributo cpf_cand é um atributo principal da superchave mínima A = {cpf_cand, id_quest} da relação candidato_questao, pois faz parte da chave candidata (e, portanto, da chave primária) dessa relação. Atributo principal é todo aquele que pertence a alguma chave candidata, e a superchave mínima é exatamente a chave candidata — conceitos centrais do modelo relacional.
O modelo relacional organiza dados em tabelas (relações), onde cada linha é uma tupla e cada coluna um atributo. A chave primária identifica unicamente cada tupla, e a chave estrangeira mantém a consistência entre relações, garantindo a integridade referencial: uma tupla em uma relação que referencia outra deve referenciar uma tupla existente na relação referenciada. A superchave é qualquer conjunto de atributos que identifica unicamente uma tupla; a superchave mínima (ou chave candidata) é aquela que não contém um subconjunto próprio que também seja superchave. Um atributo principal é membro de alguma chave candidata.
A normalização reorganiza tabelas para reduzir redundância e evitar anomalias. A 1FN exige atributos atômicos; a 2FN exige que todo atributo não-chave dependa da chave inteira (dependência funcional total); a 3FN elimina dependências transitivas. A violação da 2FN ocorre quando um atributo não-chave depende de apenas parte de uma chave composta.
A questão apresenta um esquema com relações candidato, questao e candidato_questao. A relação candidato_questao tem chave primária composta {cpf_cand, id_quest}, onde cpf_cand é chave estrangeira referenciando candidato e id_quest referenciando questao. O atributo cpf_cand é membro da chave candidata, logo é um atributo principal. A alternativa E está correta ao afirmar isso.
A pegadinha da banca está em confundir os conceitos de chave primária, chave estrangeira, atributo principal e formas normais. A alternativa B, por exemplo, sugere que a existência de cpf_cand em candidato_questao viola a 2FN, mas isso é incorreto: cpf_cand é parte da chave primária, não um atributo não-chave, e a 2FN trata da dependência de atributos não-chave em relação à chave. A alternativa C alega conflito entre a integridade referencial e a chave primária, o que não procede, pois uma chave estrangeira pode perfeitamente fazer parte de uma chave primária composta. A alternativa D trata de uma restrição de verificação (CHECK) sobre o atributo gabarito, que não tem relação com a troca entre IN e EXISTS — conceitos de SQL distintos. A alternativa A afirma que a restrição sobre cpf_cand em candidato produzirá erro de compilação por falta da cláusula CONSTRAINT, o que é falso, pois a restrição pode ser definida inline.
Guarde a fronteira entre atributo principal (membro de chave candidata) e atributo não-principal (não membro de nenhuma chave candidata): é exatamente nela que as alternativas se dividem.
Alternativa A — ❌ Incorreta
A restrição sobre cpf_cand na relação candidato (provavelmente uma chave primária ou estrangeira) não exige obrigatoriamente a cláusula CONSTRAINT nomeada. Em SQL, é possível definir uma chave primária inline, como cpf_cand VARCHAR(11) PRIMARY KEY, sem nomear a restrição. A ausência da cláusula CONSTRAINT não gera erro de compilação; ela é opcional e serve apenas para dar um nome à restrição. A alternativa confunde a necessidade de especificar a restrição com a necessidade de nomeá-la.
Alternativa B — ❌ Incorreta
A existência do atributo cpf_cand na relação candidato_questao não viola a segunda forma normal. A 2FN exige que todo atributo não-chave dependa da chave primária inteira. Como cpf_cand é parte da chave primária composta {cpf_cand, id_quest}, ele é um atributo-chave, não um atributo não-chave. A violação da 2FN ocorreria se houvesse um atributo não-chave dependente apenas de cpf_cand ou apenas de id_quest, o que não é o caso. A alternativa confunde a presença de uma chave estrangeira com uma dependência parcial.
Alternativa C — ❌ Incorreta
A restrição de integridade referencial sobre cpf_cand em candidato_questao não é conflitante com a definição de chave primária da relação. Pelo contrário, é perfeitamente válido que uma chave estrangeira faça parte de uma chave primária composta. Isso é comum em tabelas de relacionamento muitos-para-muitos, onde a chave primária é composta pelas chaves estrangeiras das tabelas relacionadas. A integridade referencial garante que os valores de cpf_cand em candidato_questao existam na relação candidato, e isso não conflita com a unicidade exigida pela chave primária.
Alternativa D — ❌ Incorreta
A restrição de verificação (CHECK) imposta sobre o atributo gabarito da relação questao não permite troca direta entre os predicados IN e EXISTS. IN e EXISTS são operadores de consulta SQL usados em subconsultas, não em restrições de verificação. Uma restrição CHECK define condições que os valores de uma coluna devem satisfazer, como CHECK (gabarito IN ('A', 'B', 'C', 'D')). A troca entre IN e EXISTS é um conceito de otimização de consultas, não de definição de restrições. A alternativa mistura conceitos de DDL (definição de dados) com DML (manipulação de dados).
Alternativa E — ✅ Correta ⟵ GABARITO
O atributo cpf_cand é um atributo principal da superchave mínima A = {cpf_cand, id_quest} da relação candidato_questao. Isso está correto porque:
A superchave mínima é a chave candidata, que identifica unicamente cada tupla sem subconjunto próprio que também seja superchave.
cpf_cand é membro da chave candidata {cpf_cand, id_quest}, portanto é um atributo principal.
Atributo principal é todo aquele que pertence a alguma chave candidata, conforme a definição do modelo relacional.
A alternativa E está correta ao afirmar que cpf_cand é um atributo principal da superchave mínima, pois ele faz parte da chave candidata da relação.