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”.
Modelo Relacional: chaves, superchaves e atributos principais
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 essa superchave é uma chave candidata (e, na verdade, a chave primária composta da relação), e todo atributo que compõe uma chave candidata é, por definição, um atributo principal. As demais alternativas apresentam erros conceituais ou de interpretação do esquema SQL fornecido.
O modelo relacional organiza os dados em relações (tabelas), e a identificação de tuplas (linhas) é feita por chaves. Uma superchave é qualquer conjunto de atributos que identifica unicamente uma tupla; uma chave candidata é uma superchave mínima, ou seja, não contém um subconjunto próprio que também seja superchave; a chave primária é a chave candidata escolhida pelo projetista. Atributos que pertencem a alguma chave candidata são chamados de atributos principais (ou primos). No esquema dado, a relação candidato_questao tem chave primária composta (num_cand, id_quest) e também uma restrição unique(cpf_cand, id_quest), o que torna {cpf_cand, id_quest} uma chave candidata — logo, cpf_cand é um atributo principal.
A alternativa E está correta porque {cpf_cand, id_quest} é uma superchave mínima (nenhum subconjunto próprio — {cpf_cand} ou {id_quest} — é superchave, pois cpf_cand não é único isoladamente e id_quest também não), e cpf_cand faz parte dela. As demais alternativas falham: a restrição unique não exige cláusula CONSTRAINT explícita (A); a presença de cpf_cand em candidato_questao não viola a 2FN, pois ele é parte de uma chave candidata (B); a chave estrangeira cpf_cand não conflita com a chave primária (C); e a restrição check não tem relação com IN/EXISTS (D).
Alternativa A — ❌ Incorreta
A restrição unique sobre cpf_cand em candidato é perfeitamente válida sem a cláusula CONSTRAINT explícita. Em SQL, UNIQUE é uma restrição de integridade que pode ser declarada inline (como no exemplo) ou com nome opcional via CONSTRAINT nome ... UNIQUE. A ausência do nome não gera erro de compilação; o SGBD atribui um nome automático. A alternativa confunde a necessidade de nomear a restrição com a necessidade de declará-la.
Alternativa B — ❌ Incorreta
A Segunda Forma Normal (2FN) exige que todo atributo não-chave dependa da chave primária inteira, não de parte dela. Em candidato_questao, cpf_cand é parte de uma chave candidata ({cpf_cand, id_quest}), portanto é um atributo principal, não um atributo não-chave. A 2FN não se aplica a atributos que pertencem a chaves candidatas. A presença de cpf_cand não viola a 2FN; na verdade, a relação está em 2FN (e provavelmente em 3FN, pois não há dependências transitivas).
Alternativa C — ❌ Incorreta
A chave estrangeira cpf_cand em candidato_questao referencia a coluna cpf_cand da tabela candidato, que possui restrição UNIQUE. Isso é perfeitamente válido: uma chave estrangeira pode referenciar qualquer coluna com restrição UNIQUE ou PRIMARY KEY. Não há conflito com a definição de chave primária da relação candidato_questao (que é (num_cand, id_quest)). A alternativa sugere um conflito inexistente.
Alternativa D — ❌ Incorreta
A restrição CHECK (gabarito in ('A','B','C','D','E')) valida que o valor de gabarito pertença ao conjunto listado. Os predicados IN e EXISTS são usados em consultas SQL (subconsultas), não em restrições CHECK. Não há qualquer relação entre a restrição de verificação e a troca entre IN e EXISTS; são conceitos de domínios diferentes. A alternativa mistura indevidamente restrição de domínio com operadores de consulta.
Alternativa E — ✅ Correta ⟵ GABARITO
A relação candidato_questao possui a chave primária (num_cand, id_quest) e a restrição UNIQUE (cpf_cand, id_quest). O conjunto {cpf_cand, id_quest} é uma superchave mínima: é superchave (identifica unicamente cada tupla, pois cpf_cand é único em candidato e id_quest é único em questao, e a combinação é única por restrição) e é mínima (nenhum subconjunto próprio — {cpf_cand} ou {id_quest} — é superchave, pois cpf_cand pode se repetir em candidato_questao e id_quest também). Portanto, é uma chave candidata, e cpf_cand é um atributo principal dessa chave. A alternativa está correta.