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

 

Na criação da tabela Empresa_Produto_Quimico, ocorrerá um erro de sintaxe, tendo em vista que não é permitido criar uma chave primária contendo dois campos, conforme foi definido na linha 17.

  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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

SQL: chave primária composta no CREATE TABLE

Gabarito: ERRADO (letra E). A afirmação de que ocorrerá erro de sintaxe por não ser permitido criar uma chave primária com dois campos é falsa — o padrão SQL e todos os principais SGBDRs (MySQL, PostgreSQL, SQL Server, Oracle) permitem, sim, chaves primárias compostas, definidas pela cláusula PRIMARY KEY (coluna1, coluna2). A linha 17 do código está perfeitamente válida.

A chave primária é o mecanismo do modelo relacional que identifica de forma única cada linha de uma tabela. Quando uma única coluna não é suficiente para garantir essa unicidade — situação típica em tabelas de relacionamento muitos-para-muitos, como é o caso de Empresa_Produto_Quimico —, o padrão SQL permite combinar duas ou mais colunas em uma única chave primária, chamada de chave primária composta (ou concatenada). A sintaxe para isso é exatamente a utilizada no código: PRIMARY KEY (Cod_Empresa, Cod_Produto_Quimico), declarada no nível da tabela, após a definição das colunas.

Na prática, essa tabela representa o relacionamento N:N entre Empresa e Produto_Quimico: uma empresa pode comercializar vários produtos químicos, e um mesmo produto químico pode ser comercializado por várias empresas. A combinação (Cod_Empresa, Cod_Produto_Quimico) é o que identifica, sem ambiguidade, cada par empresa-produto. Sem a chave composta, seria impossível garantir que o mesmo par não fosse inserido duas vezes, o que corromperia a integridade do relacionamento.

A confusão que a banca explora aqui é pensar que a chave primária só pode ser definida em uma única coluna, como nas tabelas Empresa e Produto_Quimico, onde Cod_Empresa e Cod_Produto_Quimico são chaves primárias simples. No entanto, a definição de chave primária composta é um recurso fundamental e amplamente utilizado no modelo relacional, previsto no padrão SQL e suportado por todos os SGBDRs comerciais e de código aberto. A linha 17 não contém erro de sintaxe algum.

Além disso, o código ainda define corretamente as chaves estrangeiras nas linhas 18 e 19, referenciando as tabelas Empresa e Produto_Quimico. A estrutura completa está sintaticamente correta e criaria a tabela de relacionamento sem nenhum erro. O item, portanto, está errado.

NÃO CAIA NESSA!

A banca tenta fazer o candidato acreditar que uma chave primária composta é inválida, quando na verdade é um recurso essencial para tabelas de relacionamento N:N. A pegadinha está em generalizar a regra da chave primária simples (uma coluna) para todos os casos, ignorando a possibilidade de composição. Lembre-se: PRIMARY KEY (col1, col2) é perfeitamente válido e muito comum em bancos de dados relacionais.

Item — ❌ Errado

A afirmação de que "não é permitido criar uma chave primária contendo dois campos" é incorreta. O padrão SQL e todos os principais SGBDRs permitem a criação de chaves primárias compostas, utilizando a sintaxe PRIMARY KEY (coluna1, coluna2, ...). A linha 17 do código (PRIMARY KEY (Cod_Empresa, Cod_Produto_Quimico)) está sintaticamente correta e é a forma adequada de definir a chave primária de uma tabela de relacionamento muitos-para-muitos. Portanto, não ocorrerá erro de sintaxe na criação da tabela Empresa_Produto_Quimico.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qa630735