Ver Mensaje Individual
  #9 (permalink)  
Antiguo 06/12/2009, 18:28
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear columnas en la base de datos

La opción de añadir una nueva columna por cada nuevo año la descartaría por completo ya que no añade funcionalidad a la BD, incluso tendrías que modificar el código de la aplicación, cosa aún peor. Una aplicación que se base en BDs y funcione bien de debe dejar tal cual y solo modificarla en casos excepcionales (por ejemplo para añadir funcionalidad).
Cita:
Iniciado por da2 Ver Mensaje
Si pero eso implica crear cada vez que se modifiquen los precios una entrada nueva del producto
De eso se trata. No se están modificando precios, se están añadiendo precios para un nuevo año. Modificar, en el lenguaje MsSQL, significa actualizar un registro (o tabla, etc.). Por ejemplo, y partiendo del lenguaje humano, modificar un precio para un nuevo año, con la estructura a la que nos referimos, no es modicar el precio del año 2008, sino añadir uno nuevo para el 2009 (ya puede ser otro, o el mismo).
Cita:
Iniciado por da2 Ver Mensaje
estoy usando auto_increment para el ID
Esto no es un inconvieniente para el ejemplo que te he dado, ya que la clave primaria es el par (Id_producto, Año), lo que significa que cada valor individual se puede repetir todas las veces que se quieran, pero no los dos a la vez (no puede haber ningún par de valores iguales). Aunque al releer el tema, me he dado cuenta que el ejemplo que yo te he dado tiene un inconveniente que lo explico después.

Partiendo de los ejemplos que ha dado jcMouse, el primero sólo es válido si los datos "precio-año" no los necesitaras en el tiempo, tal como ha dicho él/ella. Inlcuso la columna Anio se puede suprimir ya que no aporta nada.

La mejor opción es como recomienda jcMouse, con dos tablas, ya que el inconveniente que tiene mi ejemplo es que, aunque en apariencia cumple con la integridad referencial, ésta se viene abajo al querer modificar Nom_producto, ya que se tendrían que modificar tantos registros como años hubiese. Con estas dos tablas incluso también se puede eliminar Id_precio de la tabla precios si pones como clave primaria el par (Id_producto, Anio).

En definitiva, si no necesitas los datos "precio-año" en el tiempo: 1 tabla; si los necesitas: 2 tablas.

Espero que se hayan aclarado tus dudas.

Última edición por serser; 06/12/2009 a las 18:44