Re: RE: [pgsql-es-ayuda] Diseño con herencia de tablas

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Xavier Vidal <xvpxvp(at)menta(dot)net>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: RE: [pgsql-es-ayuda] Diseño con herencia de tablas
Date: 2005-05-23 17:54:51
Message-ID: c2d9e70e0505231054101c5f7d@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 5/23/05, Xavier Vidal <xvpxvp(at)menta(dot)net> wrote:
> Buenas
>
> Me voy a explicar mejor con un ejemplo
>
> Tengo una tabla que la llamo clientes, de la cual hago heredar dos tablas :
> Personas y Empresas
>
> Los campos quedan así :
>
> Clientes (id, nombre, direccion, e-mail,...)
> Personas (fecha_nacimiento, cargo,...)
> Empresas (capital_social, sector,...)
>
> Ahora, hay una tabla llamada Contratos que tiene una relación n a 1 respecto
> a clientes.
>
> Contratos (idcontrato, idcliente, fecha_contrato) donde idcliente es foreign
> key a clientes
>
> Este modelo de datos representa a los contratos que tienen los clientes, ya
> sean estos personas o empresas, de ahí que se cree la herencia de tablas.
>
>
> Clientes -1------n- Contratos
> |
> |
> ----------------
> | |
> Personas Empresas
>
>
> Bien, ahora veamos lo que tienen las tablas:
>
> Personas tiene los registros con id 4,6,8
> Empresas tiene los registros con id 1,2,3,5,7
>
> Ahora si creo un contrato con estos valores (3, 2,10/10/2004) , PostgreSQL
> se queja ya que no encuentra a ningún registro de la tabla Clientes con el
> id=2, sin embargo Empresas aunque pertenece a Clientes, si que tiene el id
> 2, pero no lo sabe relacionar!!!
>
> Lo que no entiendo es que si hago Select * from clientes, aparecen todos los
> registros de clientes + personas + empresas
>
> (para que solo salgan los de clientes haria Select * from only clientes).
>
> Se me había ocurrido hacer una vista , pero entonces, se pierde la gracia de
> la herencia, no?
>
Porque no a~ades un campo a la tabla clientes que indique si el
cliente es persona o empresa y asi te evitas la herencia (que como ya
te habras dado cuenta es aun muy joven y falta de gracia en postgres)

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jessica Garcia Alvarez 2005-05-23 18:05:30 ayuda!!!
Previous Message rogoh 2005-05-23 17:27:48 Llamadas a funciones en C desde postgres