Pular para o conteúdo principal

Questão de Banco de Dados — Conceitos e Fundamentos de Modelo Relacional — Quadrix 2025

Banco de DadosConceitos e Fundamentos de Modelo Relacional
Código
qa698955
Banca
Quadrix
Órgão
CRM MS
Ano
2025
Cargo
Ana ( )
O Hospital Campo Grande do Norte deseja gerenciar a participação de seus médicos em congressos médicos. Para isso, um banco de dados relacional foi projetado com as tabelas seguir.   CREATE TABLE Medicos (        id_medico INT PRIMARY KEY,        nome VARCHAR(100) NOT NULL,        especialidade VARCHAR(50) NOT NULL ); CREATE TABLE Congressos (        id_congresso INT PRIMARY KEY,        nome VARCHAR(100) NOT NULL,        local VARCHAR(100) NOT NULL,        data_inicio DATE NOT NULL,        data_fim DATE NOT NULL CHECK (data_fim > = data_inicio) ); CREATE TABLE Participacoes (         id_medico INT,         id_congresso INT,         papel VARCHAR(50) CHECK (papel IN (‘Palestrante’, ‘Ouvinte’, ‘Organizador)),         data_inscricao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,         PRIMARY KEY (id_medico, id_congresso),         FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico) ON DELETE CASCADE,        FOREIGN KEY (id_congresso) REFERENCES Congressos(id_congresso) ON DELETE CASCADE         ); Além disso, para facilitar consultas, foi criada a seguinte view. CREATE VIEW V_Medicos_Congressos AS SELECT M.nome AS medico, C.nome AS congresso, C.local, P.papel FROM Medicos M JOIN Participacoes P ON M.id_medico = P.id_medico JOIN Congressos C ON P.id_congresso = C.id_congresso;   Com base nessa situação hipotética, julgue o item a seguir.   Se um congresso for removido da tabela Congressos, todos os registros correspondentes na tabela Participacoes serão automaticamente apagados, e os médicos que participaram desse congresso permanecerão na tabela Medicos.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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”.

Integridade referencial e a ação ON DELETE CASCADE

Gabarito: CERTO (letra C). A remoção de um congresso da tabela Congressos dispara a ação ON DELETE CASCADE declarada na chave estrangeira de Participacoes, apagando automaticamente os registros de participação que referenciam aquele congresso; os médicos, porém, permanecem na tabela Medicos, pois não há nenhuma chave estrangeira apontando para eles a partir de Congressos ou Participacoes que propague a exclusão. A regra está literalmente no comando CREATE TABLE Participacoes, que define FOREIGN KEY (id_congresso) REFERENCES Congressos(id_congresso) ON DELETE CASCADE.

A integridade referencial é um dos pilares do modelo relacional: ela garante que um valor de chave estrangeira em uma tabela sempre corresponda a um valor de chave primária existente na tabela referenciada. Quando essa correspondência seria violada por uma operação de exclusão, o banco precisa tomar uma ação — e é exatamente isso que as cláusulas ON DELETE definem. As opções mais comuns são:

  • CASCADE: apaga em cascata as linhas dependentes (as que referenciam a linha excluída).

  • SET NULL: define a chave estrangeira das linhas dependentes como NULL (exige que a coluna aceite nulos).

  • SET DEFAULT: atribui o valor padrão da coluna às linhas dependentes.

  • RESTRICT / NO ACTION: impede a exclusão enquanto existirem referências.

No caso concreto, a tabela Participacoes é uma tabela de ligação entre Medicos e Congressos, representando um relacionamento muitos-para-muitos (N:M). Ela possui duas chaves estrangeiras, ambas com ON DELETE CASCADE: uma para Medicos(id_medico) e outra para Congressos(id_congresso). Isso significa que, ao excluir um congresso, o SGBD automaticamente remove todas as linhas de Participacoes cujo id_congresso corresponda ao congresso excluído. Já a tabela Medicos não é afetada, pois nenhuma chave estrangeira em Congressos ou Participacoes referencia Medicos de forma que a exclusão do congresso propague para ela — a cascata só atinge a tabela que possui a FK com CASCADE.

Para visualizar o fluxo da exclusão:

A pegadinha que a banca explora aqui é justamente a direção da cascata: muitos candidatos imaginam que, por haver ON DELETE CASCADE na FK de Participacoes para Medicos, a exclusão de um congresso apagaria também os médicos. Mas a cascata só age na tabela que contém a chave estrangeira — Participacoes — e somente quando a linha referenciada (o congresso) é excluída. A FK de Participacoes para Medicos só dispararia se um médico fosse excluído, não um congresso. Portanto, a afirmativa está correta: os registros de participação são apagados automaticamente, e os médicos permanecem.

Item — ✅ CERTO

A afirmativa descreve com precisão o comportamento do ON DELETE CASCADE na chave estrangeira id_congresso da tabela Participacoes. Ao remover um congresso, o SGBD apaga em cascata todas as linhas de Participacoes que referenciam aquele congresso, e como não há nenhuma chave estrangeira que propague a exclusão para Medicos, os médicos permanecem na tabela. A definição da tabela Participacoes deixa isso explícito:

CREATE TABLE Participacoes (trecho relevante):

FOREIGN KEY (id_congresso) REFERENCES Congressos(id_congresso) ON DELETE CASCADE

A cascata é unidirecional: ela parte da tabela referenciada (Congressos) em direção à tabela que contém a FK (Participacoes). A outra FK, FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico) ON DELETE CASCADE, só teria efeito se um médico fosse excluído — o que não é o caso. Assim, a exclusão do congresso não toca a tabela Medicos.

Gabarito: letra C (CERTO).

Link permanente: /questoes/qa698955