Estructura de tablas en la BD

28/06/2006 - 16:23 por Yoselyn | Informe spam
Hola a todos. Les explico mi situacion.
Estoy desarrollando una pequeña aplicacion tipo ebay.com (pero mucho mas
pequeña claro esta) en donde manejo un catalogo de productos y
categorias/sub-categorias a las cuales estos pertenecen. Para mi existe una
relacion de muchos a muchos entra las tablas de productos y categorias lo
cual da origen a la tabla de detalle que me permite saber en que categorias
se encuentra un producto y que productos tiene cada categoria/sub-categoria.
Las tablas son mas o menos asi:

Productos:
id_prod - nomb_prod

Categorias:
id_cate - nomb_cate - padre

Detalles:
id_prod - id_cate

En la tabla de categorias los registros forman una especie de jerarquia de
arbol, es por esto que tengo el campo "Padre", el cual me permite saber de
quien es hijo cada registro. Hasta aqui todo bien.
El problema se me presenta en la siguiente situacion, supongamos que tengo
los siguientes registros en las tablas:

Producto:
id_prod - nomb_prod
1 - Gorra Azul

Categorias
id_cate - nomb_cate - padre
1 - Ropa - null
2 - Gorras - 1
3 - Deportes - null
4 - Gorras Deportivas - 3

Como ven el campo padre me sirve para saber que Gorras pertenece a Ropa y
que Gorras Deportivas pertenece a Deportes.
Supongamos que un usuario publica el articulo llamado Gorra Azul en la
sub-categoria Gorras que se encuentra en Ropa, entonces la tabla de detalles
quedaria asi:

Detalles:
id_prod - id_cate
1(Gorra Azul) - 2(Gorras)

El problema es que como Gorras y Gorras Deportivas son basicamente lo mismo
,los productos que se ingresen en una deben tambien estar en la otra aun
cuando como ven estas pertenecen a categorias distintas, es decir la tabla de
detalles debe quedar asi:

Detalles:
id_prod - id_cate
1(Gorra Azul) - 2(Gorras)
1(Gorra Azul) - 4 (Gorras Deportivas)

El problema es que no sé como hacer para que estas sub-categorias(Gorras y
Gorras Deportivas) se puedan relacionar para que aun cuando ambas pertenecen
a diferentes categorias yo pueda saber que ambas tienen algo en comun y asi
los productos que se registran en una deban estar registrados tambien en la
otra.

Yo lo he "resuelto" agregando un campo adicional en la tabla de categorias
que me permite saber si dos registros se relacionan entre si, es decir que
son la "misma cosa" o que tendran los mismos productos, les muestro...

Categorias
id_cate - nomb_cate - padre - campoadicional
1 - Ropa - null - A
2 - Gorras - 1 - B
3 - Deportes - null - C
4 - Gorras Deportivas - 3 - B

Como ven ese campo adicional me esta indicando que Gorras y Gorras
Deportivas tienen algo en comun a pesar de que se encuentran en categorias
distintas, por lo que creo que de esta forma logro lo que deseo.
Lo que no sé y eso es lo que me gustaria me ayuden es si es la mejor forma
de tratar esto, desde todo punto de vista, normalizacion en la base de datos,
performance del servidor de base de datos, la relaciones entre las tablas.

Sin mas nada que decir muchas gracias por su tiempo para leer este post y su
ayuda. Bye...
 

Leer las respuestas

#1 Alejandro Mesa
28/06/2006 - 16:56 | Informe spam
Yoselyn,

Tienes alguna idea sobre que pasaria si una categoria se relaciona con mas
de una?


AMB

"Yoselyn" wrote:

Hola a todos. Les explico mi situacion.
Estoy desarrollando una pequeña aplicacion tipo ebay.com (pero mucho mas
pequeña claro esta) en donde manejo un catalogo de productos y
categorias/sub-categorias a las cuales estos pertenecen. Para mi existe una
relacion de muchos a muchos entra las tablas de productos y categorias lo
cual da origen a la tabla de detalle que me permite saber en que categorias
se encuentra un producto y que productos tiene cada categoria/sub-categoria.
Las tablas son mas o menos asi:

Productos:
id_prod - nomb_prod

Categorias:
id_cate - nomb_cate - padre

Detalles:
id_prod - id_cate

En la tabla de categorias los registros forman una especie de jerarquia de
arbol, es por esto que tengo el campo "Padre", el cual me permite saber de
quien es hijo cada registro. Hasta aqui todo bien.
El problema se me presenta en la siguiente situacion, supongamos que tengo
los siguientes registros en las tablas:

Producto:
id_prod - nomb_prod
1 - Gorra Azul

Categorias
id_cate - nomb_cate - padre
1 - Ropa - null
2 - Gorras - 1
3 - Deportes - null
4 - Gorras Deportivas - 3

Como ven el campo padre me sirve para saber que Gorras pertenece a Ropa y
que Gorras Deportivas pertenece a Deportes.
Supongamos que un usuario publica el articulo llamado Gorra Azul en la
sub-categoria Gorras que se encuentra en Ropa, entonces la tabla de detalles
quedaria asi:

Detalles:
id_prod - id_cate
1(Gorra Azul) - 2(Gorras)

El problema es que como Gorras y Gorras Deportivas son basicamente lo mismo
,los productos que se ingresen en una deben tambien estar en la otra aun
cuando como ven estas pertenecen a categorias distintas, es decir la tabla de
detalles debe quedar asi:

Detalles:
id_prod - id_cate
1(Gorra Azul) - 2(Gorras)
1(Gorra Azul) - 4 (Gorras Deportivas)

El problema es que no sé como hacer para que estas sub-categorias(Gorras y
Gorras Deportivas) se puedan relacionar para que aun cuando ambas pertenecen
a diferentes categorias yo pueda saber que ambas tienen algo en comun y asi
los productos que se registran en una deban estar registrados tambien en la
otra.

Yo lo he "resuelto" agregando un campo adicional en la tabla de categorias
que me permite saber si dos registros se relacionan entre si, es decir que
son la "misma cosa" o que tendran los mismos productos, les muestro...

Categorias
id_cate - nomb_cate - padre - campoadicional
1 - Ropa - null - A
2 - Gorras - 1 - B
3 - Deportes - null - C
4 - Gorras Deportivas - 3 - B

Como ven ese campo adicional me esta indicando que Gorras y Gorras
Deportivas tienen algo en comun a pesar de que se encuentran en categorias
distintas, por lo que creo que de esta forma logro lo que deseo.
Lo que no sé y eso es lo que me gustaria me ayuden es si es la mejor forma
de tratar esto, desde todo punto de vista, normalizacion en la base de datos,
performance del servidor de base de datos, la relaciones entre las tablas.

Sin mas nada que decir muchas gracias por su tiempo para leer este post y su
ayuda. Bye...



Preguntas similares