Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024
Banco de Dados›Consultas 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.
CCerto
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.