[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