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

Sobre Categorías y Sub-Categorías

Estas en el tema de Sobre Categorías y Sub-Categorías en el foro de SQL Server en Foros del Web. Hola a todos. Les cuento que actualmente estoy desarrollando un pequeño proyecto para entregar al final de semestre con asp.net. Es un portal que sigue ...
  #1 (permalink)  
Antiguo 21/06/2006, 16:56
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 2 meses
Puntos: 1
Sobre Categorías y Sub-Categorías

Hola a todos.
Les cuento que actualmente estoy desarrollando un pequeño proyecto para entregar
al final de semestre con asp.net. Es un portal que sigue más o menos la misma línea
de mercadolibre.com o deremate.com pero claro está mucho más pequeño y menos complejo.

Tengo una tabla en la bd en sql server en donde guardo todas las categorías y sub-categorias
con la siguiente estructura:

cate_codigo = código de la categoría
cate_nombre = nombre o descripción
cate_padre = código de la categoría padre(si la tiene)

Por ejemplo:

01 - Ropa - Null
02 - Gorras - 01
En este caso Gorras pertenece a la categoría de Ropa. Todo bien :)

El problema es el siguiente, en mi caso una sub-categoria o registro puede pertenecer
a más de una categoría al mismo tiempo o incluso a otra sub-categoría.

Por ejemplo:
01 - Ropa - Null
02 - Gorras - 01
03 - Artículos Deportivos - Null
04 - Gorras - 03

En este caso la sub-categoría Gorras pertenece a las categorías Ropa y Artículos Deportivos,
pero ya sea que se acceda a Gorras desde la categoría Ropa o desde la de Artículos Deportivos
allí el usuario encontrará siempre los mismos productos es decir Gorras.

Cómo le hago para que al momento de agregar una gorra en la página la misma aparezca tanto
en la sub-categoría Gorras que está en Ropa así como también en la que está en Artículos Deportivos.?
Es decir, cuál podría ser la manera correcta o más eficiente de trabajar esto a nivel de la
base de datos?
En mi caso había pensado para evitar registrar Gorras dos veces(ya que pertenece a dos categorías
diferentes) crear un campo llamado "cate_padre2", de esta manera podría indicar que Gorras
pertenece a las categorías 01 y 03, pero esto significa que más adelante podría verme en la
necesidad de crear campos cate_padre3,cate_padre4...y así sucesivamente.

Espero me puedan dar algunas ideas o sugerencias.
De antemano muchas gracias por su tiempo.
Saludos...
  #2 (permalink)  
Antiguo 21/06/2006, 17:08
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años
Puntos: 37
Mira para no tener mas de 1 registro de tu producto, lo que yo haria seria lo siguiente, tendira mi tabla de categoria, la de subcategoria, y el producto
en la

tabla de producto tendria mi id_prod, nombre y categorias

categorias seria un campo numerico ahora viene el detalle, se debe de guardar en binario es decir
si
deportivos id = 1
ropa id=3

en categorias guardarias 101
y te guias por la posicion por decir que gorra pertenece a la categoria 1 y en la 3 por que es donde tienes prendido los bits.

yo lo ocupo por que tengo muchos checkbox en una hoja de captura como 20 y en vez de tener 20 campos tengo un campo numerico, y para saber si esta prendido o no haces un AND con la posicion, por ejemplo

si quieres saber que esta en categoria 3, pues haces un and de 101 con 100
y te da 100 indicandote que esta prendida la posicin 3

si tienes dudas me escribes

bye
  #3 (permalink)  
Antiguo 21/06/2006, 17:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 2 meses
Puntos: 1
Aver no sé si te entendí bien.
Tengo una Categoría llamada Ropa con una sub-categoría llamada Gorras y al mismo tiempo tengo una categoría llamada Deportivos con una sub-categoría llamada también Gorras, entonces ¿al momento de ingresar un producto en la BD yo debo saber el id de todas las sub-categorías a las que puede pertenecer el producto para entonces colocar un 1 en la posición que corresponda según el id de las mismas?

Te pregunto esto porque la idea es que si agregas un producto dentro de la sub-categoría Gorras que está en Deportivos este debería automáticamente relacionarse a la sub-categoría Gorras que está en Ropa, es decir que debería existir una relación entre las sub-categorías de Gorras a pesar de que las encuentras en diferentes categorías. Espero haberme explicado mejor. :)

Gracias por tu respuesta...
  #4 (permalink)  
Antiguo 22/06/2006, 15:18
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Una tabla hash puede funcionar. Consiste básicamente en una tabla de relaciones entre registros:

tblCategs:
01 - Ropa
02 - Gorras
03 - Artículos Deportivos
04 - Gorras

tblSubcategs
02 - 01
02 - 03

Si alguna categoría no está en la tabla hash del lado izquierdo es que es una categoría base (01 y 03)
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #5 (permalink)  
Antiguo 23/06/2006, 09:33
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años
Puntos: 37
suponiendo que la categoria ropa que tiene el id 3, y deportes el id 1
en tu tabla productos haces algo asi

gorra deberia tener

id_subcat 1
nombre gorra
categoria 10 --- en binario = 1010


2^3=8 y 2^1 =2
8+2 =10
significa que pertenece a la categoria 3 y 1

mira segun la idea es el no tener 2 registros de gorra por ejemplo si pertenece a 2 cat diferentes, lo que haces es guardas un numero,

cuando ingresas un producto nuevo, obviamente conoces el id de la subcategoria a la que lo estas agregando

cuando guardes un producto

id_prod = 45
nombre = gorra_deportiva
id_subcat = 1


si hacemos
select * form productos inner join sub_cat on productos.id_subcat = subcat.id_subcat where (cat && 8)>0
te trae todos los articulos de la categoria ropa y a la subcat _ gorras

mira esto es bueno cuando tienes muchos registros, y necesitas optimizar alamacenamiento y procesamiento de datos creando los menores campos posibles y procesando la menor cantidad de información.
si es para la escuela (que o habia visto que decia) la mejor opción es la que te dio Mithrandir, normalizando tu base. separando en 2 tablas y con una relacion, asi de sencillo.

bye.
Saludos
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 05:25.