# Refacció de Base de Dades

La refacció d'una base de dades és un canvi a un esquema de base de dades que millora el seu disseny, alhora que es manté el seu comportament i d'informació semàntica. A la refaccció de base de dades és conceptualment més difícil que una refacció de codi: a la refacció de codi només és necessari mantenir el comportament semàntic mentre que a la refacció de base de dades també han de mantenir la semàntica d'informació.

## Procés

El procés de refacció de base de dades és l'acte d'aplicar refacció a una base de dades per evolucionar un esquema de base de dades existent (la refacció de base de dades és una pràctica fonamental del disseny evolutiu de base de dades). Una Base de Dades es refacciona per alguna de les dues raons següents: per desenvolupar l'esquema d'una manera evolutiva en paral·lel amb el disseny evolutiu de la resta del vostre sistema o per solucionar problemes de disseny en un esquema de base de dades existent.
La refacció de base de dades no canvia la forma en què les dades s'interpreta o s'utilitza i no corregeix errors o afegeix noves funcionalitats. Cada refacció per a una base de dades deixa el sistema en un estat de treball, de manera que no provoca retards de manteniment, sempre hi ha les dades significatives en l'entorn de producció.
Un exemple de refacció de base de dades seria dividir una taula d'agregació en dues taules diferents en el procés de normalització de bases de dades.

## Categories

El 2006 Scott Ambler, Pramod Sadalage descriuen les següents categories de refactorització de bases de dades:

### Refactorització de l'arquitectura

Un canvi que millora la manera general en què els programes externs interactuen amb una base de dades.

### Refractorització estructural

Un canvi a l'estructura de la taula de l'esquema de la vostra base de dades.

### Refactorització de la qualitat de les dades

Un canvi que millora i/o garanteix la coherència i l'ús dels valors emmagatzemats a la base de dades.

### Refactorització d'integritat referencial

Un canvi que garanteix que una fila de referència existeix dins d'una altra taula i/o que assegura que una fila que ja no és necessària s'elimina adequadament.

### Transformació

Un canvi que canvia la semàntica de l'esquema de la vostra base de dades afegint-hi elements nous o modificant els elements existents.

### Refactorització de mètodes

Un canvi que millora la qualitat d'un procediment emmagatzemat, una funció emmagatzemada o un activador.

### Refactorització d'accés

Un canvi relacionat amb l'accés a les dades.
El 2019, Vladislav Struzik va complementar les categories de refactorització de bases de dades amb aquesta.

## Vegeu també

* Refacció
* Proves unitàries
* Integració contínua

## Referències

* ↑ Scott Ambler, Pramod Sadalage Refactoring Databases: Evolutionary Database Design - Addison-Wesley Professional; 1st edition (March 3, 2006) - 384 p. - ISBN 978-0321774514
* ↑ Scott Ambler Catalog of Database Refactorings - Agile Data - URL: http://agiledata.org/essays/databaseRefactoringCatalog.html
* ↑ Струзік, В. А. Категорія рефакторинг доступу / В. А. Струзік // Комп’ютерні науки, інформаційні технології та системи управління : Міжнародна науково-технічна конференція студентів, аспірантів та молодих вчених, 27–29 листопада 2019 р. – Івано-Франківськ : Прикарпатський національний університет ім. Василя Стефаника, 2019. – С. 20-21. URL: http://dspace.nuft.edu.ua/jspui/handle/123456789/31516
* ↑ Струзік, В. А. Категорія рефакторинг доступу / В. А. Струзік, С. В. Грибков, В. В. Чобану // Наукові праці НУХТ. – Т. 26, № 2. – 2020. – С. 31–49. URL: http://dspace.nuft.edu.ua/jspui/handle/123456789/31515
* ↑ Vladislav Struzik, PhD Refactoring: yesterday, today, tomorrow. URL: https://medium.com/@struzik/refactoring-yesterday-today-tomorrow-7fc8c845cfb1