FC ConcursosFC Concursos

Questão FC871644

Considere a versão simplificada de um banco de dados utilizado por uma delegacia, conforme descrito a seguir, especificado em SQL ANSI: create table cad_suspeito -- Cadastro de sus

Sem classificação

FGV · 2026

Considere a versão simplificada de um banco de dados utilizado por uma delegacia, conforme descrito a seguir, especificado em SQL ANSI:

 

create table cad_suspeito  -- Cadastro de suspeitos

(

    id                    integer            primary key,

    cpf                 char(11)          unique,

    nome            varchar(50)   not null,

    endereco     varchar(100),

    dt_nasc        date                  not null

 

);

 

create table cad_crime     -- Cadastro de crimes

 

(

    id                       integer              primary key,

    descricao       varchar(50)     unique,

    tipo                   varchar(20)

);

 

create table cad_ocorrencia -- Cadastro de ocorrências

(

 

    id_crime          integer         references cad_crime(id),

    id_suspeito     integer         references cad_suspeito,

    data_ocorrencia date,

    primary key(id_crime,id_suspeito)

 

);

 

Um investigador, conhecedor da linguagem SQL, acessou o módulo de processamento de consultas do sistema gerenciador de banco de dados relacional utilizado pelo sistema, e especificou a seguinte consulta em SQL ANSI:

 

select cpf, nome from cad_suspeito s

where not exists

(   select id from cad_crime

    except

    select id_crime from cad_ocorrencia o

    where o.id_suspeito = s.id

);

 

A consulta apresentada revela o número do CPF e nome de suspeitos associados a

  1. crimes sem ocorrência.
  2. nenhum crime.
  3. ocorrências sem crime.
  4. todos os crimes cadastrados.
  5. uma ocorrência apenas.
Mostrar resposta e comentário

Gabarito

D

Comentário do professor

A consulta retorna o CPF e o nome dos suspeitos que estão associados a todos os crimes cadastrados.


O motivo é a combinação de EXCEPT e NOT EXISTS. A subconsulta interna faz: lista de todos os ids de cad_crime EXCEPT os ids de crime presentes em cad_ocorrencia para o suspeito considerado. Esse EXCEPT produz o conjunto de crimes que não têm ocorrência relacionada àquele suspeito.


O predicado NOT EXISTS exige que esse conjunto seja o conjunto vazio. Portanto não existe crime sem ocorrência do suspeito, ou seja, para cada crime cadastrado há pelo menos uma ocorrência vinculando-o ao suspeito. Formalmente: \( \forall c\in Crimes,\ \exists o: o.id\_crime=c \land o.id\_suspeito=s.id \).

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo