Questão FC546264
Uma Secretaria da Fazenda está estruturando seu banco de dados para garantir a integridade e a eficiência das consultas sobre as fiscalizações historicamente realizadas. Para isso,
Projeto e Modelagem de Dados
FCC · 2025
Uma Secretaria da Fazenda está estruturando seu banco de dados para garantir a integridade e a eficiência das consultas sobre as fiscalizações historicamente realizadas. Para isso, foi criada uma estrutura relacional robusta, da qual fazem parte as tabelas abaixo. Considera-se que uma empresa pode ser fiscalizada várias vezes.
CREATE TABLE EMPRESA (
id_empresa INT PRIMARY KEY,
nome VARCHAR(255) NOT NULL
);
CREATE TABLE FISCALIZACAO (
id_fiscalizacao INT PRIMARY KEY,
id_empresa INT,
data_fiscalizacao DATE NOT NULL,
status VARCHAR(20) NOT NULL,
FOREIGN KEY (id_empresa) REFERENCES EMPRESA (id_empresa) ON DELETE CASCADE
);
Em condições ideais, um comportamento correto resultante dessa estrutura é:
- Caso um registro da tabela EMPRESA seja excluído, a exclusão será impedida pelo SGBD, pois há uma relação de integridade referencial entre as tabelas.
- Para garantir a integridade referencial, seria necessário adicionar um índice à coluna id_empresa na tabela FISCALIZACAO, pois a integridade referencial só pode ser aplicada em colunas indexadas.
- Se uma empresa for removida da tabela EMPRESA, todas as fiscalizações associadas a essa empresa na tabela FISCALIZACAO serão automaticamente excluídas, devido à cláusula ON DELETE CASCADE definida na FK.
- Durante a exclusão em cascata (cascading delete), os bloqueios são aplicados apenas às linhas da tabela EMPRESA, garantindo que as operações de exclusão na tabela FISCALIZACAO ocorram sem afetar a concorrência do banco de dados.
- O comando DELETE FROM EMPRESA WHERE id_empresa = 3 resultará em erro, caso existam registros correspondentes na tabela FISCALIZACAO, pois a integridade referencial impede a exclusão de registros referenciados.
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
A cláusula ON DELETE CASCADE aplicada à FOREIGN KEY determina que, quando uma linha da tabela referenciada for removida, o SGBD automaticamente exclui as linhas da tabela dependente que a referenciam.
No modelo dado, isso significa que, ao executar por exemplo DELETE FROM EMPRESA WHERE id_empresa = X, todas as linhas de FISCALIZACAO com id_empresa = X serão apagadas pelo banco de dados sem necessidade de comandos adicionais.
Esse comportamento preserva a integridade referencial ao evitar registros órfãos e é executado pelo próprio SGBD desde que a restrição FOREIGN KEY tenha sido definida com ON DELETE CASCADE.
Conteúdo do catálogo FC Concursos · Atualizado em