População de Dados: Linhas e Estações de SP
Introdução
Este documento descreve a estrutura e o processo de povoamento do banco de dados PostgreSQL com os dados das Linhas e Estações do sistema metroferroviário de São Paulo, que inclui Metrô, CPTM e ViaMobilidade. Os dados contemplam as Linhas 1 a 13, com exceção da Linha 6, que ainda não está em operação.
Esse banco de dados foi construido para o projeto ter acesso facilitado as informações das linhas e das estações, e principalmente a relação de quais estações pertencem a quais linhas.
Foi utilizado o ORM GORM com a linguagem Go para definir os modelos, criar as tabelas e inserir os dados iniciais automaticamente por meio de uma rota exposta no backend.
Estrutura da Tabela Linha
A tabela linhas
armazena as informações principais de cada linha do transporte sobre trilhos de SP.
Campo | Tipo | Descrição |
---|---|---|
id | uint | Chave primária |
nome | string | Nome completo da linha |
numero | string | Número identificador da linha (como "1", "9" etc) |
Exemplos de valores:
- Linha 1 - Azul
- Linha 9 - Esmeralda
- Linha 13 - Jade
Estrutura da Tabela Estacao
A tabela estacoes
armazena todas as estações associadas a cada linha.
Campo | Tipo | Descrição |
---|---|---|
id | uint | Chave primária |
nome | string | Nome da estação |
linha_id | uint | Chave estrangeira para linha |
Cada estação está associada a exatamente uma linha via o campo linha_id
.
Rota para População do Banco de Dados
O backend já possui uma função utilitária que popula automaticamente as tabelas linhas
e estacoes
. Esta função pode ser chamada a partir de uma rota dedicada, como por exemplo:
POST /admin/populate-database
Essa rota executa a função PopulateDatabase(db *gorm.DB)
que:
- Cria as entradas das linhas (1 a 13, exceto 6).
- Cria todas as estações correspondentes.
- Garante integridade referencial entre
estacoes
elinhas
.
Observações Finais
- A fonte de dados utilizada corresponde às informações oficiais disponíveis nos sites da CPTM, Metrô de SP e ViaMobilidade.
- Caso novas linhas ou estações sejam lançadas, basta atualizar o
map[string][]string
usado na função de população.
Importante notar que o banco de dados está sujeito a um aumento do número de tabelas, pois talvez seja necessário guardar as informações de pontos interessantes ao redor de cada estação.