Re: UPdate en tabla con relacionamiento compartido

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To:
Cc: postgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: UPdate en tabla con relacionamiento compartido
Date: 2006-01-18 15:28:38
Message-ID: 43CE5EA6.7060408@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jean Marcel Droguett A. escribió:
> Mario Gonzalez wrote:
>
>> 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.
>>
>>
>
> Yo creo que es exacmente eso lo que se quiere con esta tabla relacionada
> así mismo, se quiere crear una jerarquía de empleados donde hay jefes en
> los distintos niveles del árbol
>
>

Yo lo estoy haciendo mediante un trigger que realiza basicamente los
siguientes controles:

Delete:
- si el nodo tiene hijos -> error

Update:
-si se ha cambiado la referencia al padre:
comprueba que existe
comprueba que no se referencia a si mismo
si el padre es null, comprueba que no existe ya un nodo raiz
- si se ha modificado el id de nodo -> error
(en este caso habria que modificar la referencia de sus hijos o hacer
que el campo idpadre una fk a idnodo con update cascade, si postgres lo
permite - por ver -)

Insert:
- comprobacion de validez del padre (igual que en update)

Para el soporte a este modelo he diseñado una serie de funciones que
delvuelven las rutas completas de un nodo, lista de un nodo con todos
sus hijos, nº de hijos que contiene, etc.

El esquema es perfectamente válido y proporciona mucha flexibilidad para
realizar organizaciones en arbol.

Saludos,
--
*****************************************
Oswaldo Hernández
oswaldo(at)soft-com(dot)es
*****************************************

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Carlos 2006-01-18 15:30:30 {Spam?} Re: Re: Re: funcion recursiva
Previous Message Felipe Amezquita 2006-01-18 15:26:59 Asi quedaron los archivos para escuchar el cliente de postgres