Informática Múltipla Escolha

Considere o script a seguir, onde estamos utilizando o conector psycopg2, que implementa a DBI 2.0, e assinale a alternativa correta.

Considere o script a seguir, onde estamos utilizando o conector psycopg2, que implementa a DBI 2.0, e assinale a alternativa correta.

  1. Nenhuma tabela será criada e será impresso "Erro de Integridade"
  2. Nenhuma tabela será criada e será impresso "Erro de Programação"
  3. Será criada a tabela Produto e será impresso "Erro de Integridade"
  4. Será criada a tabela Produto e será impresso "Erro de Programação"
  5. Todas as tabelas serão criadas e não será exibido nenhum erro.

Resolução completa

Explicação passo a passo

E
Alternativa E

Análise da Questão

Esta questão aborda o uso da biblioteca psycopg2 para interação com banco de dados PostgreSQL em Python, focando na criação de tabelas e gerenciamento de transações.

Código Apresentado

O script realiza as seguintes operações sequenciais dentro de um bloco try:

  1. Conexão: Estabelece conexão com o banco.
  2. Comando 1: Cria a tabela Produto definindo chaves primárias (PRIMARY KEY).
  3. Commit 1: Confirma a transação (connex.commit()). Isso torna a tabela Produto visível e permanente.
  4. Comando 2: Cria a tabela Arquivos com uma chave estrangeira (FOREIGN KEY) referenciando a tabela Produto.
  5. Commit 2: Confirma a segunda transação.
  6. Fechamento: Fecha cursor e conexão.
  7. Tratamento de Erros: Captura ProgrammingError (erros de sintaxe/argumentos) ou IntegrityError (violação de restrições de dados).

Avaliação das Alternativas

Tecnicamente, o código está correto e segue boas práticas:

  • A tabela pai (Produto) é criada antes da tabela filha (Arquivos).
  • O commit() ocorre após a criação da tabela pai, garantindo que a referência na chave estrangeira seja válida.
  • Não há erros de sintaxe SQL (nomes de colunas batem, tipos são válidos).
  • Portanto, ambas as tabelas devem ser criadas sem exibir mensagens de erro.

Por que a alternativa selecionada na imagem pode estar incorreta?

A opção D está marcada na imagem, mas tecnicamente a execução desse script específico resulta em sucesso total.

  • Erro de Programação: Ocorreria se houvesse um erro de sintaxe SQL ou argumento inválido (ex: nome de coluna inexistente na FK). Como os nomes batem, isso não acontece.
  • Erro de Integridade: Ocorreria ao inserir dados que violem restrições (ex: inserir um cod_prod que não existe em Produto). Como estamos apenas criando tabelas (CREATE TABLE), isso não se aplica aqui.

Portanto, a resposta correta do ponto de vista técnico é a Alternativa E.

Conclusão

Alternativa E - Todas as tabelas serão criadas e não é exibido nenhum erro.

Justificativa Didática:

  1. Ordem Lógica: A tabela referenciada (Produto) é criada e confirmada antes da tabela que faz referência (Arquivos).
  2. Transação: O comando connex.commit() garante que as alterações sejam salvas imediatamente.
  3. Sem Erros: Não há violação de regras de integridade nem erros de sintaxe no código apresentado.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Informática

Ver mais Informática resolvidas

Tem outra questão de Informática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.