La refactorización de la base de datos es un cambio simple en el esquema de la base de datos que mejora su diseño mientras mantiene la semántica funcional e informativa [1] . En otras palabras, el efecto de la refactorización de la base de datos no puede ser agregar nuevas funcionalidades o limitar las existentes, ni agregar nuevos datos o cambiar el significado de los existentes.
S. Ambler y P. Sadalaj [1] identifican las siguientes categorías de refactorización de bases de datos relacionales :
Métodos: introducción de una columna calculada; introducción de una clave sustituta ; reemplazar datos de tipo LOB con una tabla; reemplazar una relación de uno a muchos con una tabla de asociación; reemplazo de columna; reemplazar una clave sustituta con una clave natural; cambiar el nombre de una vista; cambiar el nombre de una columna; cambiar el nombre de una tabla; mover una columna; dividir una columna; división de mesas; fusión de columnas; fusionar tablas; eliminar una vista; eliminar una columna; eliminando una tabla.
Métodos: Introducir un valor predeterminado; introducción de un formato común; introducir una restricción de columna; agregar una tabla de búsqueda; reemplazar el código de tipo con banderas de propiedad; implementación de la estrategia de claves consolidadas; movimiento de datos; convertir una columna en un valor no anulable; aplicación del tipo estándar; uso de códigos estándar; destruyendo el valor por defecto; destruir una restricción de columna; destruyendo una columna no anulable.
Métodos: introducción de eliminación en cascada; introducción de eliminación de software; introducción de un disparador para la acumulación de datos históricos; introducción de la remoción física; agregar una restricción de clave externa; agregar un disparador para una columna calculada; destruyendo la restricción de clave externa .
Métodos: introducción del método computacional; introducción al índice ; presentar una tabla de solo lectura; agregar una mesa de espejo; agregar un método de lectura; agregar métodos CRUD ; reemplazar un método(s) con una vista; reemplazar una vista con un método(s); encapsular una tabla en una vista; uso de una fuente de datos definida oficialmente; transferir el método a la base de datos; mover el método de la base de datos.
Se destacan algunas deficiencias comunes de la base de datos, cuya presencia puede indicar la necesidad de una refactorización [1] .
El período de transición de refactorización es el período de tiempo durante el cual se admiten tanto la versión original del esquema de la base de datos como la nueva versión. Su introducción es necesaria para que los desarrolladores tengan tiempo de realizar los cambios necesarios en las aplicaciones que funcionan con la base de datos.
Un ejemplo de refactorización de base de datos es la operación de cambiar el nombre de una columna en una tabla existente.
La tabla Empleado, que almacena datos sobre los empleados de la empresa, contiene la columna zarplata, que decidimos renombrar como salario para asegurar una denominación uniforme de los objetos en la base de datos, es decir, use solo palabras en inglés como nombres. Para hacer esto, debe hacer lo siguiente: agregue una columna de salario a la tabla y copie los datos de la columna de zarplata en ella, introduzca un disparador que sincronizará los datos entre las dos columnas durante el período de transición, y después de este período, elimine el disparador y la columna original.