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