[Pgsql-ayuda] Herencia

Roberto Andrade Fonseca randrade@abl.com.mx
08 Jan 2004 17:55:28 -0600


Hola:

Un amigo, que por razones curiosas no puede postear a la lista, me pidi=F3 =
que enviara este mensaje.

Por favor respondan a la lista, =E9l si puede leerlos:

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

Tengo la siguiente situaci=F3n:

Una clase 'contacto', que guarda los detalles comunes a cualquier
contacto, y varias clases derivadas, como 'abogado', que guardan los
detalles especificos a cada una. Estas clases se van a hacer
persistentes en PostgreSQL.

Tengo dos opciones para implementar esto:

1) Usar la herencia de Pg.

 create table contacto(nombre text, direccion text);

 create table abogado(casos int) inherits (contacto);

Ventajas:=20
- Es f=E1cil de usar desde el c=F3digo. Hago inserts en abogado y
se ven en contacto.
- Tengo una herramienta (Pymerase http://pymerase.sf.net) que genera
este esquema y el c=F3digo python para el acceso a la base de forma
autom=E1tica desde el diagrama UML.

2) Usar una relaci=F3n 1-1 y crear vistas y reglas:

 create table contacto(nombre text, direccion text, id int);

 create table abogado_detalle(id int references(contacto), casos int);

 create view abogado as select c.nombre, c.direccion, a.casos from
contacto c, abogado a where c.id=3Da.id

y alguna regla  para los inserts y los updates. (=BFSe nota que no me se la
sintaxis para las vistas?)

Ventajas:
- Si no me equivoco en la vista y las reglas, es t=E1n f=E1cil de usar
como el anterior.
- Es (=BFm=E1s?) estandar.=20


Lo malo de 2) es que o pierdo el uso de la herramienta, o tengo que
modificarla. Lo malo de 1) es que pierdo portabilidad. Estoy tentado a
irme por 1), pero necesito saber si hay alguna otra cosa que tomar en cuent=
a.


--=20
Rodrigo Gallardo
PGP Key ID:  ADC9BC28=20
Fingerprint: 7C81 E60C 442E 8FBC D975  2F49 0199 8318 ADC9 BC28
-------------------------- Fin del mensaje en cuesti=F3n --------------
--=20
Saludos

Roberto Andrade Fonseca
Microsoft Certified Solitaire Player