Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Ayuda en esquema BD (http://www.forosdelweb.com/f86/ayuda-esquema-bd-406698/)

jerkan 04/07/2006 10:18

Ayuda en esquema BD
 
Quiero consultaros cómo hariais vosotros el diseño de la siguiente base de datos.
Quiero tener una única tabla donde guardar las imagenes asociadas a productos, noticias, etc...

Imagenes ( Id, Objeto asociado, BLOB, ... )

Productos ( Id, Nombre, ... )

Noticias ( Id, Titulo, ... )

Todos los campos Id son autonuméricos.
Puesto que los campos Id de los productos y de las imagenes podrían coincidir no puedo hacer una relación directa entre las imagenes y los productos/noticias.

Necesito una manera para identificar todos mis objetos (productos, noticias, ...) de manera única. Podría crear una tabla (con su Id autonumérico) que me gestione todos los objetos de manera única.

Tabla ( Id, ... )

Pero aquí es dónde me pierdo. No sé cómo relacionar las tablas de productos y/o noticias con esta tabla de objetos. ¿Alguna ayuda?

pipo165 04/07/2006 20:22

suponiendo que existen varias imagenes por productos y varias noticias por productos las tablas debieran ser:

productos(id_producto, nombre,...)
imagenes(id_imagen, id_producto,...)
noticias(id_noticia, id_producto,...)

la consulta q te devuelve todos los datos, filtrado por el parametro "producto" (prod) sería:

select *.productos, *.noticias, *.imagenes from productos inner join noticias on productos.id_producto=noticias.id_producto inner join imagenes on productos.id_producto=imagenes.id_producto where productos.id_producto=prod

ahora lo que no entiendo es los datos de tipo blob, para mostrar imagenes puedes guardar la ruta del archivo (imagen) que subas al servidor, es decir, en la tabla imagenes un campo llamado "ruta" de tipo varchar(20). asi un registro te quedaria:

id_imagen_______ruta________________id_producto
1______________'images/imagen1.jpg'______1
2______________'images/imagen2.jpg'______1
3______________'images/imagen3.jpg'______2


espero que te sirva de algo....

"select saludos from chile"

jerkan 05/07/2006 01:26

Gracias pipo165, pero creo que no me entendiste bien (o yo no me expresé con claridad).
Las noticias y los productos estan asociados con la tabla imagenes.
Una noticia puede tener muchas imagenes. Y un producto puede tener mucha imagenes.
Así pues, en la tabla imagenes necesito un campo de clave foranea para saber a quien pertenece la imagen.
El problema está en que los identificadores de noticia y producto podrían ser iguales (ya que son autonuméricos).

Se me ha ocurrido que los identificadores de productos y noticias podrían no ser autonuméricos. Podría crear una tabla para generar numeros (con un id autonumerico) y asignarlos a los nuevos productos y noticias.

Cualquier comentario será bienvenido.

seanchan 05/07/2006 03:49

Dos ideas, suponiendo que las imagenes solo pueden estar en una noticia o producto:
*) Imagenes ( Id, Objeto asociado, BLOB, ..., idproducto,idnoticia ) Dos claves ajenas para según con que tabla esta relacionada
*) Por si solo quieres un campo, esto es mas engorroso, poner un campo IDEntidad en Imagenes y lo compones del TIPO 'N'+IDNoticia y 'P'+IdProducto

pipo165 05/07/2006 10:37

amigo jerkan:
todo se te arregla, agregando 2 campos a la tabla imagenes... los llamaremos:
cod: puede ser el id_producto ó id_noticia
tip: que sería el tipo de imagen, 'p' si es de un producto o 'n' si es noticia

entonces con estos dos campos puedes identificar la imagen.

las tablas debieran ser:
imagenes (id_imagen, cod, tip, ...)
productos (id_producto, nombre, ...)
noticias (id_noticia, titulo, ...)

suponiendo que tienes estos datos en la tabla "imagenes":

id_imagen__________cod_________tip
1__________________1__________'p'
2__________________1__________'p'
3__________________1__________'n'
4__________________2__________'n'
5__________________3__________'n'
6__________________2__________'p'

las primeras 2 imagenes corresponden al producto de id=1

como sacas las imagenes del producto id=1??

select *.productos, *.imagenes from productos inner join imagenes on productos.id_producto=imagenes.cod where tip='p'

espero que te sirva y recuerda dejar los autonumericos en las tablas jeje
saludos

pd: te mencionaba de las rutas de las imagenes, porque no sé como es los datos de tipo blob, si me pudieses dar una breve explicación también será bienvenida...


La zona horaria es GMT -6. Ahora son las 03:36.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.