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

duda en una relacion entre dos tableas

Estas en el tema de duda en una relacion entre dos tableas en el foro de Mysql en Foros del Web. Tengo una tabla llamada perfil donde tengo los datos de este perfil excepto sus fotos de perfil donde no es obligatorio tenerla y puede tener ...
  #1 (permalink)  
Antiguo 23/01/2014, 05:55
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
duda en una relacion entre dos tableas

Tengo una tabla llamada perfil donde tengo los datos de este perfil excepto sus fotos de perfil donde no es obligatorio tenerla y puede tener varias fotos guardadas, entonces entiendo que tengo que tener otra tabla por ejemplo llamada fotos de perfil, hasta aqui bien lo que no tengo muy claro como deberia almacenar estas fotos bueno el nombre de las fotos ya que la imagen en si la guardo en una carpeta.

Se me ocurre dos formas una seria un campo para cada foto por ejemplo foto1 foto2, pero creo que esta forma seria un error, la otra forma que se me ocurre seria crear un solo campo y llamarlo fotos por ejemplo y crear una cadena con los nombres de las fotos dividida con algun caracter com esto / para despues poder recuperar cada imagen.

Alguien me dice realmente como se debe hacer esto?
  #2 (permalink)  
Antiguo 23/01/2014, 08:58
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: duda en una relacion entre dos tableas

Hola Azaz:

En realidad, los dos planteamientos que tienes son completamente erróneos:

Cita:
Se me ocurre dos formas una seria un campo para cada foto por ejemplo foto1 foto2, pero creo que esta forma seria un error
Efectivamente, tal como lo comentas, un diseño de este tipo es un error, porque de entrada no sabes cuántas fotos tendría los perfiles y al ser un numero variable, estarías limitándolos sólo al número de campos que tenga tu tabla y sería un desperdicio de espacio, ya que muchos campos quedarían como nulos.

Cita:
la otra forma que se me ocurre seria crear un solo campo y llamarlo fotos por ejemplo y crear una cadena con los nombres de las fotos dividida con algun caracter com esto / para despues poder recuperar cada imagen.
Esto es ABSOLUTAMENTE PROHIBIDO en un modelo Entidad-Relación... por ningún motivo debes tener campos MULTIVALUADOS, es decir como propones, tener valores con algún separador... NO LO HAGAS, NUNCA.

Si presentaras cualquiera de los dos diseños en una clase de diseño de BD seguramente serías reprobado por tu profesor, si presentaras alguno de los diseños en una empresa, seguramente serías despedido... así de simple, así de claro.

Cuando tienes una relación 1 a N, como es el caso, donde 1 perfil puede tener N fotografías, lo único que tienes que hacer es crear una tabla donde guardes la llave de tu tabla perfiles y agregues un registro por cada entrada, es decir, algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM perfiles;
  2. +----------+--------------+
  3. | idPerfil | descripcion  |
  4. +----------+--------------+
  5. |        1 | perfil uno   |
  6. |        2 | perfil dos   |
  7. |        3 | perfil tres  |
  8. |        4 | perfil cuatro |
  9. +----------+-------------+
  10. 3 rows in set (0.01 sec)
  11.  
  12. mysql> SELECT * FROM fotos_perfiles;
  13. +--------------+----------+-------------+
  14. | idFotoPerfil | idPerfil | descripcion |
  15. +--------------+----------+-------------+
  16. |            1 |        1 | foto 1.1    |
  17. |            2 |        1 | foto 1.2    |
  18. |            3 |        1 | foto 1.3    |
  19. |            4 |        2 | foto 2.1    |
  20. |            5 |        2 | foto 2.2    |
  21. |            6 |        3 | foto 3.1    |
  22. +--------------+----------+-------------+
  23. 6 rows in set (0.00 sec)

De aquí se desprende que el perfil 1 tiene 3 fotografías, el perfil 2 tiene 2 fotografías, el perfil 3 tiene 1 fotografía y el perfil 4 NO TIENE ninguna fotografía relacionada.

Saludos
Leo.
  #3 (permalink)  
Antiguo 23/01/2014, 09:07
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: duda en una relacion entre dos tableas

Ah!! ahora si que le encuentro sentido, muchas gracias leonardo_josue, por tu ayuda.
saludos.

Etiquetas: campo, relacion, tabla
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 23:26.