Tablas para ubicación geográfica

From: Jorge Pérez <jlperez(at)epm(dot)net(dot)co>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Tablas para ubicación geográfica
Date: 2005-01-23 16:26:04
Message-ID: 41F3D01C.301@epm.net.co
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Tengo el siguiente problema que no he podido resolver; necesito utilizar
tres tablas en mi base de datos Países, Departamentos, Municipios. Las
siguientes son las estructuras que creo debería utilizar:

- Paises: Codigo Char(2), Nombre Char(35) -Para los códigos de país
estoy utilizando los códigos ISO (CO-Colombia, etc.)
- Departamentos: Pais Char(2), Codigo Char(2), Nombre Char(35)
- Municipios: Pais Char(2), Departamento Char(2), Codigo Char(5), Nombre
Char(35)

- Para la tabla Departamentos no tengo ningún problema para establecer
integridad referencial con la tabla Paises, esto es fácil con un Foreign
Key desde Departamentos.Pais -> Paises.Codigo
- En la tabla Departamentos puedo crear un índice único utilizando los
campos Pais + Codigo, de modo que si varios países tienen el mismo
código para un departamento o estado, no existirá duplicidad en la llave.
- El problema lo tengo con la integridad referencial de la tabla
Municipios. En la tabla Departamentos el índice principal lo forman dos
campos, de modo que no existe un campo que sea un identificador único
para utilizarlo como referencia para crear integridad referencial con la
tabla Municipios.

No tengo claro si en Postgres con foreign keys es posible crear la
integridad referencial necesaria en caso de que por ejemplo en la tabla
Países se modifique el campo Código o en la tabla Departamentos se
modifique el campo código, para que la tabla Municipios se actualice
adecuadamente Este problema se puede volver mucho mas complejo si se
agrega por ejemplo la variable Barrio (un sector de un Municipio) con el
fin de lograr datos más atomizados sobre la ubicación de los clientes y
poder por ejemplo establecer los clientes de un sector para planificar
las visitas de los vendedores.

Cualquier sugerencia sobre como resolver este problema será bienvenida.
Todavía estoy a tiempo inclusive de modificar las estructuras de las
tablas, puesto que apenas estamos desarrollando la base de datos. No
puedo utilizar valores generados desde funciones, puesto que quiero
mantener compatibilidad con los códigos que utilice cada país para
definir las variables Departamento - Municipio (normalización de datos).
En mi caso, por ejemplo para Colombia un registro en la tabla Municipios
contendría los siguientes valores:

CO|91|91001|Leticia - donde 91 es Amazonas (Departamento/Estado) y 91001
es el municipio de Leticia. Estos datos los he tomado de la tabla
Divipola que publica la DIAN (Dirección de Impuestos y Aduanas
Nacionales de Colombia) y me imagino que para los demás países esto
funciona de forma similar.

Cordial saludo,

Jorge Pérez

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2005-01-23 17:19:49 Re: Archivos anteriores de la lista
Previous Message Alvaro Herrera 2005-01-23 14:51:12 Re: Rescatar exception de base de datos