Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Skeletron en 20 Marzo 2010, 00:27 am



Título: Base de Datos de Ciudades del Mundo
Publicado por: Skeletron en 20 Marzo 2010, 00:27 am
Hola gente del foro/visitantes!

Como se ha hablado en este tema (http://foro.elhacker.net/bases_de_datos/base_de_datos_de_localidades_de_todo_el_mundo-t287422.0.html), parece que a varios usuarios (y seguramente muchos programadores) les hace falta una base de datos que posea localidades (ciudades, pueblos, etc etc..) de todo mundo.


Hoy estuve viendo, y parece que no es tan facil encontrar una base de datos del estilo, totalmente "limpia" (sin localidades repetidas y/o con errores graves).
Pero encontré GeoNames.org, pero la cual, tiene un defecto importante: Tiene todo totalmente desparramado en 1 sola tabla. Totalmente ineficiente.
Esa base de datos tiene informacion hasta de las cosas mas inospitas de la tierra, y como muchos sabran: Exceso de informacion, es falta de informacion.

Aunque GeoName, nos facilita algo:
Nos puede dar todo el rejunte de informacion por Pais. O sea que puedo descargar todo eso desparramado de Argentina.
Yo conozco argentina, y por ende, sé cuales cosas son Provincias, Localidades, etc.
Puedo deducirlo tambien en base a una tabla que da GeoName, donde clasifica las entradas de la base de datos, con un campo: "FCLASS". Recien investigando, me di cuenta que FCLASS=PPL, son las localidades y Paises. Es cuestion de borrar las entradas que FCLASS no es ="PPL" y listo.

Pero, hay paises que son totalmente inestables, como EE.UU. donde no solo existen PROVINCIAS, sino que tambien esas provincias (ellos lo llaman ESTADO) tienen sub-diviciones, y esas tienen mas subdiviciones, y a la vez mas y mas y mas!!.....


Entonces me dije una cosa:
Si los chicos del foro me dicen exactamente sobre que paises estan interesados tener esta informacion, yo podria descargarlos individualmente y lograr armar una tabla: PAISES, una tabla PROVINCIAS y una tabla LOCALIDADES/CIUDADES.

Aquel de quiera que su pais, o X pais aparezca en la base de datos, tendrá que dar la siguiente informacion:
*Nombre del Pais
*Nombre de todas sus Provincias

Para ARGENTINA, no será necesario, ya que yo conozco que Provincias tiene.
Ahora por favor, alguien empiece a pedir Paises y diga el nombre de todas sus provincias.


Alguien quiere participar?
Yo luego armo todas las tablas


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 20 Marzo 2010, 00:29 am
Buen aporte para la gente de desarrollo web digo  ::)  portales y formularios.   ;-)

Si todavia fuese Moderad@r de esta area te diera chincheta  :rolleyes:  pero como no lo soy, dejemos a Napk haber si lo considera y se anima  :P


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Skeletron en 20 Marzo 2010, 00:44 am
A ver si empiezas Tiffa dando los nombres de la provincias donde vives


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 20 Marzo 2010, 00:46 am
Citar
A ver si empiezas Tiffa dando los nombres de la provincias donde vives

Yo  :o   :o   :o   :o

Apenas se como se llama la provincia donde yo vivo  :xD  nisiquiera se cuantas provincias en total tiene el pais   :xD   :xD 


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Skeletron en 20 Marzo 2010, 03:43 am
Bueno.
Parece que por ahora nadie se interesa.

Es probable que empiece con algunos paises de Sud-Centro america y Europa.

Comenzaré con Argentina + Mexico + Colombia + España

Luego seguiré con demas de Sudamerica..


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Baaaw Oic en 20 Marzo 2010, 04:21 am
Me apunto siempre y cuando se plantee la estructura de la BD ... saludos.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 20 Marzo 2010, 04:45 am
Creo que el quiere que digas de que pais eres y indiques todas las provincias de ese pais.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Skeletron en 20 Marzo 2010, 04:56 am
Me apunto siempre y cuando se plantee la estructura de la BD ... saludos.
Claro que si tio... Si despues subiré los archivos para que utilices en tu web..

Creo que el quiere que digas de que pais eres y indiques todas las provincias de ese pais.
+1
Gracias Tiffa


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: seba123neo en 20 Marzo 2010, 05:02 am
con buscar 10 minutos en wikipedia tenes todas las provincias que quieras.. :¬¬


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: rob1104 en 20 Marzo 2010, 05:07 am
Estados Unidos tiene esta jerarquia:
-País
  -Estado
    -Condando
      -Ciudad

