Abstract:
La normalización se podría definir de una manera sencilla como el proceso de organizar y estructurar los datos de forma que se minimice la redundancia. Este proceso se basa en un conjunto de pautas, las reglas de normalización, que disminuyen el riesgo de tener un diseño de base de datos defectuoso. En cierta medida, se podría establecer un paralelismo entre la normalización y otros principios de diseño como la programación defensiva o el fail early. Estas reglas se aplican al modelo relacional de la base de datos, obtenido (si eres disciplinado) a partir del modelo entidad-relación. La verdad es que son bastante sencillas de entender y aplicar, aunque a veces parece que la percepción que se tiene respecto a ellas es que son complejas y algo enrevesadas. Lo habitual es normalizar las tablas de tu base de datos (existe cierto consenso en considerar que una tabla está normalizada cuando se encuentra en la 3NF o superior) y a partir de ahí ir desnormalizando de forma selectiva conforme se necesite por cuestiones de rendimiento.
Description:
Normalization could be simply defined as the process of organizing and structuring data in a way that minimizes redundancy. This process is based on a set of guidelines, the normalization rules, which decrease the risk of having a flawed database design. To some extent, a parallel could be drawn between normalization and other design principles such as defensive programming or fail early. These rules apply to the relational model of the database, obtained (if you are disciplined) from the entity-relational model. The truth is that they are quite simple to understand and apply, although sometimes it seems that the perception of them is that they are complex and somewhat convoluted. The usual is to normalize the tables of your database (there is a certain consensus in considering that a table is normalized when it is at 3NF or higher) and from there to denormalize selectively as needed for performance reasons.