Pular para o conteúdo principal

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

Banco de DadosSQL
Código
ce195367
Banca
CESPE / CEBRASPE
Órgão
BANRISUL
Ano
2025
Nível
Superior
Cargo
Técnico em Tecnologia da Informação II - Área: Administração de Banco de Dados
Assinale a opção em que é corretamente apresentado o comando DDL que permite criar a tabela de nome itens_pedido e relacionar cada pedido a seus produtos, de modo que: pedido_id e produto_id sejam chaves estrangeiras que referenciem a tabela; quantidade seja um inteiro maior que zero; preco_unitario seja um decimal maior que zero; e a combinação (pedido_id, produto_id) seja a chave primária, garantindo unicidade e não null.
  1. ACREATE TABLE itens_pedido (pedido_id INTEGER REFERENCES pedidos(id),produto_id INTEGER REFERENCES produtos(id),quantidade INTEGER CHECK (quantidade > 0),preco_unitario DECIMAL(10,2) CHECK(preco_unitario > 0), UNIQUE (pedido_id, produto_id));
  2. BCREATE itens_pedido (pedido_id INTEGER REFERENCES pedidos(id),produto_id INTEGER REFERENCES produtos(id),quantidade INTEGER CHECK quantidade > 0,preco_unitario DECIMAL(10,2) CHECKpreco_unitario > 0,PRIMARY KEY (pedido_id, produto_id) );
  3. CCREATE TABLE itens_pedido (pedido_id INTEGER,produto_id INTEGER,quantidade INTEGER CHECK (quantidade > 0),preco_unitario DECIMAL(10,2) CHECK(preco_unitario > 0),FOREIGN KEY (pedido_id) pedidos(id),FOREIGN KEY (produto_id) produtos(id),PRIMARY KEY (pedido_id, produto_id));
  4. DCREATE TABLE itens_pedido (pedido_id INTEGER REFERENCESpedidos(id), produto_id INTEGER REFERENCESprodutos(id), quantidade INTEGER CHECK (quantidade > 0),preco_unitario DECIMAL(10,2) CHECK(preco_unitario > 0),PRIMARY KEY (pedido_id, produto_id));
  5. ECREATE TABLE itens_pedido (item_id INTEGER PRIMARY KEY,pedido_id INTEGER REFERENCES pedidos(id),produto_id INTEGER REFERENCES produtos(id),quantidade INTEGER CHECK (quantidade > 0),preco_unitario DECIMAL(10,2) CHECK(preco_unitario > 0),UNIQUE (pedido_id, produto_id));
Revelar gabarito e comentário

GabaritoD — CREATE TABLE itens_pedido ( pedido_id INTEGER REFERENCES pedidos(id), produto_id INTEGER REFERENCES produtos(id), quantidade INTEGER CHECK (quantidade > 0), preco_unitario DECIMAL(10,2) CHECK (preco_unitario > 0), PRIMARY KEY (pedido_id, produto_id) );

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”.

DDL – CREATE TABLE com chave primária composta e chaves estrangeiras

Gabarito: letra D. A alternativa D apresenta a sintaxe correta do comando CREATE TABLE para criar a tabela itens_pedido com chave primária composta (pedido_id, produto_id) e chaves estrangeiras definidas inline via REFERENCES, além das restrições CHECK com parênteses. É a única que atende todos os requisitos do enunciado sem erros sintáticos ou conceituais.

A questão exige conhecimento da sintaxe da DDL (Data Definition Language) do SQL padrão, especificamente do comando CREATE TABLE com restrições de integridade: chave primária, chave estrangeira e CHECK. O enunciado pede que a combinação (pedido_id, produto_id) seja a chave primária (garantindo unicidade e NOT NULL implícita) e que pedido_id e produto_id sejam chaves estrangeiras para as tabelas pedidos e produtos, respectivamente.

erDiagram
    PEDIDOS ||--o{ ITENS_PEDIDO : "contém"
    PRODUTOS ||--o{ ITENS_PEDIDO : "é item de"
    ITENS_PEDIDO {
        int pedido_id PK, FK
        int produto_id PK, FK
        int quantidade CHECK(quantidade > 0)
        decimal preco_unitario CHECK(preco_unitario > 0)
    }

Critério

Alternativa A

Alternativa B

Alternativa C

Alternativa D (Gabarito)

Alternativa E

Sintaxe CREATE TABLE

Correta

Incorreta (falta TABLE)

Correta

Correta

Correta

Chave primária composta

Incorreta (usa UNIQUE, que permite NULL)

Correta (PRIMARY KEY)

Correta (PRIMARY KEY)

Correta (PRIMARY KEY)

Incorreta (usa UNIQUE + coluna extra item_id como PK)

Chaves estrangeiras

Correta (inline REFERENCES)

Correta (inline REFERENCES)

Incorreta (falta REFERENCES na sintaxe)

Correta (inline REFERENCES)

Correta (inline REFERENCES)

Restrições CHECK

Correta (com parênteses)

Incorreta (sem parênteses)

Correta (com parênteses)

Correta (com parênteses)

Correta (com parênteses)

Atende todos os requisitos

Alternativa A — ❌ Incorreta

Utiliza UNIQUE (pedido_id, produto_id) em vez de PRIMARY KEY. A restrição UNIQUE permite valores NULL (a menos que as colunas sejam declaradas NOT NULL separadamente), enquanto a PRIMARY KEY exige NOT NULL implicitamente. O enunciado exige que a chave primária garanta "unicidade e não null", portanto a restrição correta é PRIMARY KEY.

Alternativa B — ❌ Incorreta

O comando inicia com CREATE itens_pedido, omitindo a palavra TABLE. A sintaxe padrão SQL é CREATE TABLE nome_da_tabela (...). Além disso, as restrições CHECK estão escritas sem parênteses (CHECK quantidade > 0), o que foge ao padrão (deveria ser CHECK (quantidade > 0)). Embora alguns SGBDs aceitem a omissão, a banca CESPE/CEBRASPE exige a sintaxe formal.

Alternativa C — ❌ Incorreta

A declaração das chaves estrangeiras está incompleta. O correto é FOREIGN KEY (coluna) REFERENCES tabela(coluna). Na alternativa, faltou a palavra REFERENCES antes de pedidos(id) e produtos(id), ficando: FOREIGN KEY (pedido_id) pedidos(id) — o que é inválido.

Alternativa D — ✅ Correta ⟵ GABARITO

Apresenta a sintaxe completa e correta:

  • CREATE TABLE com o nome da tabela.

  • Colunas pedido_id e produto_id com REFERENCES inline (forma abreviada de definir chave estrangeira).

  • quantidade INTEGER CHECK (quantidade > 0) com parênteses.

  • preco_unitario DECIMAL(10,2) CHECK (preco_unitario > 0).

  • PRIMARY KEY (pedido_id, produto_id) na definição da tabela, atendendo à exigência de chave primária composta com NOT NULL implícito.

Alternativa E — ❌ Incorreta

Inclui uma coluna extra item_id INTEGER PRIMARY KEY, que torna item_id a chave primária da tabela. O enunciado exige que a chave primária seja a combinação (pedido_id, produto_id). Além disso, a restrição UNIQUE (pedido_id, produto_id) não impede valores NULL e não substitui a PRIMARY KEY.

Gabarito: letra D

Link permanente: /questoes/ce195367