Articulo de referencia

Database refactoring

A database refactoring is a simple change to a database schema that improves its design while retaining both its behavioral and informational semantics. Database refactoring doe...

A database refactoring is a simple change to a database schema that improves its design while retaining both its behavioral and informational semantics. Database refactoring does not change the way data is interpreted or used and does not fix bugs or add new functionality. Every refactoring to a database leaves the system in a working state, thus not causing maintenance lags, provided the meaningful data exists in the production environment.

A database refactoring is conceptually more difficult than a code refactoring; code refactorings only need to maintain behavioral semantics while database refactorings also must maintain informational semantics.

A database schema is typically refactored for one of several reasons:

  1. To develop the schema in an evolutionary manner in parallel with the evolutionary design of the rest of the system.
  2. To fix design problems with an existing legacy database schema. Database refactorings are often motivated by the desire for database normalization of an existing production database, typically to "clean up" the design of the database.
  3. To implement what would be a large (and potentially risky) change as a series of small, low-risk changes.

Categories of database refactoring

In 2006 Scott Ambler, Pramod Sadalage[1] describe the following categories of database refactoring:[2]

  • Architecture Refactoring
A change which improves the overall manner in which external programs interact with a database.

Methods of Architecture Refactoring category: Add CRUD Methods; Add Mirror Table; Add Read Method; Encapsulate Table With View; Introduce Calculation Method; Introduce Index; Introduce Read Only Table; Migrate Method From Database; Migrate Method To Database; Replace Method(s) With View; Replace View With Methods(s); Use Official Data Source.

  • Structural Refactoring
A change to the table structure of your database schema.

Methods of Structural Refactoring category: Drop Column; Drop Table; Drop View; Introduce Calculated Column; Introduce Surrogate Key; Merge Columns; Merge Tables; Move Column; Rename Column; Rename Table; Rename View; Replace LOB With Table; Replace Column; Replace One-To-Many With Associative Tables; Replace Surrogate Key With Natural Key; Split Column; Split Table.

  • Data Quality Refactoring
A change which improves and/or ensures the consistency and usage of the values stored within the database.

Methods of Data Quality Refactoring category: Add Lookup Table; Apply Standard Codes; Apply Standard Type; Consolidate Key Strategy; Drop Column Constraint; Drop Default Value; Drop Non Nullable; Introduce Column Constraint; Introduce Common Format; Introduce Default Value; Make Column Non Nullable; Move Data; Replace Type Code With Property Flags.

  • Refactorización de integridad referencial
Un cambio que garantiza que una fila referenciada exista dentro de otra tabla y/o que garantiza que una fila que ya no es necesaria se elimine adecuadamente.

Métodos de refactorización de integridad referencial: Agregar restricción de clave externa; Agregar disparador para columna calculada; Eliminar restricción de clave externa; Introducir eliminación en cascada; Introducir eliminación dura; Introducir eliminación suave; Introducir disparador para historial.

  • Transformación
Un cambio que modifica la semántica del esquema de su base de datos, ya sea agregando nuevos elementos o modificando los existentes.

Categoría de métodos de transformación: Insertar datos; Introducir nueva columna; Introducir nueva tabla; Introducir vista; Actualizar datos.

  • Refactorización de métodos
Un cambio que mejora la calidad de un procedimiento almacenado, una función almacenada o un disparador.

Métodos de la categoría Refactorización de métodos: Parametrizar métodos; Eliminar parámetro; Renombrar método; Reordenar parámetros; Reemplazar parámetro con métodos explícitos; Consolidar expresión condicional; Descomponer condicional; Extraer método; Introducir variable; Eliminar indicador de control; Eliminar intermediario; Reemplazar literal con búsqueda en tabla; Reemplazar condicional anidado con cláusulas de guarda; Dividir variable temporal; Sustituir algoritmo.

En 2019 Vladislav Struzik complementó las categorías de refactorización de bases de datos con una nueva: [ 3 ]

  • Refactorización de acceso
Un cambio relacionado con el acceso a los datos.

Métodos de la categoría Refactorización de acceso: [ 4 ] [ 5 ] Cambiar atributos de autenticación; Revocar privilegios de autorización; Otorgar privilegios de autorización; Extraer esquema de base de datos; Fusionar esquemas de base de datos.

Proceso de refactorización de la base de datos

El proceso de refactorización de bases de datos consiste en aplicar refactorizaciones para evolucionar un esquema de base de datos existente (la refactorización de bases de datos es una práctica fundamental del diseño evolutivo de bases de datos ). Hay tres aspectos que deben tenerse en cuenta:

  1. Cómo se implementa una única refactorización
  2. Cómo se realiza el seguimiento y se comparten las refactorizaciones de bases de datos dentro de las organizaciones.
  3. Cómo se aplican una serie de refactorizaciones de bases de datos

Véase también

Referencias

  1. Scott Ambler, Pramod Sadalage Refactoring Databases: Evolutionary Database Design - Addison-Wesley Professional; 1.ª edición (3 de marzo de 2006) - 384 págs. - ISBN 978-0321774514
  2. Catálogo de refactorizaciones de bases de datos de Scott Ambler - Agile Data - URL: http://agiledata.org/essays/databaseRefactoringCatalog.html
  3. Струзік, В. A. Категорія рефакторинг доступу / В. A. Струзік // Комп'ютерні науки, іжнародна науково-технічна конференція estudiantes, аспірантів та молодих вчених, lista del 27 al 29 de 2019 r. – Івано-Франківськ : Прикарпатський національний університет ім. Василя Стефаника, 2019. – С. 20-21. URL: http://dspace.nuft.edu.ua/jspui/handle/123456789/31516
  4. Струзік, В. A. Категорія рефакторинг доступу / В. A. Струзік, С. B. Грибков, В. B. Чобану // Наукові праці НУХТ. – Т. 26, № 2. – 2020. – С. 31–49. URL: http://dspace.nuft.edu.ua/jspui/handle/123456789/31515
  5. Vladislav Struzik, PhD Refactorización: ayer, hoy, mañana. URL: https://medium.com/@struzik/refactoring-yesterday-today-tomorrow-7fc8c845cfb1
  • Sitio web de refactorización de bases de datos por Pramod Sadalage