Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2022

Banco de DadosPostgreSQL
Código
fc064610
Banca
FCC
Órgão
TRT - 17ª Região (ES)
Ano
2022
Cargo
Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação
Considere que em um banco de dados PostgreSQL 13, aberto e funcionando em condições ideais, existam duas tabelas: Cidades (com os campos NomeCidade e Estado) e Populacao (com os campos Cidade, NumHabitantes, NumVaras). A tabela Cidades foi criada pelo comando:

CREATE TABLE Cidades (NomeCidade VARCHAR(80) PRIMARY KEY, Estado VARCHAR(40));

Para que, ao se inserir ou atualizar algum registro na tabela Populacao, seja verificado se o campo Cidade corresponde a uma cidade existente na tabela Cidades, deve-se utilizar uma chave estrangeira. Isso é feito utilizando o comando SQL na criação da tabela Populacao:

CREATE TABLE Populacao (Cidade VARCHAR(80) ....I..... , NumHabitantes INT, NumVaras INT);

A lacuna I é corretamente preenchida com
  1. AFOREIGN KEY (Cidade) REFERENCES Cidades(NomeCidade)
  2. BFOREIGN KEY REFERENCES Cidades(NomeCidade)
  3. CREFERENCES Cidades(NomeCidade)
  4. DFOREIGN KEY Cidades(NomeCidade)
  5. EREFERENCES FOREIGN KEY (Cidade) TO Cidades(NomeCidade)
Revelar gabarito e comentário

GabaritoC — REFERENCES Cidades(NomeCidade)

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

PostgreSQL: Criação de chave estrangeira no CREATE TABLE

Gabarito: letra C. No PostgreSQL, a sintaxe para definir uma chave estrangeira diretamente na coluna é REFERENCES tabela(coluna), dispensando a palavra FOREIGN KEY. As demais alternativas apresentam erros de sintaxe ou redundância.

A questão testa o conhecimento da sintaxe SQL padrão (e do PostgreSQL) para definir uma restrição de integridade referencial no momento da criação da tabela. Quando a chave estrangeira é definida na própria coluna, a forma correta é:

coluna tipo REFERENCES tabela_referenciada(coluna_referenciada)

Se a definição for feita como uma constraint separada (após as colunas), a sintaxe seria:

FOREIGN KEY (coluna) REFERENCES tabela_referenciada(coluna_referenciada)

Alternativa A — ❌ Incorreta

FOREIGN KEY (Cidade) REFERENCES Cidades(NomeCidade) — essa é a sintaxe de uma constraint separada, não pode ser colocada diretamente na declaração da coluna. Se inserida na lacuna, resultaria em erro de sintaxe.

Alternativa B — ❌ Incorreta

FOREIGN KEY REFERENCES Cidades(NomeCidade) — falta especificar a coluna local ((Cidade)). Além disso, está usando a palavra FOREIGN KEY indevidamente no contexto de coluna.

Alternativa C — ✅ Correta ⟵ GABARITO

REFERENCES Cidades(NomeCidade) — sintaxe exata para definir uma chave estrangeira na própria coluna. O PostgreSQL (e a maioria dos SGBDs relacionais) aceita essa forma inline.

Alternativa D — ❌ Incorreta

FOREIGN KEY Cidades(NomeCidade) — falta a palavra REFERENCES e a coluna local. Não é uma construção SQL válida.

Alternativa E — ❌ Incorreta

REFERENCES FOREIGN KEY (Cidade) TO Cidades(NomeCidade) — palavras-chave na ordem errada e uso de TO (que não faz parte da sintaxe padrão). Totalmente inválida.

PEGA ESSA DICA!

Decore as duas formas de declarar chave estrangeira:

  • Inline (na coluna): coluna tipo REFERENCES tabela(coluna)

  • Constraint (após as colunas): [CONSTRAINT nome] FOREIGN KEY (coluna) REFERENCES tabela(coluna)

A FCC costuma cobrar a forma inline nas questões de CREATE TABLE.

Gabarito: letra C.

Link permanente: /questoes/fc064610