Closed kelvins closed 5 years ago
@kelvins, concordo contigo, vou trabalhar nessa Issue.
Pow legal @helysousa, seria ótimo. Se precisar de uma mão é só falar.
Codigo UF pode ser a chave estrangeira em Municípios, certo?
Isso. Só não parei para pensar em como ficariam os arquivos CSV e JSON ao separar isso ainda.
No caso do CSV acho que poderíamos dividir em dois arquivos, no caso do JSON, acho que teríamos uma estrutura parecida com [ municipios: [ {mun 1,...}, {mun2,...}...{}], estados: [{UF1,...},{UF 2,...}]], o que acha?
Para ser mais preciso, segue um exemplo (desconsidere o número da população, os valores são fictícios):
[ "estados": [ { "codigo_uf": 52, "uf": "GO", "estado": "Goiás" }, { "codigo_uf": 31, "uf": "MG", "estado": "Minas Gerais" } ], "municipios": [ { "codigo_ibge": 5200050, "nome_municipio": "Abadia de Goiás", "capital": false, "codigo_uf": 52, "latitude": -16.7573, "longitude": -49.4412, "populacao": 123984 }, { "codigo_ibge": 3100104, "nome_municipio": "Abadia dos Dourados", "capital": false, "codigo_uf": 31, "latitude": -18.4831, "longitude": -47.3916, "populacao": 32789 } ] ]
Certo, acho que faz sentido manter dessa maneira sim.
E ai @helysousa beleza? Só para comunicar que foram feitas algumas alterações no master devido ao PR https://github.com/kelvins/Municipios-Brasileiros/pull/22, caso você ainda esteja trabalhando nessa issue.
@kelvins , bom dia. Sim, vi que entrou um novo campo relacionado a Capital. Vou incluir essa informação no modelo proposto acima. Salvo algum impedimento maior, devo submeter uma PR ainda esse final de semana. Um abraço e obrigado pela mensagem.
Na solução apresentada nos arquivos originais o campo capital é um boolean, na solução que será proposta, com estruturas separando os municípios dos estados, proponho a criação de uma FK Capital na tabela de estados, apontando para a tabela de municípios.
Desta forma o comando:
select ESTADO, MUNICIPIO AS CAPITAL from MUNICIPIOS_BRASILEIROS where CAPITAL is TRUE;
Poderia ser substituido por:
select UF.ESTADO, MN.MUNICIPIO from ESTADOS_BRASILEIROS UF inner join MUNICIPIOS_BRASILEIROS MN on UF.CAPITAL = MN.CODIGO_IBGE
Desta forma, o campo CAPITAL em ESTADOS_BRASILEIROS teria o CODIGO_IBGE da respectiva capital.
Perfeito, acho que fica bom a FK Capital na tabela de estados. Mas cara, pode fazer tranquilo, quando sobrar tempo. A ideia é se divertir, aprender e disseminar conhecimento. 😄 Abraço
Apenas comentando, para o caso do json, a estrutura seria algo similar a isso:
{
"estados": [{
"codigo_uf": 52,
"uf": "GO",
"estado": "Goiás"
},
...
],
"cidades": [{
"codigo_ibge": 5200050,
"nome_municipio": "Abadia de Goiás",
"capital": false,
"codigo_uf": 52,
"latitude": -16.7573,
"longitude": -49.4412,
"populacao": 123984
},
...
]
}
Achei validos destacar pois no comentário anterior, da a entender que se estaria utilizando chave:valor
entre colchetes (como se fosse uma lista) e não entre chaves (correto para objetos).
De qualquer forma, com o SQL feito, me disponho a fazer um PR com o json atualizado. Prefiro aguardar o SQL apenas para manter um padrão.
Sobre o CSV, em minha opinião o mais correto seria ter uma pasta com dois arquivos separados.
@Otoru, isso mesmo, provavelmente o colchetes foi por engano no lugar das chaves (inclusive isso deu a ideia de incluir um "validador" de arquivos para rodar no travis, pra não cair nesse tipo de problema).
Sobre o CSV, concordo com você, como serão 2 arquivos (municípios e estados) acho melhor organizar eles em uma pasta.
Como essa issue estava parada a um certo tempo, resolvi implementar as alterações no PR https://github.com/kelvins/Municipios-Brasileiros/pull/23. Seria uma boa se alguém pudesse dar uma olhada para garantir que está tudo ok e que faz sentido as alterações realizadas.
Acredito que faz mais sentido mover as informações relacionadas ao estado (
Código UF
,UF
,Estado
) para uma tabela separada e utilizar uma chave estrangeira para ligar com cada município. Assim podemos remover a quantidade de informações repetidas na tabela de municípios.