Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/08/2012, 11:39
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Actualizar registros de tabla - Manera correcta

Creo que la explicación de gnzsoloyo es bastante clara, pero te comento un ejemplo que utilizó mi profesor de Diseño de Base de Datos que ejemplifica más claramente lo que queremos hacer notar... supongamos que tienes la tabla Círculos, y quisieras obtener toda la información geométrica acerca de cada figura... lo que estás tratando de hacer sería tan sin sentido como querer almacenar el radio, del círculo, el valor de la constante PI, el valor de la circunferencia y el valor del área, es decir tener la tabla así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM circulos;
  2. +-------+-----------+----------------+------------+
  3. | radio | pi        | circunferencia | area       |
  4. +-------+-----------+----------------+------------+
  5. |     1 | 3.1415927 |      6.2831854 |  3.1415927 |
  6. |     2 | 3.1415927 |     12.5663708 | 12.5663708 |
  7. |     3 | 3.1415927 |     18.8495562 | 28.2743343 |
  8. |     4 | 3.1415927 |     25.1327416 | 50.2654832 |
  9. |     5 | 3.1415927 |      31.415927 | 78.5398175 |
  10. +------+-------+-----------+----------------+------------+
  11. 5 rows in set (0.02 sec)

El campo PI no debe existir en la tabla, PUES ES UN VALOR CONSTANTE. Los campos circunferencia y area TAMPOCO DEBEN EXISTIR EN LA TABLA, pues estos se pueden calcular. El único dato que importa es el RADIO, por lo tanto es el único que debe existir en la tabla

A la hora de querer mostrar la circunferencia o el área de cualquier círculo EN EL SELECT HACES LOS CÁLCULOS NECESARIOS:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM circulos;
  2. +-------+
  3. | radio |
  4. +-------+
  5. |     1 |
  6. |     2 |
  7. |     3 |
  8. |     4 |
  9. |     5 |
  10. +-------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT
  14.     ->   radio,
  15.     ->   (3.1415927 * 2 * radio) circunferencias,
  16.     ->   (3.1415927 * radio * radio) areas
  17.     -> FROM circulos;
  18. +-------+-----------------+------------+
  19. | radio | circunferencias | areas      |
  20. +-------+-----------------+------------+
  21. |     1 |       6.2831854 |  3.1415927 |
  22. |     2 |      12.5663708 | 12.5663708 |
  23. |     3 |      18.8495562 | 28.2743343 |
  24. |     4 |      25.1327416 | 50.2654832 |
  25. |     5 |       31.415927 | 78.5398175 |
  26. +-------+-----------------+------------+
  27. 5 rows in set (0.00 sec)

¿Se entiende la idea?

Saludos
Leo.