Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿estructura jerárquica?

Estas en el tema de ¿estructura jerárquica? en el foro de Mysql en Foros del Web. amigos, me ha surgido una duda para la estructuración de unas tablas de una base. La información se ordena en distintos niveles (serán 3); el ...
  #1 (permalink)  
Antiguo 10/10/2008, 02:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
¿estructura jerárquica?

amigos,

me ha surgido una duda para la estructuración de unas tablas de una base. La información se ordena en distintos niveles (serán 3); el primero es el general, luego dependiendo de ese puede haber uno, dos o más, y un tercer nivel en el que los registros estarán relacionados con los del segundo nivel. Habrá necesariamente datos en el nivel 1 y en el 3, es decir, cuando hay un nivel uno, siempre hay datos en el nivel 3 de ese nivel 1, sea a través o no del nivel dos. Me explicaré: podrían faltar los registros del nivel 2 que estuvieran relacionados con los del nivel uno, pero siempre habría datos en el nivel 3. Mi pregunta es cómo solucionar mejor esta situación
1-----------------------------------1.1---------------------------------------------1.1.1
ejemplo1--------------------subejemplo1de1-------------------------- subsubejemplo1de1
--------------------------------------------------------------------subsubejemplo2de1

---------------------------subejemplo2de1---------------------------subsubjemeplo1de2

ejemplo2-------------------subejemplo1de2---------------------------subsubejemplo1de1

ejemplo3 ------------------(subjemplo1de3) ------------------------subsubejemplo1de1

un ejemplo práctico
herramientas-----------------------tipo--------------------------------función
martillo------------------------------metálico---------------------------clavar
----------------------------------------------------------------------------desclavar
----------------------------------------goma-----------------------------nivelar
alicates-------------------------------------------------------------------extraer

Es inventado y poco coherente, pero tal vez os hagáis una idea. ¿Qué tipo de alicates debería poner, si no existe tipo? Tal vez alicates, o simplemente un tipo "sin tipo" que permitiría la relación con la tabla tercera y además facilitaría la programación, por ejemplo para hacer selectores dependientes y que no apareciera ese tipo intermedio...


Como veis en los primeros datos, el principal problema lo tengo cuando falta el nivel 2, que aparece como 1.1. Concretamente es el caso del ejemplo3, que no tiene un subjemplo1de3 (aparece en rojo). Yo he pensado que poniendo como dato de ese nivel 2 ejemplo3 o quizás mejor sinnivel2, resolveré el problema. De ese modo tendré un id con el que relacionar y mediante programación soslayar la presencia del dato, puesto que el criterio de nivel1=nivel2 o nivel2="sinnivel2" me puede servir para distinguir. No obstante, no sé si esto es lo mejor desde el punto de vista técnico, y me gustaría escuchar vuestras opiniones.
Me ha parecido leer algo sobre relaciones jerárquicas, pero no sé si será el caso para esto... (no las he usado nunca)

Gracias de antemano

Última edición por jurena; 10/10/2008 a las 03:33
  #2 (permalink)  
Antiguo 10/10/2008, 10:12
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: ¿estructura jerárquica?

Hola Jurena
Creo que tendrías que definir bien en la clasificación de los campos antes de decidir que modelo usar.
Ejemplo
TIPO que tipos guarda? tipos por composición(madera, metal plastico, etc) , tipos por modelo (punta, doble cabeza, etc)

Funcion una herramienta puede tener muchas funciones así que puede estar en otra tabla.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 10/10/2008, 11:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿estructura jerárquica?

Genetix,

Aunque falta algo por revisar, creo que pronto los tendremos bien definidos, y no se trata de herramientas (puse el ejemplo porque el mío es algo más técnico: concretamente, efectos de plantas según los médicos antiguos). Creo que estarán definidos de tal modo que no habrá interferencias entre los datos de los niveles. Echaré un vistazo a lo que me dices y si creo necesario volver a postear aquí, lo haré; pero sí me gustaría saber tu opinión sobre el modo en que trato de resolverlo mediante un "sinnivel2" intermedio. ¿Es muy descabellado, Genetix?

Última edición por jurena; 10/10/2008 a las 11:43
  #4 (permalink)  
Antiguo 12/10/2008, 12:14
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: ¿estructura jerárquica?

Hola Jurena

Generalmente se usa el modelo jerárquico cuando tus datos van a crecer indeterminadamente, en tu caso, ¿no se como será?

Ahora todo nodo tiene un padre, osea que no puedes dejar nodos en blanco. dejarías huérfanos!

