Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2025

Banco de DadosSQL
Código
fg107871
Banca
FGV
Órgão
CPRM
Ano
2025
Nível
Superior
Cargo
Analista em Geociências - Geoprocessamento
Um banco de dados PostGIS precisa de uma tabela chamada rios, com campos id (inteiro), nome (texto) e geom (linha geográfica).Assinale o comando SQL adequado para essa criação.
  1. ACREATE TABLE rios (id INT, nome TEXT, geom LINE);
  2. BCREATE TABLE rios (id SERIAL, nome VARCHAR, geom LINESTRING);
  3. CCREATE SPATIAL rios (id INT, nome TEXT, geom LINESTRING);
  4. DCREATE TABLE rios_geom (id, nome, geom) VALUES ('int', 'text', 'line');
  5. ECREATE TABLE rios (id SERIAL, nome TEXT); SELECT AddGeometryColumn('rios', 'geom', 4326, 'LINESTRING', 2);
Revelar gabarito e comentário

GabaritoE — CREATE TABLE rios (id SERIAL, nome TEXT); SELECT AddGeometryColumn('rios', 'geom', 4326, 'LINESTRING', 2);

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

Criação de Tabela com Dados Geoespaciais no PostGIS

Gabarito: letra E. A alternativa E cria corretamente a tabela com id SERIAL e nome TEXT, e em seguida utiliza a função AddGeometryColumn do PostGIS para adicionar a coluna geométrica geom com SRID 4326, tipo LINESTRING e 2 dimensões, que é o procedimento padrão para tabelas com dados espaciais nesse SGBD.

A questão testa o conhecimento específico do PostGIS, extensão espacial do PostgreSQL. No PostGIS, para criar uma coluna que armazena geometrias, não basta declarar o tipo diretamente no CREATE TABLE (como geom LINESTRING). É necessário usar a função AddGeometryColumn ou especificar a sintaxe geometry(LINESTRING, 4326). A alternativa E é a única que segue o padrão correto.

NÃO CAIA NESSA!

A banca explora o fato de que muitos candidatos conhecem apenas o SQL padrão e desconhecem a necessidade de funções específicas do PostGIS. A alternativa B parece correta à primeira vista, mas a sintaxe geom LINESTRING não é suficiente, pois falta o SRID e a declaração explícita do tipo geometry. No PostGIS, a forma recomendada é usar AddGeometryColumn ou CREATE TABLE ... geom geometry(LINESTRING, 4326).

Alternativa A — ❌ Incorreta

O tipo LINE não é um tipo válido no PostGIS (que usa LINESTRING para linhas). Além disso, a alternativa não especifica o sistema de referência espacial (SRID), o que é essencial em dados geoespaciais. Mesmo que LINE fosse aceito, a criação seria incompleta sem SRID.

Alternativa B — ❌ Incorreta

Apesar de LINESTRING ser o tipo correto, no PostGIS a coluna geométrica deve ser do tipo geometry (ou geography), e não diretamente LINESTRING. A sintaxe correta seria geom geometry(LINESTRING, 4326) ou, alternativamente, usar AddGeometryColumn. A alternativa não especifica o SRID e não utiliza a estrutura adequada para dados espaciais no PostgreSQL/PostGIS.

Alternativa C — ❌ Incorreta

CREATE SPATIAL não é um comando SQL válido. O correto é CREATE TABLE. Não há qualquer comando CREATE SPATIAL na linguagem SQL padrão ou no PostgreSQL.

Alternativa D — ❌ Incorreta

A sintaxe apresentada parece mesclar um CREATE TABLE com VALUES, o que é inválido. O comando CREATE TABLE não aceita cláusula VALUES. Essa estrutura lembra um INSERT, mas não cria a tabela corretamente.

Alternativa E — ✅ Correta ⟵ GABARITO

A alternativa realiza duas operações: primeiro cria a tabela rios com as colunas id (SERIAL, auto incremento) e nome (TEXT); em seguida, chama a função AddGeometryColumn do PostGIS para adicionar a coluna geom com SRID 4326 (WGS 84), tipo LINESTRING e dimensão 2. Essa é a forma clássica e recomendada para criar tabelas com dados espaciais no PostGIS, garantindo que a coluna geométrica seja corretamente registrada no catálogo de geometrias.

Gabarito: letra E.

Link permanente: /questoes/fg107871