Pular para o conteúdo principal

Questão de Banco de Dados — Conceitos e Fundamentos de Modelo Relacional — Quadrix 2024

Banco de DadosConceitos e Fundamentos de Modelo Relacional
Código
qa630752
Banca
Quadrix
Órgão
CFP
Ano
2024
Cargo
Ana Tec ( )
Um banco de dados relacional foi criado para registrar os cursos realizados por psicólogos em uma clínica de treinamento. O banco de dados não possui colunas com autoincremento e contém as seguintes tabelas: PSICOLOGO (id_psicologo (PK, INT), nome (VARCHAR), email (VARCHAR)); CURSO (id_curso (PK, INT), nome_curso (VARCHAR), duracao (INT)); INSCRICAO (id_inscricao (PK, INT), id_psicologo (FK, INT), id_curso (FK, INT), data_inscricao (DATE)); CERTIFICADO (id_certificado (PK, INT), id_inscricao (FK, INT), data_certificado (DATE)). Com base nessa situação hipotética e na linguagem SQL, julgue os itens seguintes.   Para se cadastrar um novo curso, é suficiente executar a instrução SQL a seguir. INSERT INTO curso (nome_curso, duracao) VALUES (‘Psicologia Clínica’, 120);
  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”.

Comando INSERT e chave primária sem autoincremento

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.

NÃO CAIA NESSA!

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!

Item — ❌ ERRADO

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