Re: Herencia y claves foraneas

Lists: pgsql-es-ayuda
From: "Pablo E(dot) Siciliano" <psiciliano(at)puentenet(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Herencia y claves foraneas
Date: 2008-11-16 16:55:56
Message-ID: CBF11485BFB24C2FBA8BBFE880086481@PuenteHnos.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola a todas/os.

Estoy utilizando postgresql 8.1 para armar un datamart, y me encontré con algo curioso.
Tengo varios tipos de cuentas, con características distintas (Las cuentas pueden ser bursátiles o no, y a su vez cada clase de cuenta puede pertenecer o no a una persona jurídica).
Con eso en mente, armé un esquema basado en herencia como el que sigue:

cuenta --> cuenta_bursatil -->cuenta_bursatil_juridica
--> cuenta_prestamo -->cuenta_prestamo_juridica

El problema está en que cuando quiero representar los movimientos de las cuentas, a priori pueden venir de cualquier tipo de cuenta.
Ahora, cuando apunto la foreign key a cuenta, no la relaciona porque en realidad el registro se guarda en las herederas. Y no puedo apuntar la clave foranea a las herederas, porque pueden ser de más de un tipo.
A alguien se le ocurre alguna solución (¡¡Si es posible una que me permita dejar la herencia!!)

Como siempre, desde ya muchas gracias por su ayuda.
Pablo E. Siciliano.


From: ALFONSO REYES <alfonsoreyescruz(at)hotmail(dot)com>
To: <psiciliano(at)puentenet(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Herencia y claves foraneas
Date: 2008-11-17 02:21:44
Message-ID: BLU148-W15593A8F704FC8EB6245D3DF130@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda


Creo que se podria hacer creando una tabla recursiva como la del plan de cuentas es decir una tabla que tenga un forein key a si misma a una columa difrente... Una columna de esa tabla es el padre y a la que llega es el hijo ...

From: psiciliano(at)puentenet(dot)com
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: [pgsql-es-ayuda] Herencia y claves foraneas
Date: Sun, 16 Nov 2008 13:55:56 -0300

Hola a todas/os.

Estoy utilizando postgresql 8.1 para armar un
datamart, y me encontré con algo curioso.
Tengo varios tipos de cuentas, con características
distintas (Las cuentas pueden ser bursátiles o no, y a su vez cada clase de
cuenta puede pertenecer o no a una persona jurídica).
Con eso en mente, armé un esquema basado en
herencia como el que sigue:

cuenta --> cuenta_bursatil
-->cuenta_bursatil_juridica
-->
cuenta_prestamo -->cuenta_prestamo_juridica

El problema está en que cuando quiero representar
los movimientos de las cuentas, a priori pueden venir de cualquier tipo de
cuenta.
Ahora, cuando apunto la foreign key a cuenta, no la
relaciona porque en realidad el registro se guarda en las herederas. Y no puedo
apuntar la clave foranea a las herederas, porque pueden ser de más de un
tipo.
A alguien se le ocurre alguna solución (¡¡Si es
posible una que me permita dejar la herencia!!)

Como siempre, desde ya muchas gracias por su
ayuda.
Pablo E. Siciliano.


_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: "Pablo E(dot) Siciliano" <psiciliano(at)puentenet(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Herencia y claves foraneas
Date: 2008-11-17 12:12:08
Message-ID: 20081117121208.GD4291@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Pablo E. Siciliano escribió:

> Ahora, cuando apunto la foreign key a cuenta, no la relaciona porque
> en realidad el registro se guarda en las herederas. Y no puedo apuntar
> la clave foranea a las herederas, porque pueden ser de más de un tipo.
> A alguien se le ocurre alguna solución (¡¡Si es posible una que me
> permita dejar la herencia!!)

Te recomendaría no usar herencia, porque las FKs no funcionan (y hay
otras cosas que tampoco funcionan).

--
Alvaro Herrera Valdivia, Chile ICBM: S 39º 48' 55.3", W 73º 15' 24.7"
Voy a acabar con todos los humanos / con los humanos yo acabaré
voy a acabar con todos / con todos los humanos acabaré (Bender)


From: "Pablo E(dot) Siciliano" <psiciliano(at)puentenet(dot)com>
To: "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Herencia y claves foraneas
Date: 2008-11-17 16:36:20
Message-ID: F1A1D7C8B59F4BB0B6344EC47BB2E188@PuenteHnos.local
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Ok, gracias por la respuesta a ambos!
Voy a terminar aplanando las tablas en una con todos los atributos y
poniendo tipos, o poniendo los atributos extras en tablas que reemplacen a
las tablas hijas y haciendo una relación 1 <-->1.

Pregunta de ignorante, nomás. Hasta cierto punto parece razonable que no
funcionen las fkeys en esta situación (Al fin y al cabo los registros están
en realidad en otra tabla ...). ¿Eso es particular del tipo de
implementación que hace postgresql de la herencia, o funciona así también en
general en bases de datos objeto relacionales?

Saludos,
Pablo.

----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)alvh(dot)no-ip(dot)org>
To: "Pablo E. Siciliano" <psiciliano(at)puentenet(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Monday, November 17, 2008 9:12 AM
Subject: Re: [pgsql-es-ayuda] Herencia y claves foraneas

> Pablo E. Siciliano escribió:
>
>> Ahora, cuando apunto la foreign key a cuenta, no la relaciona porque
>> en realidad el registro se guarda en las herederas. Y no puedo apuntar
>> la clave foranea a las herederas, porque pueden ser de más de un tipo.
>> A alguien se le ocurre alguna solución (¡¡Si es posible una que me
>> permita dejar la herencia!!)
>
> Te recomendaría no usar herencia, porque las FKs no funcionan (y hay
> otras cosas que tampoco funcionan).
>
> --
> Alvaro Herrera Valdivia, Chile ICBM: S 39º 48' 55.3", W 73º 15'
> 24.7"
> Voy a acabar con todos los humanos / con los humanos yo acabaré
> voy a acabar con todos / con todos los humanos acabaré (Bender)
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>


From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: "Pablo E(dot) Siciliano" <psiciliano(at)puentenet(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Herencia y claves foraneas
Date: 2008-11-17 18:28:45
Message-ID: 20081117182845.GI4291@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Pablo E. Siciliano escribió:

> Pregunta de ignorante, nomás. Hasta cierto punto parece razonable que no
> funcionen las fkeys en esta situación (Al fin y al cabo los registros
> están en realidad en otra tabla ...). ¿Eso es particular del tipo de
> implementación que hace postgresql de la herencia, o funciona así también
> en general en bases de datos objeto relacionales?

Es una deficiencia en la implementación de Postgres.

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"The ability to monopolize a planet is insignificant
next to the power of the source"