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

Ayuda en esquema BD

Estas en el tema de Ayuda en esquema BD en el foro de Mysql en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 04/07/2006, 10:18
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Pregunta 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?
  #2 (permalink)  
Antiguo 04/07/2006, 20:22
 
Fecha de Ingreso: junio-2005
Mensajes: 23
Antigüedad: 18 años, 10 meses
Puntos: 0
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"

Última edición por pipo165; 04/07/2006 a las 20:29
  #3 (permalink)  
Antiguo 05/07/2006, 01:26
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
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.
  #4 (permalink)  
Antiguo 05/07/2006, 03:49
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 9 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 05/07/2006, 10:37
 
Fecha de Ingreso: junio-2005
Mensajes: 23
Antigüedad: 18 años, 10 meses
Puntos: 0
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...
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 20:10.