Sin embargo, el condado siempre se obvia en ese tipo de formularios, asi que puedes seguir la misma logica Ciudad-Estado-Ciudad

Saludos

EDITO: En la pagina de sexyono estan las localidades mas importantes de paises hispanos y E.U.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Skeletron en 20 Marzo 2010, 15:01 pm
Estados Unidos tiene esta jerarquia:
-País
  -Estado
    -Condando
      -Ciudad

Sin embargo, el condado siempre se obvia en ese tipo de formularios, asi que puedes seguir la misma logica Ciudad-Estado-Ciudad

Saludos

EDITO: En la pagina de sexyono estan las localidades mas importantes de paises hispanos y E.U.

Bien..!!
Dame tu link y te pongo un 10 chico sexy! jajajajaj


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Baaaw Oic en 21 Marzo 2010, 14:04 pm
Aqui es

Pais
- Departamento
 - Provincia
  - Distrito

Esta en wikipedia pero la idea es tener un archivo unico con todos los datos ya metidos en la BD.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Ari Slash en 21 Marzo 2010, 15:32 pm
Aqui en chile es:

Pais
 -Region
  -Provincia
   -Comuna
    -Ciudad
     -Sector
      -Poblacion o villa
       -Calle
        -Mi casa xD

y la BD seria una verdadera celula

cada pais debe tener n regiones,
cada region debe tener n provincias
cada provincia debe tener n ciudades

saludos


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 16:08 pm
Donde vivo es:

Pais
Provincia

Lo de calle y Sector eso es ya individual a lo que Skeletron esta solicitando supongo  :P

Pero considerando los ejemplos de como esta organizado todo en sus paises... la estructura final de las tablas deberan ser varias, ya que hay paises que tienen detalles de sus localidades que otros no la tienen... serian varias tablas hijas y una padre para la relacion..


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Baaaw Oic en 21 Marzo 2010, 16:10 pm
Haber esperemos la estructura de Skeletron.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Ari Slash en 21 Marzo 2010, 16:21 pm
Pero considerando los ejemplos de como esta organizado todo en sus paises... la estructura final de las tablas deberan ser varias, ya que hay paises que tienen detalles de sus localidades que otros no la tienen... serian varias tablas hijas y una padre para la relacion..

yo creo que debemos tomar los atributos que estan en todas las localidades en comun como obligatorios (1,1)y los que estan en especificos que sean opcionales (0,1), todo en una sola tabla

asi nos evitamos estar haciendo muchas tablas y dejamos una comun y generica que es mas facil de entender y administrar para relacionar con demas tablas, bueno dependiendo del uso que se le de xD


saludos


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 16:27 pm
Aunque reconozco que hay ocasiones donde desnormalizar una estructura de tablas es beneficioso he inclusive mas optimizado que la normalizacion. Por etica, por limpieza y por mejor manejo ante cualquier modificacion o cambio que otra persona quiera darle a la estructura de tablas, deberia considerarse un poco la normalizacion aqui. No puedo decir que inconvenientes podria tener (podrian haber datos duplicados, donde Sector en X pais y donde no exista Sector en otro pais porke no lo usen por ejemplo, pues... que valor iria alli NULL  :huh:  ? ) hay que ver primero el planteamiento que Skeletron esta considerando... pero para este caso especifico, al menos yo si me inclinaria por la normalizacion antes de la desnormalizacion, aunque eso incluya crear un sinumero distinto de tablas..


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Ari Slash en 21 Marzo 2010, 16:37 pm
bueno si esperemos a eskeletron

bueno para mi seria mas facil administrar 1 tabla que varias, bueno eso va a criterio de uno, creo
pero como dices, para que otra persona despues pueda actuar sobre la base de datos es mejor dejarlo normalizado.

o bien hacer la normalizadas como lo que has planteado y de ahi optimizarla al gusto del que la use  :)


saludos


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 16:47 pm
Ok Ari y como harias este proyecto en 1 sola tabla????

Pregunto porque por ejemplo 3 paises distintos ya expuestos:

Citar
Pais
- Departamento
 - Provincia
  - Distrito

Pais
 -Region
  -Provincia
   -Comuna
    -Ciudad

Pais
Provincia

Considera, como haces 1 sola tabla con 3 ejemplos de 3 paises distintos como los anteriores expuestos... hay campos que en otros pais no existen pero si existen en uno, entonces como se le hace aca??? porque si consideras incluirlos todos en la misma tabla.. van a ver muchos valores NULL integrados ahi esto sin considerar datos duplicados, recuerdate que hay nombres de ciudades similares aun siendo distintos paises (cordoba por ejemplo hay uno en Espana hay otro en Argentina)....Y si tu quieres actualizar por ejemplo cordoba... y das un UPDATE se van a actualizar ambos a la vez Argentina y Espana (y si hay mas cordoba en otro pais tambien)... y si quieres eliminar el pais de provincia cordoba se van a eliminar todos los paises con alguna region llamada cordoba?



Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Ari Slash en 21 Marzo 2010, 16:56 pm
la tabla seria Localidades:

