Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 04-jul-2006, 10:18   #1 (permalink)
jerkan tiene algunos puntos positivos de karma
 
Avatar de jerkan
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.437
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?
__________________
jerkan.net
jerkan está desconectado   Responder Citando
Antiguo 04-jul-2006, 20:22   #2 (permalink)
pipo165 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2005
Mensajes: 23
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-jul-2006 a las 20:29.
pipo165 está desconectado   Responder Citando
Antiguo 05-jul-2006, 01:26   #3 (permalink)
jerkan tiene algunos puntos positivos de karma
 
Avatar de jerkan
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.437
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.
__________________
jerkan.net
jerkan está desconectado   Responder Citando
Antiguo 05-jul-2006, 03:49   #4 (permalink)
seanchan ha deshabilitado el karma
 
Fecha de Ingreso: junio-2006
Mensajes: 87
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
seanchan está desconectado   Responder Citando
Antiguo 05-jul-2006, 10:37   #5 (permalink)
pipo165 ha deshabilitado el karma
 
Fecha de Ingreso: junio-2005
Mensajes: 23
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...
pipo165 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 15:35.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93