Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024

Banco de DadosConsultas e Comandos em SQL
Código
qa630736
Banca
Quadrix
Órgão
CRQ 12 (GO, TO e DF)
Ano
2024
Cargo
Ana (CRQ 12)

1. CREATE TABLE Empresa (
2.     Cod_Empresa INT PRIMARY KEY,
3.     Nome VARCHAR(100) NOT NULL,
4.     Endereco VARCHAR(200),
5.     Telefone INT NOT NULL
6. );
7.
8. CREATE TABLE Produto_Quimico (
9.     Cod_Produto_Quimico INT PRIMARY KEY,
10.    Nome VARCHAR(100) NOT NULL,
11.    Composicao VARCHAR(300)
12. );
13.
14. CREATE TABLE Empresa_Produto_Quimico (
15.     Cod_Empresa INT,
16.     Cod_Produto_Quimico INT,
17.     PRIMARY KEY (Cod_Empresa, Cod_Produto_Quimico),
18.     FOREIGN KEY (Cod_Empresa) REFERENCES Empresa(Cod_Empresa),
19.     FOREIGN KEY (Cod_Produto_Quimico) REFERENCES Produto_Quimico(Cod_Produto_Quimico)
    );

 

Com referência ao código SQL (Structured Query Language) acima, julgue o item.

 

O referido script possui a definição (criação) de duas chaves estrangeiras.

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

Chaves estrangeiras no SQL

Gabarito: CERTO (letra C). O script cria a tabela Empresa_Produto_Quimico com duas chaves estrangeiras — uma referenciando Empresa(Cod_Empresa) e outra referenciando Produto_Quimico(Cod_Produto_Quimico) — conforme as cláusulas FOREIGN KEY nas linhas 18 e 19 do código. A afirmação do enunciado está correta.

Uma chave estrangeira (foreign key) é um mecanismo de integridade referencial do modelo relacional: ela garante que um valor em uma coluna da tabela filha só pode existir se já existir como chave primária (ou única) na tabela pai referenciada. No script, a tabela Empresa_Produto_Quimico é uma tabela de associação (também chamada de tabela relacional ou tabela de ligação) que representa o relacionamento muitos-para-muitos entre Empresa e Produto_Quimico. Para isso, ela possui uma chave primária composta por (Cod_Empresa, Cod_Produto_Quimico) e, para garantir que esses códigos existam nas tabelas originais, define duas chaves estrangeiras.

A sintaxe da cláusula FOREIGN KEY é: FOREIGN KEY (coluna_filha) REFERENCES tabela_pai(coluna_pai). No script, temos exatamente duas ocorrências dessa cláusula:

  • Linha 18: FOREIGN KEY (Cod_Empresa) REFERENCES Empresa(Cod_Empresa) — garante que todo Cod_Empresa inserido na tabela associativa exista na tabela Empresa.

  • Linha 19: FOREIGN KEY (Cod_Produto_Quimico) REFERENCES Produto_Quimico(Cod_Produto_Quimico) — garante que todo Cod_Produto_Quimico inserido exista na tabela Produto_Quimico.

Portanto, a contagem de chaves estrangeiras é exatamente duas. A pegadinha da banca aqui é sutil: o candidato pode se confundir e contar apenas a chave primária composta (que é uma única constraint, mas envolve duas colunas) ou pode achar que a tabela associativa não precisa de chaves estrangeiras. Mas a leitura atenta do script mostra claramente as duas cláusulas FOREIGN KEY.

NÃO CAIA NESSA!

A banca explora a confusão entre chave primária composta e chave estrangeira. A tabela Empresa_Produto_Quimico tem uma chave primária composta por duas colunas (linha 17), mas isso não é uma chave estrangeira. As chaves estrangeiras são as duas cláusulas FOREIGN KEY das linhas 18 e 19. Conte as cláusulas FOREIGN KEY, não as colunas da chave primária.

Característica

Chave Primária Composta

Chave Estrangeira 1

Chave Estrangeira 2

Tabela onde está definida

Empresa_Produto_Quimico

Empresa_Produto_Quimico

Empresa_Produto_Quimico

Coluna(s) envolvida(s)

Cod_Empresa + Cod_Produto_Quimico

Cod_Empresa

Cod_Produto_Quimico

Tabela referenciada

— (não referencia outra tabela)

Empresa

Produto_Quimico

Coluna referenciada

Cod_Empresa

Cod_Produto_Quimico

Linha no script

Linha 17

Linha 18

Linha 19

Função

Identifica unicamente cada registro da tabela associativa

Garante que o código da empresa exista na tabela Empresa

Garante que o código do produto químico exista na tabela Produto_Quimico

Item — ✅ CERTO

O script possui a definição de duas chaves estrangeiras, ambas na tabela Empresa_Produto_Quimico:

  • FOREIGN KEY (Cod_Empresa) REFERENCES Empresa(Cod_Empresa) — linha 18.

  • FOREIGN KEY (Cod_Produto_Quimico) REFERENCES Produto_Quimico(Cod_Produto_Quimico) — linha 19.

Cada uma dessas cláusulas cria uma restrição de integridade referencial que vincula a tabela associativa às tabelas Empresa e Produto_Quimico. A afirmação do enunciado está correta.

Gabarito: CERTO (letra C).

Link permanente: /questoes/qa630736