No me considero un experto en SQL, pero la experiencia es un grado y trabajar con imágenes en SQL debe ser tratado con especial atención.
Los habitual es que creemos una tabla que contenga todos los datos necesarios y, además, una columna que recoja las imágenes, así nos encontraremos con una tabla de artículos de esta forma:
| id barras descripcion p_coste p_venta foto |
Este sistema funciona, no voy a decir que no, pero ocurren dos cosas a tener en cuenta:
¿Como he solucionado esto? Para los experimentados en SQL será obvio, pero para los que empiezan es un gran descubrimiento ;-). El sistema es sacar las imágenes de las tablas principales y alojarlas en una tabla aparte que contendrá todas las imágenes de la base de datos con independencia de la tabla a la que pertenecen y en la tabla principal cambiar la columna imagen (del tipo blob) por una que contendrá el identificador de la imágen en la tabla de imágenes:
| Tabla imagenes | Tabla articulos | Tabla clientes |
| id imagen nombre | id barras descripcion p_coste p_venta id_foto | id apellidos nombre domicilio cpostal localidad provinvia telefono id_foto |
id_foto en las tablas de articulos y clientes es una clave foranea que apunta al id de imágenes, estableciendo la relación.
Usando ésta técnica sólo accederemos a las imágenes cuando sea necesario sin hacer que el servidor cargue con su peso cuando no las queramos.
Al igual que sacas las imagenes, yo también saco los textos (los memos), para así no recuperarlos más que cuando son necesarios.
Habitualmente tengo dos tablas para eso:
IMAGENES
id
tabla
id_tabla
titulo
imagen
TEXTOS
id
tabla
id_tabla
titulo
texto
De esa forma tiene un uso genérico, sirve para cualquier tabla y puedo tener N textos o imagenes por tabla.
Una pega: no puedes implementar integridad referencial mediante claves externas, para ello utilizo triggers.
Un saludo.
Hola Jose:
Me podrias orientar, como guardar y recuperar una imagen de un campo MySQL, o cuales son tus metodos.
De antemano muchas gracias.
Saludos
Marco A. Delgado.
alojar las imagenes en una carpeta y nombrarlas con el mismo id de registro
el nombre se contruye segun el registro &.jpg
facil
mas rapido no tiene que leer tablas con imagenes
solo busca el nombre asociado al registro
Gustavo,
¿Y si no puedes tener una carpeta compartida en la red? Por ejemplo, en un servidor remoto.
Saludos
Jose A. Suarez
Comentado por Jose A. Suárez a Martes, 13 de Diciembre de 2005Marco A.,
Con Eagle 1 3.03 dispones de herramientas para guardar-recuperar imágenes en tablas MySQL. Mirate los ejemplos.
Saludos
Jose A. Suarez
Comentado por Jose A. Suárez a Martes, 13 de Diciembre de 2005