Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/09/2002, 05:24
shahm
 
Fecha de Ingreso: agosto-2001
Mensajes: 53
Antigüedad: 23 años, 7 meses
Puntos: 0
Re: Para expertos.

Numera el array. Me explico:
3 arrays, uno de destinos,otro de niveles, y uno último con el identificador del padre, asi se monta un arbol con arrays sin extructura de arbol.

Caso práctico:

A envia el doc a B,C y D

destinos(0) = B
nivel(0)=1
padre(0) = 0 '--> 0 = sin padre

destinos(1) = C
nivel(1)=1
padre(1) = 0

destinos(2) = D
nivel(2)=1
padre(2) = 0

Ahora C se lo envia a C1 y C2 , D se lo envia a D1 y D2 ...

destinos(3) = C1
nivel(3)= 2
padre(3) = 1

destinos(4) = C2
nivel(4)= 2
padre(4) = 1

destinos(5) = D1
nivel(5)=2
padre(5) = 2

destinos(6) = D2
nivel(6)= 2
padre(6) = 2

Así puedes almacenar todos los envios con solo 3 arrays, independientemente del número de niveles de envio. Y tienes todos los datos que necesitas, por ejemplo, la posición 6 del array corresponde a que el usuario D2 ha recivido el mensaje, es por la segunda persona que pasa gerarquicamente y los datos de quien se lo ha enviado est´n en la posición 2 de los arrays.

El array de niveles se puede calcular en tiempo de ejecucion, no es necesario, pero va bien tenerlo, sobre todo si realmente quieres montar un arbol.

Otro consejo es que esto no sean arrays sino una tabla temporal de la BBDD así no importa mucho cuanto crezca, no habrán problemas de memoria y podrás hacer busquedas dentro de ella, p.e.: Quiero todos los hijos de X, todos los nodos de tercer nivel,...

Espero haberte ayudado.