Hoy hemos tenido una reunión bastante larga en el curro tratando de este tema.
Las conclusiones a las que hemos llegado son:
- Guardar únicamente los cambios en el sueldo del trabajador para una fecha dada en lugar de guardarlos día a día. Por ejemplo, reemplazar:
01/03/2012 -> 45€
02/03/2012 -> 45€
03/03/2012 -> 50€
04/03/2012 -> 100€
05/03/2012 -> 50€
06/03/2012 -> 50€
por esto:
partiendo de un sueldo base 45€:
Tabla Aumentos (fecha, aumento):
03/03/2012, 5€
Tabla Bonificaciones Puntuales (fecha, bonificación):
04/03/2012, 50€
Así ahorramos mucho más espacio aunque luego tengamos que calcular el resto. Es una especie de paso intermedio entre almacenar todo o calcularlo todo al vuelo. El tema es si conseguiremos que de esta forma los cálculos sean lo suficientemente rápidos como para mostrarlos en pantalla en el orden de 1 - 2 segundos.
El ejemplo que he puesto es infinitamente sencillo con la realidad de la aplicación, ya que hay que tener en cuenta como posibles aumentos / bonificaciones cosas como: categorias sindicales, puestos en la empresa, % de dedicacion, aumentos de sueldo, vacaciones, ausencias justificadas e injustificadas, discapacidades, etc.