Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/01/2014, 08:58
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 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.