Foros del Web » Programando para Internet » PHP »

Modelo para manejar categorias y subcategorias de documentos?

Estas en el tema de Modelo para manejar categorias y subcategorias de documentos? en el foro de PHP en Foros del Web. Amigos, Estoy armando una base de datos (es decir, un directorio) de documentos ambientales. La idea es que cada documento pertenezca a una categoría padre ...
  #1 (permalink)  
Antiguo 29/04/2006, 07:19
 
Fecha de Ingreso: marzo-2005
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
Pregunta Modelo para manejar categorias y subcategorias de documentos?

Amigos,

Estoy armando una base de datos (es decir, un directorio) de documentos ambientales. La idea es que cada documento pertenezca a una categoría padre y además, a alguna categoría hija. Por ejemplo, el archivo doc112-spa.doc podría pertenecer a "Recursos Naturales Afectados" -> "Suelo" (subcategoria) -> "Polucion de Suelos" (en esta subcategoria radicaría el documento, las categorias anteriores solo servirían para clasificar al documento).

Comparando, sería algo asi como el directorio de Google, en donde en la pagina principal tienen varias categorias padre y van navegando las subcategorias hasta encontrar el enlace adecuado (en mi caso, el documento adecuado).

Hice un par de scripts en PHP que pueden manejar hasta 2 subcategorias (es decir, 1 categoria y 2 subcategorias), pero es MUY malo. Demasiado. Esta parcheado por todos lados por el apuro en terminar el trabajo. Ahora que tengo unas horas, me gustaría saber que patron de diseño puedo usar para moldear un directorio con N subcategorias.

Mi base de datos de ejemplo tiene 3 tablas (ademas de la que maneja los documentos, y los formatos de cada uno de ellos): "documentos_categorias" (con las categorias padre), "documentos_subcategorias" (con las categorias hijas de la categoria padre, linkeada por la clave id_categoria) y "documentos_sub_subcategorias" (las categorias hijas de "subcategorias", linkeadas por id_subcategoria).

Busque en Google y no encontré mucho ... sé que es medio complicado y tal vez la solución sea dejarlo como está ... pero me intriga saber si hay algún patron de software ya armado para estos casos.

Gracias a todos
  #2 (permalink)  
Antiguo 29/04/2006, 11:42
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 5 meses
Puntos: 2
Rodrigo:

Podrias eliminar esas tablas y crear estas nuevas. La primera es para relacionar los documentos con las categorias, para que un documento pueda tener varias categorias.

documentos_categorias_rel
--------------------------
id_documento (int) key
id_categoria (int) key

Y otra en la que establecerás la estructura de categorias:

documentos_categorias
----------------------
id_categoria (int) auto key
id_categoria_padre (int) "0" por defecto
descrip (text)

Cuando una categoria tiene como id_categoria_padre igual a cero, se trata de una categoria principal. Luego, las subcategorias iran relacionandose a través de este campo.

Decime si entendes, sino te pongo algunos ejemplos y consultas.

Saludos!
__________________
Sergio
  #3 (permalink)  
Antiguo 29/04/2006, 17:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 9
Antigüedad: 19 años, 8 meses
Puntos: 0
Sergio,

Exactamente. ESE es el modelo correcto :)

De hecho, estuve viendo como lo solucionan en Wordpress y es idéntico a tu solución.

No sabés como se me facilitan las cosas ahora :)

Gracias!
  #4 (permalink)  
Antiguo 29/04/2006, 20:43
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 19 años, 4 meses
Puntos: 6
Buenas, solo queria decir que me sirvio mucho este thread, Gracias Sergio!

Y tambien me surgio una duda, muy lindo como relacionar las categorias con muchas categorias y subsub categorias... pero por ejemplo si tengo esto:

-Pantalones
---Cortos
---Largos
-----de jean
-----de otra cosa
-Remeras
---hombre
---mujer


Pantalones tiene 2 subcategorias, Cortos y Largos, y Largos a su vez tiene 2 categorias mas.(de jean o ...etc). Cual seria el mecanismo(me refiero a una herramienta para ABM) mas simple para poder situar un producto por ejemplo en la categoria "de otra cosa"?

Con menus desplegables para ir eligiendo cada categoria? :S en el ejemplo serian 3 menus :S o tendria que ser algo mas complejo, no?


Gracias nuevamente!!
  #5 (permalink)  
Antiguo 30/04/2006, 01:50
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
Para el modelo de rgali se me haría un poquito más formal que lo llevaras con una DB que te respetara la estructura del modelo, por ejemplo en MySQL con tablas InnoDB.

Así, puedes tomar desde la misma base de datos decisiones imporantísimas que garantizarían que tus datos no se corrompieran.


(perdón por el pulso de maraquero)


Por ejemplo, si alguna vez actualizaras una categoría, podrías decidir que tus subcategorías se actualizaran.

O si quisieras borrar una categoría, pero ésta tuviera subcategorías, que no te lo permita.

O bien, que si quieres borrar una categoría, que se borren todas sus subcategorías para que no queden hijos huérfanos.

Regresando a lo del diagrama, resulta fácil ver cómo esa subcategoría se puede transformar, a su vez, en una categoría para sus propias subcategorías.

Así podrías tener la cantidad de subcategorías que tú desees.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #6 (permalink)  
Antiguo 30/04/2006, 13:27
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 5 meses
Puntos: 2
Jaja, uamistad, no estas fumando mucho?

Fridureiks:

Tenemos varias formas de hacer un "seleccionador" de categorias. Una podria ser un solo select con las subcategorias indentadas (como el select "Ir a" de este foro que esta en la parte inferior de la página).

Otra podria ser varios selects que se vayan generando dinamicamente (mejor si es mediante JavaScript, aunque puede ser realizado integramente en PHP) a partir de la selección de una categoría padre.

Y asi podriamos seguir buscando variantes, como por ejemplo, con un popup utilizando AJAX podemos crear nuestro propio control, etc.

Saludos!
__________________
Sergio
  #7 (permalink)  
Antiguo 30/04/2006, 13:30
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
Jajaja, esta hierba que no puedo dejar. =)
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 30/04/2006, 14:54
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 19 años, 4 meses
Puntos: 6
Ahhh que Crack Sergio, muchas gracias

Saludos!
__________________
Federico.

Mi página: www.jourmoly.com.ar
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 13:14.