Pais (Obligatorio)
Departamento (opcional)
Region (Opcional)
Provincia (Obligatorio)
Distrito (opcional)
Comuna (opcional)
Ciudad (Obligatorio)  <- Este debe ser primary key

los valores opcionales pueden ser null, por ejemplo aqui mi localidad es concepcion chile:

Pais Chile
Departamento NULL
Region Region del bio-bio
Provincia Concepcion
Distrito NULL
Comuna Concepcion
Ciudad Concepcion

habran valores null y valores repetidos, pero lo de repetidos no importa ya que en una provincia pueden haber varias comunas o en un pais puede tener varias regiones o departamentos, no seria necesario validar si esta repetido o no. En cambio las ciudades si, asi que por esa razon la colocamos como primary key para que no se repita y ademas la ciudad es la localidad en si, por eso como clave identificadora queda bien








Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ~ Yoya ~ en 21 Marzo 2010, 16:58 pm
Esto parece Off-topic....
Porque tifa no es moderadora?


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 17:01 pm
Citar
Porque tifa no es moderadora?

Lo era, decidi renunciar a la posicion por cuestiones que no voy a comentar aqui. Pero, lo valioso es que puedo seguir respondiendo y cooperando en el area cuando alguien tenga alguna duda, no hay que moderar un subforo para ayudar  ;)


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 17:03 pm
Citar
En cambio las ciudades si, asi que por esa razon la colocamos como primary key para que no se repita y ademas la ciudad es la localidad en si, por eso como clave identificadora queda bien

Ok entonces, los paises  distintos que tengan el mismo nombre de ciudades que pasara??? sino se pueden repetir digo  :P


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Ari Slash en 21 Marzo 2010, 17:12 pm
En esos casos yo en el nombre de la ciudad colcoaria ademas un identificador
por ejemplo

aqui cerca hay una ciudad llamada los angeles
y tambien esta los angeles de estados unidos

en ese caso yo colocaria, Los angeles CH y Los Angeles CA
seguir manteniendo una tabla seria super bueno para facilitar el uso que se le de

tambien seria el caso de colocar la ciudad y pais como primary key, y hay se puede repetir sin problemas siempre que sea de otro pais


saludos


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 17:18 pm
Citar
en ese caso yo colocaria, Los angeles CH y Los Angeles CA

Ok entonces... tu vas a memorizarte todos los autentificadores existentes en la tabla donde cada pais tenga una ciudad de nombre identico   :huh:  :huh: digamos que no que no te lo memorizas, pero para no afectar otros registros tienes que averiguar el identificador, entonces haces una consulta SQL previa para averiguar como se llama el identificador de Los Angeles para Chile por ejemplo  :huh:  no digo que no se pueda, se puede efectivamente, pero es mas trabajoso a nivel de consultas.

Citar
tambien seria el caso de colocar la ciudad y pais como primary key, y hay se puede repetir sin problemas siempre que sea de otro pais

Si le pasas el atributo Primary Key no se podran repetir, si fuese KEY o INDEX si pero Primary Key no, suponiendo que decides usar KEY o INDEX para que se repitan y continuen siendo indices, tendras que aplicar lo anterior lo del identificador y recordarte como se llama o previamente buscarlo para no eliminar o actualizar una cantidad de registros superior a la que consideras.. y si hablamos de lectura pasara lo mismo recordarte o previamente buscar el identificador para que no se muestren todos los paises con una Ciudad Los Angeles cuando a lo mejor se consulte el motor para ver la ciudad Los Angeles.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Skeletron en 21 Marzo 2010, 17:30 pm
Porque se complican tanto?
Tabla Paises
Tabla Regiones
Tabla Ciudades

Y listo


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Ari Slash en 21 Marzo 2010, 17:31 pm
entonces haces una consulta SQL previa para averiguar como se llama el identificador de Los Angeles para Chile por ejemplo  :huh:  no digo que no se pueda, se puede efectivamente, pero es mas trabajoso a nivel de consultas.

exactamente, pero eso ya es problema de la capa siguiente xD

lo ideal seria que hayan unos tres tipos de la misma base de datos, ya que algunas seran mas utiles en unas ocasiones y otras en otras  ;)


