![]() |
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? |
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" |
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. |
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 |
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.