Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2024

Banco de DadosSQL
Código
ce190987
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2024
Nível
Superior
Figura CB1A5Imagem associada para resolução da questãoNo que se refere a banco de dados, julgue o item a seguir, tendo o modelo apresentado na figura CB1A5 como referência.CREATE TABLE Operadora (IdOperadora INT NOT NULL,DeOperadora VARCHAR(45) NULL,PRIMARY KEY (IdOperadora));CREATE TABLE Reclamacoes (IdReclamacao INT NOT NULL AUTO_INCREMENT,DeReclamacao VARCHAR(45) NULL,IdOperadora INT NOT NULL,PRIMARY KEY (IdReclamacao),FOREIGN KEY (IdOperadora)REFERENCES Operadora (IdOperadora));A execução dos comandos SQL precedentes resulta na criação de duas tabelas e no relacionamento descrito no modelo apresentado na figura CB1A5.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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 – DDL: criação de tabelas e relacionamento por chave estrangeira

Gabarito: Certo. Os comandos CREATE TABLE criam as duas tabelas Operadora e Reclamacoes, e a cláusula FOREIGN KEY (IdOperadora) REFERENCES Operadora (IdOperadora) estabelece o relacionamento entre elas, exatamente como descrito no modelo da figura. A execução é válida e produz o resultado esperado.

O comando CREATE TABLE é a instrução da sublinguagem DDL (Data Definition Language) responsável por criar uma nova tabela no banco de dados. A sintaxe básica é CREATE TABLE nome_da_tabela (coluna1 tipo, coluna2 tipo, ...), e é dentro dessa estrutura que definimos as colunas, seus tipos e as restrições de integridade. No comando apresentado, a tabela Operadora é criada com duas colunas: IdOperadora (INT, NOT NULL) e DeOperadora (VARCHAR(45), NULL), tendo IdOperadora como chave primária. A tabela Reclamacoes é criada com três colunas: IdReclamacao (INT, NOT NULL, AUTO_INCREMENT), DeReclamacao (VARCHAR(45), NULL) e IdOperadora (INT, NOT NULL), tendo IdReclamacao como chave primária e IdOperadora como chave estrangeira que referencia a chave primária da tabela Operadora.

O relacionamento entre as duas tabelas é estabelecido justamente pela chave estrangeira (FOREIGN KEY). A chave estrangeira é uma restrição que garante a integridade referencial: ela assegura que o valor armazenado na coluna IdOperadora da tabela Reclamacoes deve existir na coluna IdOperadora da tabela Operadora. Isso cria um vínculo lógico entre os registros das duas tabelas, representando o relacionamento descrito no modelo. A sintaxe utilizada — FOREIGN KEY (IdOperadora) REFERENCES Operadora (IdOperadora) — é a forma padrão de declarar essa restrição diretamente na definição da tabela, sem necessidade de uma cláusula CONSTRAINT nomeada.

Na prática, esse modelo representa um relacionamento 1:N (um para muitos): uma operadora pode ter várias reclamações, mas cada reclamação pertence a uma única operadora. A chave primária de Operadora é referenciada pela chave estrangeira em Reclamacoes, garantindo que não haja reclamações órfãs. O comando AUTO_INCREMENT na coluna IdReclamacao faz com que o banco gere automaticamente um valor único para cada nova reclamação inserida, o que é um detalhe de implementação que não interfere no relacionamento.

A pegadinha que a banca poderia explorar é a confusão entre CREATE TABLE e CREATE DATABASE, ou a ideia de que seria necessário um comando separado para criar o relacionamento. Aqui, o relacionamento já está declarado dentro do próprio CREATE TABLE da tabela Reclamacoes, o que é perfeitamente válido. Outra possível confusão seria pensar que a ordem de criação das tabelas importa — mas como a tabela Operadora é criada antes de Reclamacoes, a referência é válida. O comando está correto e atende exatamente ao que o modelo da figura descreve.

NÃO CAIA NESSA!

A banca pode tentar confundir o candidato fazendo-o acreditar que o relacionamento precisaria ser criado com um comando ALTER TABLE separado, ou que a ordem de criação das tabelas estaria errada. Mas a declaração da FOREIGN KEY dentro do CREATE TABLE é a forma mais direta e correta de estabelecer o vínculo, e a ordem apresentada (primeiro a tabela referenciada, depois a que referencia) é a exigida pelo SQL.

Item — ✅ CERTO

A execução dos comandos resulta na criação das duas tabelas Operadora e Reclamacoes, com suas respectivas colunas e restrições. A chave estrangeira declarada em Reclamacoes referencia a chave primária de Operadora, estabelecendo o relacionamento descrito no modelo da figura. Não há erro de sintaxe, nem de lógica: a ordem de criação está correta (a tabela referenciada é criada antes), os tipos de dados são compatíveis e as restrições de integridade estão bem definidas. Portanto, o item está Certo.

Gabarito: Certo

Link permanente: /questoes/ce190987