Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/09/2011, 00:25
Avatar de DrFaust
DrFaust
 
Fecha de Ingreso: septiembre-2011
Ubicación: Buenos Aires
Mensajes: 308
Antigüedad: 12 años, 8 meses
Puntos: 87
Elementos anidados: ¿cómo expresar su jerarquía?

Estoy armando una aplicación web en PHP y MySQL para organizar listas de tareas pendientes. Tengo una tabla MySQL donde cada fila representa una tarea.

Ahora bien, algunas tareas dependen de otras, que a su vez dependen de otras más. Por ejemplo, la tarea "hacer las compras" puede incluir las tareas "comprar comida" y "comprar artículos de limpieza", y cada una de ellas puede incluir sub-tareas como "comprar leche" y "comprar jabón".

Cada tarea (llamémosla "child") sólo puede depender de un único elemento superior (llamémoslo "parent"), así que estoy trabajando con un esquema de árbol común y corriente con una cantidad arbitraria de niveles.

Necesito saber cuántos children existen en total para un parent determinado, incluyendo elementos anidados. En otras palabras, la cantidad de sub-tareas que tiene una tarea determinada.

Mi primera opción fue averiguar en tiempo de ejecución cuántos children en total tiene el parent, utilizando bucles anidados, pero pienso que esto es muy poco eficiente.

Mi segunda opción fue mantener el mapa jerárquico de cada elemento en un campo de texto. Por ejemplo, si la tarea "comprar leche" depende de "comprar comida" (ID 99), y esta a su vez depende de "hacer las compras" (ID 77), que depende de "quehaceres importantes" (ID 55), el mapa jerárquico se ve así:

"55" "77" "99"

Así, puedo buscar fácilmente cuántos elementos incluyen la ID de un parent determinado en su mapa jerárquico.

Ahora bien, estoy seguro de que existen formas mil veces más eficientes de implementar algo así. No estoy seguro de qué tengo que buscar en Google para instruirme, así que les pido que me tiren un cable.

Desde ya, muchísimas gracias.