Questão de Banco de Dados — SQL — Quadrix 2024
- Código
- qg352876
- Banca
- Quadrix
- Órgão
- CRQ - 12ª Região (GO, TO e DF)
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista de T.I.

- CCerto
- EErrado

GabaritoE — Errado
Gabarito: ERRADO (letra E). A afirmação do item é falsa porque o SQL permite, sim, criar uma chave primária composta por dois ou mais campos — exatamente o que a linha 17 do código faz ao definir PRIMARY KEY (Cod_Empresa, Cod_Produto_Quimico). A sintaxe é válida e amplamente utilizada em bancos de dados relacionais para representar relacionamentos muitos-para-muitos, como é o caso da tabela associativa Empresa_Produto_Quimico.
A chave primária é o mecanismo do modelo relacional que identifica de forma única cada linha de uma tabela. Ela pode ser formada por um único atributo (chave simples) ou por uma combinação de dois ou mais atributos (chave composta). A restrição PRIMARY KEY garante duas propriedades fundamentais: a unicidade — não pode haver duas linhas com a mesma combinação de valores — e a não nulidade — nenhum dos campos que compõem a chave pode receber valor NULL. No caso da tabela Empresa_Produto_Quimico, a chave composta (Cod_Empresa, Cod_Produto_Quimico) assegura que cada par de valores seja único, impedindo, por exemplo, que a mesma empresa seja associada ao mesmo produto químico mais de uma vez.
A criação de uma chave primária composta é um recurso essencial para implementar relacionamentos do tipo muitos-para-muitos (N:N) no modelo relacional. Quando duas entidades se relacionam dessa forma, cria-se uma tabela associativa (também chamada de tabela de ligação ou tabela ponte) cuja chave primária é, justamente, a combinação das chaves primárias das duas entidades originais. No código apresentado, Empresa e Produto_Quimico são as entidades, e Empresa_Produto_Quimico é a tabela associativa que as conecta. As linhas 18 e 19 reforçam esse papel ao definir as chaves estrangeiras (FOREIGN KEY) que referenciam as tabelas Empresa e Produto_Quimico, respectivamente.
A sintaxe utilizada na linha 17 segue o padrão SQL para restrições de tabela (table constraints), que são declaradas após a definição das colunas. A forma geral é PRIMARY KEY (coluna1, coluna2, ...), e essa construção é aceita pelos principais SGBDs do mercado, como Oracle, MySQL, PostgreSQL e SQL Server. Portanto, não há qualquer erro de sintaxe na definição da chave primária composta — o erro está na interpretação do item, que afirma ser proibido criar uma chave primária com dois campos.
A pegadinha desta questão é justamente a inversão do conceito: o candidato pode achar que chave primária só pode ter um campo, mas a verdade é que a chave composta é um recurso padrão e necessário em tabelas associativas. Guarde a distinção entre chave simples (um campo) e chave composta (dois ou mais campos) — é exatamente nessa fronteira que o item tenta confundir.
A afirmação de que "não é permitido criar uma chave primária contendo dois campos" é incorreta. O SQL permite, sim, a criação de chaves primárias compostas, e a linha 17 do código (PRIMARY KEY (Cod_Empresa, Cod_Produto_Quimico)) é um exemplo válido dessa construção. A chave composta é, inclusive, a solução padrão para implementar relacionamentos muitos-para-muitos em bancos de dados relacionais, como ocorre na tabela associativa Empresa_Produto_Quimico. Portanto, não há erro de sintaxe na criação dessa tabela — o erro está na premissa do item.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qg352876