Questão nº 70
Questão de Análise de Sistemas · CESGRANRIO BNDES 01/2024 (nº 70)
No momento da criação de uma tabela em um Sistema Gerenciador de Banco de Dados (SGBD), por meio do comando `CREATE TABLE`, definem-se regras para o controle de integridade e para a garantia de qualidade dos dados dessa tabela. Considere que W e Y são duas tabelas. A é um atributo de W, e B é um atributo de Y. Foi criada corretamente uma cláusula `CHECK` no atributo A.
Essa cláusula permite verificar se o atributo A
- Atem valor único em todas as linhas da tabela W.
- Btem valor maior ou igual a zero. (alternativa correta)
- Ctem valor existente em uma ou mais linhas da tabela Y na coluna B.
- Dinviabiliza o acesso a alguma linha da tabela Y.
- Eestá preenchido com algum valor ou não.
Resposta comentada
Gabarito Alternativa B
O CHECK é uma restrição de integridade que valida o valor que será inserido ou atualizado em uma coluna, com base em uma condição lógica (ex.: A > 0). Ele não compara valores com outras tabelas nem garante unicidade — isso é papel de UNIQUE e FOREIGN KEY.
- (A) Incorreta: Valor único em todas as linhas é função da restrição
UNIQUE(ou chave primária), não doCHECK. - (B) Correta: O
CHECKpermite definir uma condição arbitrária sobre o valor do atributo, comoA >= 0, validando a regra a cada inserção/atualização. - (C) Incorreta: Verificar se o valor existe em outra tabela é papel da chave estrangeira (
FOREIGN KEY), não doCHECK. - (D) Incorreta: O
CHECKage sobre a tabela onde está definido (W), nunca restringe acesso a linhas de outra tabela (Y). - (E) Incorreta: Verificar se o campo está preenchido (não nulo) é função da restrição
NOT NULL, não doCHECK.
Armadilha da banca: A alternativa (C) é a mais tentadora, pois confunde CHECK com FOREIGN KEY. O CHECK nunca consulta outras tabelas — ele só avalia o valor da própria coluna contra uma expressão.
Fonte: CESGRANRIO BNDES 01/2024 Analista - Análise de Sistemas (Desenvolvimento) (Caderno Prova 3). Reproduzida para fins de estudo.