Re: UPdate en tabla con relacionamiento compartido

From: Mario Gonzalez <gonzalemario(at)gmail(dot)com>
To: Carlos Alberto Márquez Rey <carlos_marquez_rey(at)yahoo(dot)com>
Cc: Yazmina Gajardo <yamapy83(at)gmail(dot)com>, postgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: UPdate en tabla con relacionamiento compartido
Date: 2006-01-17 19:40:27
Message-ID: 2065a6cf0601171140r3d54d89bw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 17/01/06, Carlos Alberto Márquez Rey <carlos_marquez_rey(at)yahoo(dot)com> wrote:
>
> Mario Gonzalez <gonzalemario(at)gmail(dot)com> escribió:
> On 17/01/06, Yazmina Gajardo wrote:
> >
> > hola Lista. Tanto tiempo sin escribir!!!
> > Lo que pasa es que tengo una tabla (Empleado) en donde hay una relacion
> > recursiva.
> > Representa a los empleados, y a los jefes.
> >
> > Empleado --tiene--Empleado(jefe)
> >
> > Lo que pasa es que cuando intento actualizar los campos de una tupla, al
> > ejcutar update, me cambia la info para todas las tuplas que tengan
> relacion
> > con la anterior. Es decir si tengo un empleado(jefe) con id=5, para todas
> > las tuplas donde haya como jefe id=5 , les cambia la info.(los valores de
> > sus campos).
> >
> Se que en Ingenieria de Software enseñan ese tipo de cosas, no se
> que opinara el resto de la lista pero a mi manera de ver es algo
> engorrosa y no se que tan valiosa pueda ser tener una sola tabla para
> almacenar diferentes tipos de usuarios, quiza estoy mal. Con lo que
> mencionas anteriormente, ¿como sabes si un usuario es jefe o empleado
> sin poder consultar un atributo diferente de la tabla?? ademas, ¿un
> usuario puede ser jefe y empleado a la vez? quiza la solucion IMHO sea
> revisar el modelo o la estructura de la tabla que tengas
>
> > Le pido a quien tenga info de UPdate en tabla con relacionamiento
> > compartido, me oriente.
> >
> > De antemano, muxas Gracias :)
> >
>
> Ummmmmmmm
>
> En una tabla recursiva como la que dices seria algo asi:
>
> id Nombre idSuperior
> 1 Jefe 1
> 2 Jefe 2
> 3 Nombre 1 1
> 4 Nombre 2 1
> 5 Nombre 3 2
> 6 Nombre 4 2
>
> si tu haces un update por el idsuperior, obviamente va a cambiar datos a 2
> registros (caso del ejemplo)
> En todo caso el update que estas ejecutando para poder decirte algo mas.
>
> En esta tabla que muestro los 6 registros representan a empleados pero solo
> 2 de ellos son jefes, y ademas se indica cuales son sus subordinados, todo
> en una sola entidad
>
> El modelo y la estructura no creo que este mal solo por el hecho de usar una
> tabla recursiva
>
Creo que lo malo de hacer eso es que no se podria garantizar una
integridad relacional, me tratare de explicar.....

Si tienes esto en tu DB

id Nombre idSuperior
1 Jefe 1
3 Nombre 1 1

como podrias impedir una insercion como esta (suponiendo que la
tabla se llama users)

INSERT INTO users(nombre, idSuperior) VALUES ('Nombre3', 3)

y el resultado seria que el jefe de 'Nombre3' es un empleado ('Nombre1')!!

id Nombre idSuperior
1 Jefe 1
3 Nombre 1 1
5 Nombre 3 3

podrias hacer un parche con triggers o programando una funcion que
te cubra eso pero quizas teniendo otro tipo de modelo pudiera
solucionarse.

>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos Alberto Márquez Rey 2006-01-17 20:02:00 Re: UPdate en tabla con relacionamiento compartido
Previous Message Carlos Alberto Márquez Rey 2006-01-17 19:07:47 Re: UPdate en tabla con relacionamiento compartido