Re: [pgsql-es-ayuda] Consulta sobre cómo armar estructura de tablas

From: Damián Culotta <dculotta(at)fibertel(dot)com(dot)ar>
To: "Ayuda PostgreSql" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Consulta sobre cómo armar estructura de tablas
Date: 2006-02-09 02:30:49
Message-ID: 00b001c62d20$d75a71b0$6501a8c0@workstation
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenas noches lista, ahora si se abrió el debate (han llegado varias opciones y opiniones).

Respondo a algunas cosas que se han preguntado y comento cómo, hasta antes de las varias respuestas, estaba armandolo.

Alvaro:

En cuanto a para qué neceisto armarlas y qué información voy a necesitar representar, te cuento. Esta base (o tablas), servirían para, en primer término, armar los combos del formulario con la data que corresponde.
Tengo un formulario donde debo indicar en qué localidad se encuentra un objeto, por lo cual, primero les pido que indiquen la provincia (el objeto puede estar en cualquier provincia, en cualquier localidad del país).
Una vez indicada la provincia, se seleccionará departamento (si corresponde), esto trae la lista de municipios, y al elegir el municipio, la lista de localdiades posibles para las selecciones anterior.

Para las consultas propiamente dichas, tengo dos casos inicialmente. La consulta de detalle dle objeto, que al ver las especificaciones, me dirá que está en tal localidad, y vía una Vista (etoy suponiendo en voz alta, no lo tengo armado todavía), indico en la aplicación que ese objeto está en tal provincia, tal municipio, etc.
Por supuesto, la consulta permite parametrizar también pidiendo los objetos que se encuentren en algún lugar específico.

Por otra parte, habrían pequeños cuadros estadísticos. Por ejemplo:
- Hay tantos objetos de X tipos en esta provincia.
- Hay tantos objetos en esta localidad, etc etc.

Esas serían, inicialmente las consultas.
Usanado el modelo recursivo (y desconozco aún los costos de rendimiento), eso ya lo tendría resuelto.

----------------------------------------------------------------------------------------------------

Angel:

Te soy sincero, había visto pro arriba el tema de herencia, pero es más que válida la recomendación, ya estoy leyendo.
Y es cierto, el artículo de Varlena está bastante claro.

-----------------------------------------------------------------------------------------------------

Gabriel:

Ahora sigue el modelo con el que estoy probando.
Un sólo detalle, pasá el mail a la lista. Entiendo que el mail fue de consulta directa, pero bueno, a la lista de todas formas. ;-)

-----------------------------------------------------------------------------------------------------

Bueno, la estructura de tablas que tengo ahora es la siguiente:

La tabla de tipos sería para saber si es un país, provincia, departamento, municipio, localidad o barrio.

SECUENCIA PARA LA TABLA TIPOS
create sequence "seq-tipos-id" increment 1 minvalue 1 maxvalue 9223372036854775807 start 1 cache 1;

TABLA TIPOS
create table btipos (
id int4 not null default nextval('"seq-tipos-id"'),
tipo varchar(100) not null,
constraint "pk-tipos-id" primary key (id)
)
without oids;

La tabla localidades contendría los nombres y demás especificaciones de todos los luagres, ya sean provincias, municipios o localidades. (El nombre de la tabla es discutible, pero es un detalle secundario ahora).

SECUENCIA PARA LA TABLA LOCALIDADES
create sequence "seq-localidades-id" increment 1 minvalue 1 maxvalue 9223372036854775807 start 1 cache 1;

TABLA LOCALIDADES
create table blocalidades (
id int4 not null default nextval('"seq-localidades-id"'),
raiz int4 not null default 0,
descripcion varchar(250) not null,
tipo int4 not null,
constraint "pk-localidades-id" primary key (id),
constraint "fx-localidades-tipo" foreign key (tipo)
references tipos (id) match simple
on update cascade on delete restrict)
without oids;

La tabla de capitales, serviría para registrar, qué localidad es capital de qué cosa, ya sea un municipio o provincia o cualquier otra jerarquía.

TABLA CAPITALES
create table capitales (
id int4 not null,
capital int4 not null,
constraint "pk-capitales-id-capital" primary key (id, capital),
constraint "fx-capitales-capital" foreign key (capital) references localidades (id) match simple on update cascade on delete restrict,
constraint "fx-capitales-id" foreign key (id) references localidades (id) match simple on update cascade on delete restrict)
without oids;

En cuanto a la nomencaltura, y bueno... cada loco con su tema.
SI hay algun error técnico sobre la estrucutra, cualquier corrección será bienvenida.

Como les decía, con este modelo, y con una función recursiva en Php, logro armar el árbol de arriba hacia abajo o de abajo hacia arriba sin problemas. Es decir, parandome en una provincia llego hasta la localidad sin problemas armando el árbol; y pro el otro lado, parándome en una localidad, llego hasta la provincia, pasando por sus intermedios. (Esto para la representación en la aplicación).

Hasta acá llegué, funciona, pero bueno, entre las varias recomendaciones, y que por suerte han sido varias y distintas, ahora la duda sería´saber cuál se entiende como la más óptima.

Gracias.

Damián

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2006-02-09 05:10:51 Re: Consulta sobre obtención nombre campos de una tabla
Previous Message Jaime Casanova 2006-02-09 02:07:30 Re: Prueba de correo