saludos


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ^Tifa^ en 21 Marzo 2010, 17:36 pm
Citar
Porque se complican tanto?

Disculpa Skeletron  ;)  la complicacion vino por querer cuestionar yo el modelo de estructura propuesto por Ari  :D 

Pero ya no le doy seguimiento al asunto, no quiero que cierren el hilo  :P


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ~ Yoya ~ en 21 Marzo 2010, 17:38 pm
Pero ya no le doy seguimiento al asunto, no quiero que cierren el hilo  :P
Pueda ser que no lo cierren, si no que lo muevan xD.


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Punisher.linux en 6 Abril 2010, 09:22 am
Este tema me parece interesante y de mucha utilidad ya que es imposible encontrar una base de datos decente sobre paises / estados / ciudades y pueblos con los idiomas hablados por cada pais. Proponga crear otra tabla con una relacion N:M con el PAIS de idiomas hablados por cada pais.

tabla N:M

Cod_Idioma
Cod_Pais
Porcentaje

tabla idioma

COD_IDIOMA
Nombre_Idioma


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: Punisher.linux en 6 Abril 2010, 09:24 am
Este tema me parece interesante y de mucha utilidad ya que es imposible encontrar una base de datos decente sobre paises / estados / ciudades y pueblos con los idiomas hablados por cada pais. Proponga crear otra tabla con una relacion N:M con el PAIS, de idiomas hablados por cada pais.

tabla N:M

Cod_Idioma
Cod_Pais
Porcentaje

tabla idioma

COD_IDIOMA
Nombre_Idioma

deberiamos poner un listado de todos los paises y poner al lado quien se encarga de pasar ese pais a la base de datos y esta claro que debemos primero definir la estructura y que datos va a tener, como Codigo postal y cosas asi. SI la gente se compromete podeis contar conmigo y podriamos compartirla por internet para que haya algo decente. Lo siento por hacer doble post.

También podemos partir de esta base de datos ofrecida por Mysql:

http://downloads.mysql.com/docs/world.sql.gz

 que tal esta estructura ??

CREATE TABLE IDIOMAS (
  COD_IDIOMA       int(11),
  NOMBRE          char(20)   NOT NULL default '',
  OFICIAL          CHAR(1)    NOT NULL default 'N',
  PRIMARY KEY  (`COD_IDIOMA`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE CONTINENTES (
  COD_CONTINENTE       int(11),
  NOMBRE             char(20)   NOT NULL default '',
  POBLACION          int(11)    NOT NULL default '0',
  PRIMARY KEY  (`COD_CONTINENTE`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE PAISES (
  COD_PAIS       int(11),
  COD_CONTINENTE       int(11),
  NOMBRE       char(20)   NOT NULL default '',
  POBLACION    int(11)    NOT NULL default '0',
  PRIMARY KEY  (`COD_ESTADO`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE ESTADOS (
  COD_ESTADO    int(11),
  COD_PAIS       int(11),
  NOMBRE       char(20)   NOT NULL default '',
  POBLACION    int(11)    NOT NULL default '0',
  PRIMARY KEY  (`COD_ESTADO`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE CIUDADES (
  COD_CIUDAD    int(11),
  COD_ESTADO    int(11),
  NOMBRE       char(20)   NOT NULL default '',
  POBLACION    int(11)    NOT NULL default '0',
  PRIMARY KEY  (`COD_CIUDAD`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE IDIOMAS_HABLADOS_PAIS (
  COD_IDIOMA       int(11),
  COD_PAIS          int(11),
  PORCENTAJE       FLOAT(2,2)    NOT NULL default '0.0',
  PRIMARY KEY  (`COD_IDIOMA`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: O_G_T en 29 Abril 2010, 01:42 am
Hola seria bueno tener esta DB asi que hago mi aporte di con esta base que me ha sido de utilidad hace tiempo:

Todas las provincias departamentos y localidades de Argentina.

Los datos están separados en tres tablas [Provincia] -> [Departamento] -> [Localidad]

Cantidad de registros:
Provincias: 23
Departamentos: 574
Localidades: 5439

descargar
http://www.mediafire.com/?hmbjwyjmdgx

fuente http://kerzek.blogspot.com/

saluddos!!




Título: Re: Base de Datos de Ciudades del Mundo
Publicado por: ivanosito en 20 Marzo 2011, 09:56 am
Hola a todos!  :D

Acá les dejo unos scripts sql para MS-SQLServer 2008 Express, que generan las tablas:

- Pais
- PaisIdioma
- Ciudad

http://www.megaupload.com/?d=9G66BWJF (http://www.megaupload.com/?d=9G66BWJF)

Espero que les sirva!  ;-)