Otra cosa que estoy viendo que que deseas que en cada nivel de tu modelo jerárquico este catalogado o categorizado(¿o me equivoco?) y eso no siempre se pude cumplir, puede haber nodos que tengan 10 niveles otros 5, algunos 2, etc, cada uno se va subdividiendo independiente del otro.

Talvéz si nos permites conocer un poco mas tu datos se puede definir mejor.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #5 (permalink)  
Antiguo 13/10/2008, 04:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿estructura jerárquica?

Un ejemplo concreto
I Afecciones generales
............1.1 contra desvanecimientos, vértigos
----------------------------------------------------------------- tronco de balsamero
------------------------------------------------------------------pepino
------------------------------------------------------------------poleo
------------------------------------------------------------------hinojo
..............1.2 cambio del estado-----------------------------------vino
..............1.3 contra fatiga
......................1.3.1 contra consunción, agotamiento------------------------vino de castañuela
......................1.3.2 combaten desnutrición-------------------------------cenizas de sarmiento
......................1.3.3 Contra la fatiga por práctica deportiva--------------------------nueza


La idea es que puedan buscarse todos los de afecciones generales, o los contra fatiga y que salga los tres (vino de castañuela, cenizas de sarmiento, nueza).
Como observaréis, hay tres niveles y lo que yo propongo hacer es 3 tablas relacionadas, pero mi problema viene cuando como ocurre en 1.1 y 1.2 no hay datos específicos del 3 nivel para relacionar con vino o con hinojo, por ej. Para ese caso he resuelto así:
Idnivel1-Nivel1;Idnivel2-Nivel2-refidnivel1;Idnivel3-nivel3-refidnivel2;idplanta-planta-refidnivel3
1-afecciones generales;4-contra desvanecimientos, vértigo-1; 18-contra desvanecimientos, vértigo-4;14-hinojo-18

¿Es una locura lo que estoy haciendo?
  #6 (permalink)  
Antiguo 13/10/2008, 09:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 3
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: ¿estructura jerárquica?

Revise los temas del foro y en la respuesta consegui este link
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
y además consegui este otro
http://66.196.80.202/babelfish/translate_url_content?.intl=es&lp=en_es&trurl=http %3a%2f%2fwww.sitepoint.com%2farticle%2fhierarchica l-data-database%2f3
Creo que servira de ayuda para lo que buscamos. Al menos a mi me sirve y creo que en tu caso tambien te servira

Última edición por AidaRios; 13/10/2008 a las 15:00 Razón: consegui una respuesta por otro tema aca
  #7 (permalink)  
Antiguo 13/10/2008, 22:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿estructura jerárquica?

Gracias, AidaRios,

Creo que la solución jerárquica anidada resuelve en parte nuestros problemas (al menos los míos, pues tengo bastante cerrada la estructura jerárquica). Conocía ese artículo porque Genetix lo ha recomendado en otros posts (entonces no presté la debida atención). Veré el segundo, cuya dirección antes de ser traducida es, por lo que he visto:
http://www.sitepoint.com/article/hie...data-database/

No obstante, el problema es que si deseas añadir ramas al árbol, el modelo anidado es mucho más difícil de manejar. Tanto en eso como en el modo intuitivo en que se introducen los datos, el modelo Adjacency List parece ser mejor, aunque encierra algunos inconvenientes: recursividad en las consultas, etc.

Gracias, AidaRios, y de nuevo a ti también, Genetix.

Última edición por jurena; 14/10/2008 a las 06:31
  #8 (permalink)  
Antiguo 14/10/2008, 09:53
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: ¿estructura jerárquica?

Hola Jurena
Por lo que que veo puedes separar en 2 tablas con una relación de muchos a muchos
- Una tabla Afecciones Generales que tendrá el modelo Jerárquico

- Otra tabla tratamiento (por llamarlo de alguna manera) donde se encuentren (tronco de balsamero, pepino, vino, etc) por el motivo de que una "tratamiento" puede servir para otra enfermedad.

- Y la tercera tabla que contendrá el ID de la afección y el ID de tratamiento y sobre esa tabla tienes que hacer la consulta


Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #9 (permalink)  
Antiguo 14/10/2008, 11:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ¿estructura jerárquica?

Estoy contigo, Genetix, esa es la mejor solución. Mi problema ahora es qué modelo jerárquico emplear, pues la estructura anidada es más difícil de manejar a la hora de ampliar, pero esto ya es otro tema... Gracias y saludos.
  #10 (permalink)  
Antiguo 14/10/2008, 11:42
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: ¿estructura jerárquica?

El modelo anidando es mucho mejor
Depende del lenguaje que estas usando, en php hay scripts que implementan dicha funcionalidad imagino que en otros lenguajes también lo hay.

Saludos
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:51.