Cuando diseñas una Base de Datos generalmente tienes muchas formas de hacerlo, dicen que si a 100 personas les pides que diseñen una Base de Datos te encontrarás con más de 100 resultados (porque algunos te entregarán más de una).

Sin embargo, hay algunos consejos que pueden ser relevantes. Más allá de lo que seguramente ya conoces (normalización de las tablas, claves primarias subrogadas, índices en las columnas que se consultan frecuentemente, triggers en todas las tablas para evitar datos incorrectos, etc.) hay un punto que no todos conocen o toman en cuenta y que puede ser de vital importancia: trazabilidad en el tiempo.

¿Qué significa trazabilidad en el tiempo?

Que puedas retrotraer, que puedas regresar, tu Base de Datos a cualquier instante anterior.

¿Y para qué necesitaría retrotraer la Base de Datos a un instante anterior?

Para saber exactamente lo que tenías registrado en un determinado momento. Eso te permitirá responder preguntas tales como:

    • ¿Cuál era la cantidad en stock del producto XYZ el día 22 de abril de 2013 a las 09:15?
    • ¿Cuál era el saldo en cuenta corriente el día 23 de abril de 2013 a las 07:00?
    • ¿Cuánto se había vendido en la sucursal de Londres el día 24 de abril de 2013 a las 11:00 horas de acá?
    • ¿Cuáles fueron los cambios de precios de venta del producto XYZ el año pasado?
    • ¿Cuál era el precio de venta del producto XYZ antes de que el empleado Juan Pérez lo cambiara “por accidente”?
    • ¿Cuántos clientes tenía la sucursal de Nueva York el día 19 de abril de 2013, cuánto se les había vendido a esos clientes, cuánto se les había cobrado?

¿Cómo se consigue la trazabilidad en el tiempo?

  1. Nunca, jamás, una fila (registro) puede ser borrada. Lo que se hace es cambiar el valor de una columna de ACTIVO a INACTIVO
  2. Cada vez que: a) un fila es insertada o b) una fila es puesta en INACTIVO o c) una fila es modificada, se guardan en una tabla de log:
    • El identificador de la Sucursal
    • El nombre o identificador de la computadora
    • El nombre del usuario que insertó, inactivó o modificó
    • El nombre de la tabla
    • La fecha en la cual ocurrió la inserción, inactivación o modificación
    • La hora en la cual ocurrió la inserción, inactivación o modificación
    • El número de la transacción que insertó, inactivó o modificó
    • El valor anterior que tenía cada columna que fue modificada
  3. El punto 2. se realiza a través de un trigger AFTER INSERT OR UPDATE OR DELETE

¿Vale la pena que una Base de Datos tenga trazabilidad en el tiempo?

Sí, porque los usuarios muchas veces necesitan información de lo que ocurrió en el pasado, no solamente de lo que está ocurriendo ahora.

¿Cuál es la desventaja de tener una Base de Datos trazable en el tiempo?

Que puede llegar a ser muy grande, por eso suele ser recomendable que para ello utilices una Base de Datos auxiliar.

Anuncios