Questão de Banco de Dados — Conceitos e Fundamentos de Modelo Relacional — Quadrix 2024
- Código
- qa630752
- Banca
- Quadrix
- Órgão
- CFP
- Ano
- 2024
- Cargo
- Ana Tec ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). A instrução INSERT INTO curso (nome_curso, duracao) VALUES ('Psicologia Clínica', 120); não é suficiente para cadastrar um novo curso porque a tabela CURSO possui a coluna id_curso como chave primária (PK) do tipo INT e o banco não possui colunas com autoincremento — logo, o valor da chave primária precisa ser fornecido explicitamente no comando, o que não ocorre. A ausência do id_curso no INSERT viola a restrição de integridade de entidade, que exige que toda tupla tenha um valor de chave primária não nulo e único.
O comando INSERT é a instrução da linguagem SQL responsável por inserir novas linhas (tuplas) em uma tabela. Em um banco de dados relacional, toda tabela deve ter uma chave primária, que identifica de forma única cada registro. Quando a coluna de chave primária é definida com AUTO_INCREMENT (ou IDENTITY, SERIAL, dependendo do SGBD), o sistema gera automaticamente um valor sequencial para ela, dispensando que o usuário o informe. Porém, quando essa funcionalidade não está disponível — como expressamente informado no enunciado —, o responsável pela inserção deve fornecer manualmente um valor para a chave primária, garantindo que ele seja único e não nulo.
Na prática, para cadastrar um novo curso nesse banco, o comando correto seria algo como:
INSERT INTO curso (id_curso, nome_curso, duracao)
VALUES (1, 'Psicologia Clínica', 120);O valor 1 para id_curso é um exemplo; o importante é que o comando inclua a coluna id_curso e um valor que não conflite com os já existentes. A omissão dessa coluna faz com que o SGBD tente atribuir um valor padrão (geralmente NULL), o que viola a restrição de chave primária e resulta em erro de integridade.
A banca explora exatamente a pegadinha de o candidato assumir que a chave primária é gerada automaticamente, mesmo quando o enunciado afirma o contrário. Em bancos de dados reais, muitos SGBDs oferecem o autoincremento por padrão, mas a questão deixa claro que não há colunas com autoincremento — esse é o detalhe que torna a instrução insuficiente.
A banca induz o candidato a esquecer que a chave primária id_curso precisa ser informada manualmente. Muitos bancos de dados modernos geram a chave automaticamente, mas o enunciado explicitamente afirma que não há autoincremento — logo, o INSERT sem o id_curso falha por violar a integridade de entidade. Fique atento a essa informação no texto!
A instrução apresentada omite a coluna id_curso, que é a chave primária da tabela CURSO. Como o banco não possui autoincremento, o SGBD não conseguirá gerar um valor para essa coluna, e a inserção será rejeitada por violação da restrição de chave primária (o valor seria NULL, o que não é permitido). Para que o comando fosse suficiente, seria necessário incluir id_curso na lista de colunas e fornecer um valor inteiro único, por exemplo: INSERT INTO curso (id_curso, nome_curso, duracao) VALUES (1, 'Psicologia Clínica', 120);. Portanto, o item está ERRADO.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qa630752