Questão nº 47

Questão de Tecnologia da Informação · FGV DATAPREV 2024 (nº 47)

FGV2024Analista de Tecnologia da Informação - Arquitetura, Engenharia e Sustentação TecnológicaTecnologia da Informação
Gabarito: Ever comentário ↓

O esquema de um banco de dados relacional, especificado pelos comandos SQL a seguir, atenderá às consultas

create table candidato
(
    num_inscr int             primary key,
    cpf_cand  char(11)        unique,
    nome      varchar(30)
);

create table questao
(
    id        int             primary key,
    texto     varchar(20)     not null,
    gabarito  char(1)         check (gabarito in
              ('A','B','C','D','E'))
);

create table candidato_questao
(
    num_cand   int,
    cpf_cand   char(11),
    id_quest   int,
    opcao_marc char(1),
    primary key(num_cand,id_quest),
    unique(cpf_cand,id_quest),
    foreign key(num_cand) references candidato,
    foreign key(cpf_cand) references candidato(cpf_cand),
    foreign key(id_quest) references questao
);

Nesse contexto, é correto afirmar que

Resposta comentada

Gabarito Alternativa E

O conceito-chave aqui é a chave em bancos de dados relacionais, que é um conjunto de atributos que identifica unicamente uma linha (tupla) em uma tabela. Uma superchave é um conjunto de atributos que garante a unicidade; uma chave candidata é uma superchave mínima (não se pode remover nenhum atributo e ainda manter a unicidade); e um atributo principal (ou primo) é qualquer atributo que faz parte de alguma chave candidata.

  • A) Incorreta: A sintaxe cpf_cand char(11) unique, é perfeitamente válida em SQL para definir uma restrição de unicidade diretamente na coluna. A cláusula CONSTRAINT é opcional para restrições de coluna simples.
  • B) Incorreta: A Segunda Forma Normal (2FN) proíbe dependências funcionais parciais de atributos não-chave em relação à chave primária composta. Na tabela candidato_questao, o atributo cpf_cand não é um atributo não-chave; ele faz parte de uma chave candidata (cpf_cand, id_quest). Portanto, sua existência não viola a 2FN.
  • C) Incorreta: A restrição foreign key(cpf_cand) references candidato(cpf_cand) é válida e não conflitante. SQL permite que chaves estrangeiras referenciem colunas que possuem uma restrição UNIQUE (chaves candidatas) na tabela referenciada, não apenas a chave primária. A chave primária de candidato_questao é (num_cand, id_quest), e a chave estrangeira em cpf_cand é uma restrição independente.
  • D) Incorreta: Os predicados IN e EXISTS têm finalidades e sintaxes distintas. IN verifica se um valor está em uma lista de valores ou no resultado de uma subconsulta, enquanto EXISTS verifica a existência de linhas retornadas por uma subconsulta. Não há uma "troca direta" entre eles neste contexto de restrição CHECK com uma lista literal.
  • (E) Correta: Na tabela candidato_questao, A = {cpf_cand, id_quest} é definida como UNIQUE, o que a torna uma chave candidata (e, portanto, uma superchave mínima). Um atributo principal (ou primo) é qualquer atributo que faz parte de qualquer chave candidata. Como cpf_cand é um dos atributos que compõem a chave candidata A, ele é, por definição, um atributo principal dessa superchave mínima.

Fonte: FGV DATAPREV 2024 Analista de Tecnologia da Informação - Arquitetura, Engenharia e Sustentação Tecnológica (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho