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 ;)
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 |