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

Teórica sobre catálogo

Estas en el tema de Teórica sobre catálogo en el foro de Bases de Datos General en Foros del Web. Hola estoy creando un catálogo de productos y quiero que contemple múltiples subcategorías, la parte de la base de datos la tengo más o menos ...
  #1 (permalink)  
Antiguo 01/10/2004, 11:44
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 21 años
Puntos: 0
Pregunta Teórica sobre catálogo

Hola estoy creando un catálogo de productos y quiero que contemple múltiples subcategorías, la parte de la base de datos la tengo más o menos clara pero no se como "atacarla" desde PHP con coherencia sobre todo en la parte de los subniveles dentro de cada categoría, me explico:

La estructura de la BD sería:
idcategoría (1,2,3...) descripcion (bla,bla,bla) nivel (0,1,2) predecesor (1,2,3 o el que sea)

Por ejemplo os pego como es la tabla (en html) de la base:

Por ejemplo Comedia contiene a C.Romántica y C.Moderna y la categoría drama contiene el subnivel neoclásicos:

idcategoria--descripc----nivel--predecesor
1-----------Comedia------1-----0
2-----------Drama--------2-----0
3-----------C.Romántica--3-----1
4-----------C.Moderna------4-----1
5-----------Neoclásicos---5-----2

¿Qué me recomendáis para poderle dar al usuario la capacidad de poder decidirr cuantos subniveles tendrá el catálogo y que no haya ningún problema después si quiere agregar/quitar múltiples subniveles y sub-sub-niveles?

Gracias.
  #2 (permalink)  
Antiguo 01/10/2004, 12:04
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Realmente pasar una estructura jerarquica como la que planteas a una estructura tabular (base de datos relacional) da pie a estos problemas. En http://www.sitepoint.com/article/hie...-data-database dan otra tecnica para almacenar la jerarquia. Simplemente es presdindir del nivel, y crear una serie de consultas que permiten una rapida localizacion de los antecesores del nodo. No habria limite de niveles, la estructura se recorre sencillamente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 01/10/2004, 12:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Esa teoría más bien es de modelo de datos en general más que de PHP.

Hay várias técnicas al respecto .. a mi la que más me resulta comprender y efectiva para un numero de sub-niveles no muy grande es:

idcategoria--descripc----predecesor
1-----------Comedia------0
2-----------Drama--------0
3-----------C.Romántica--1
4-----------C.Moderna----1
5-----------Neoclásicos---2
6-----------C.Romántica.subnivel --- 3
7-----------C.Romántica.sub-sub-nivel --- 6

Ahí en el ejemplo tendríamos una estructura tipo:

-Comedia
-----C.Romántica
-------C.Romántica.subnivel
----------C.Romántica.sub-sub-nivel
-----C.Moderna
-Drama
-----Neoclásicos

Es decir .. sólo guardar el tu campo "predecesor" el nodo superior al que pertenece. Se complica un poco para obtener el "padre" o ruta hacia el padre desde una rama .. pero es efectiva. No es la única técnica al respecto ..

Un saludo,

Última edición por Cluster; 01/10/2004 a las 12:15
  #4 (permalink)  
Antiguo 01/10/2004, 12:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
(andaba buscando el link que dejó josemi .. pero ya está ahí xD).

Un saludo,
  #5 (permalink)  
Antiguo 01/10/2004, 12:35
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 21 años
Puntos: 0
Gracias Josemi y Cluster.

"Dándole a la pinza" sobre el tema se me ha ocurrido algo que quizás pueda ser más "visual" (que no efectivo) a la hora de trabajar con numerosas subcategorías (con por ejemplo 10 subniveles o más), en lugar de usar números usar texto a la hora de referirnos al predecesor, pudiendo el usuario definir (desde la aplicación escrita en php) el nombre del nivel, subnivel, sub-sub-nivel, etc.

Por ejemplo:
Nivel 1 Marca (en la base de datos el predecesor sería "ninguno" equivale a predecesor 0)
Nivel 2 Línea (en la base de datos el predecesor sería "Marca" equivale a poner predecesor 1)
Nivel 3 Producto (en la base de datos el predecesor sería "Línea" equivale a predecesor 2)

A ver que os parece

Saludetes
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 23:58.