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