Re: UPdate en tabla con relacionamiento compartido

From: Carlos Alberto Márquez Rey <carlos_marquez_rey(at)yahoo(dot)com>
To: Mario Gonzalez <gonzalemario(at)gmail(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 20:02:00
Message-ID: 20060117200200.35788.qmail@web50801.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mario Gonzalez <gonzalemario(at)gmail(dot)com> escribió: On 17/01/06, Carlos Alberto Márquez Rey wrote:
>
> Mario Gonzalez 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.


Exactamente eso es lo que se decide cuando lo diseñas, si prefieres usar 2 tablas, una para jefes y otra para empleados, obviamente el jefe tambien debe estar en empleados o solo una y lo controlas con un trigger o con una funcion o de otras formas.

La tabla recursiva al menos para mi simplifica muchas veces un diseño.
Esa simplificación puede tener un costo pero repito eso para mi (puedo estar equivocado quizas) se decide en el diseño.

***********************************************************
Carlos Márquez
***********************************************************
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jean Marcel Droguett A. 2006-01-17 20:13:12 Re: UPdate en tabla con relacionamiento compartido
Previous Message Mario Gonzalez 2006-01-17 19:40:27 Re: UPdate en tabla con relacionamiento compartido