Está en la página 1de 5

NORMALIZACION DE BASE DE DATOS –

La normalización de bases de datos es un proceso que consiste en


designar y aplicar una serie de reglas a las relaciones
obtenidas tras el paso del modelo entidad-relación al modelo
relacional.
Las bases de datos relacionales se normalizan para:

 Evitar la redundancia de los datos.


 Disminuir problemas de actualización de los datos en las
tablas.
 Proteger la integridad de datos.

En el modelo relacional es frecuente llamar tabla a una


relación, aunque para que una tabla sea considerada como una
relación tiene que cumplir con algunas restricciones:

 Cada tabla debe tener su nombre único.


 No puede haber dos filas iguales. No se permiten los
duplicados.
 Todos los datos en una columna deben ser del mismo tipo.

Primera forma normal, 1FN


No hay grupos repetidos de columnas, ni una columna guarda
múltiples valores. Por ejemplo, si de una persona queremos
guardar varios teléfonos deberíamos crear una tabla de teléfonos
y relacionarla con la tabla de usuarios.
En el caso del ejemplo los grupos repetidos de columnas implica
que de una persona solo se pueden guardar hasta tres teléfonos
como máximo, han de crearse las columnas por adelantado aunque
no se usen y si hay que actualizar un telefono no sabríamos en
que campo de la tabla está obligando a realizar una consulta de
actualización en los tres campos.
Las columnas con múltiples valores son difíciles de actualizar
con sentencias SQL por el formato que emplea la columna para
guardar el dato, en este caso utilizando una barra como
separador.
1 -- Grupos reptidos de columnas
2 Persona (id_persona, nombre, teléfono1, teléfono2, telefono3)
3 1, Maria, 555123456, 555234567, 555345678
4
5 -- Una columna con múltiples valores
6 Persona (id_persona, nombre, teléfonos )
7 1, María, 555123456/555234567/555345678
8
9 -- 1FN
10 Usuario (id_persona, nombre) Teléfono (persona_id, telefono)
11 1, María 1, 555123456
12 1, 555123456
13 1, 555234567
14 1, 555345678

Segunda forma normal, 2FN


Cada columna de una tabla está relacionada con todas las
columnas de la clave primaria y no solo por una combinación de
parte de la clave primaria. En este caso en que se guarda las
las persona que trabajan en una empresa, cumple la 1FN al no
tener columnas repetidas ni múltiples valores en una columna
pero no cumple la 2FN estando la clave primaria formada por los
campos id_persona e id_empresa y el
campo direccion_empresa siendo solo dependiente del
campo id_empresa.
En este caso el problema además de contener posibles
inconsistencias en los valores de las direcciones es que si se
quisiera actualizar la dirección de una empresa habría que
actualizar todos los registros de los empleados y empresa.
1 -- Campos dependientes de un subconjunto de la clave primaria
2 Persona (id_persona, id_empresa, direccion_empresa, puesto, horas
3 semanales)
4 1, 1, C\ Rue el Percebe, jardinero,
5 40
6 2, 1, C\ Rue el Percebe, barrendero,
7 35
8 3, 1, C\ Rue el Percebe, jardinero,
9 40
10
11 -- 2 FN
12 Empresa (id_persona, id_empresa, puesto, horas semanales)
13 1, 1, jardinero, 40
14 2, 1, barrendero, 35
3, 1, jardienro, 40
Dirección (id_empresa, dirección)
1, C\ Rue el Percebe

Tercera forma normal, 3FN


Cada columna de una tabla está relacionada directamente con las
columnas de la clave primaria, no de forma transitiva a través
de otro campo. En el mismo caso anterior que cumple la 2FN no
cumple la tercera si el campo horas semanales depende del
puesto.
Podría haber inconsistenias de datos si dos personas tuviesen
diferentes horas semanales para el mismo puesto.

1 -- 3 FN
2 Empresa (id_persona, id_empresa, puesto)
3 1, 1, jardinero
4 2, 1,
5 barrendero
6 3, 1, jardinero
7
8 Puesto (puesto, horas semanales)
9 jardinero, 40
barrendero, 35
view raw3fn.txt

Forma normal de Boyce-Codd, BCNF


Una tabla está en BCNF y está en 3FN y todos los campos tienen
como deteminante (dependen) la clave primaria. En un caso en que
un trabajador trabaja en varias empresas con un responsable
asignado e introduciendo la restricción de que en una empresa
solo hay un responsable para todos los trabajadores, el
campo id_responsable tiene una dependencia sobre el
campo id_empresa que no es clave primaria.
1 Trabajador (id_persona, id_empresa, id_responsable)
2 1, 1, 2
3 2, 1, 3
4
5 -- BCFN
6 Trabajador (id_persona, id_empresa)
7 1, 1
8 2, 1
9
10 Empresa (id_empresa, id_responsable)
11 1, 3
Cuarta forma normal, 4FN
No existen dos o más relaciones independientes en una misma
tabla. En una relación que guarde las empresas de un trabajador
y las localidades en las que trabaja, si las empresas y las
localidades son independientes hay redundancia de datos por
guardar para cada empresa cada una de las localidades del
trabajador. Aplicando la 4FN en vez de utilizar 6 filas se
utilizan 2 y 3 filas en las tablas Trabajador y Localidad.
1 Zona (id_persona, id_empresa, id_localidad)
2 1, 1, 1
3 1, 1, 2
4 1, 1, 3
5 1, 2, 1
6 1, 2, 2
7 1, 2, 3
8
9 -- 4FN
10 Trabajador (id_persona, id_empresa)
11 1, 1
12 1, 2
13
14 Localidad (id_persona, id_localidad)
15 1, 1
16 1, 2
17 1, 3

view raw4fn.txt

Quinta forma normal, 5FN


En el mismo caso anterior si se intodujese una realación entre
empresa y localidades en las que trabaja y la condición de que
es cierto que las localidades de un trabajador están incluídas
en el conjunto de las localidades de una empresa si no se
aplicase la 5FN y un trabajador empezase a trabajar en una nueva
empresa habría que insertar una fila nueva en la tabla Zona por
cada localidad del trabajador.
Si el trabajador 1 empezase a trabajar en la empresa 2 sin
aplicar la 5FN habría que insertar dos nuevas filas en la
trabla Zona. Aplicando la 5FN bastaría con insertar una en la
tabla TrabajadorEmpresa (id_persona: 1, id_empresa: 2).
1 Zona (id_persona, id_empresa, id_localidad)
2 1, 1, 1
3 1, 1, 2
4 -- Nuevas filas si 1 empezase a trabajar en la empresa 2
5 1, 2, 1
6 1, 2, 2
7
8
9 -- 5FN
10 TrabajadorLocalidad (id_persona, id_localidad)
11 1, 1
12 1, 2
13 1, 3
14
15 TrabajadorEmpresa (id_persona, id_empresa)
16 1, 1
17
18 EmpresaLocalidad (id_persona, id_localidad)
19 1, 1
20 1, 2
21 1, 3
22 2, 1
23 2, 2
24 2, 3

view raw5fn.txt

En resumen
La normalización es una técnica que se utiliza para crear
relaciones lógicas apropiadas entre tablas de una base de datos.
Ayuda a prevenir errores lógicos en la manipulación de datos. La
normalización facilita también agregar nuevas columnas sin
romper el esquema actual ni las relaciones. Existen varios
niveles de normalización: Primera Forma Normal, Segunda Forma
Normal, Tercera Forma Normal, Forma Normal Boyce-Codd, Cuarta
Forma Normal, Quinta Forma Normal o Forma Normal de Proyección-
Unión, Forma Normal de Proyección-Unión Fuerte, Forma Normal de
Proyección-Unión Extra Fuerte y Forma Normal de Clave de
Dominio. Cada nuevo nivel o forma nos acerca más a hacer una
base de datos verdaderamente relacional. Se discutieron las
primeras tres formas. Éstas proveen suficiente nivel de
normalización para cumplir con las necesidades de la mayoría de
las bases de datos. Normalizar demasiado puede conducir a tener
una base de datos ineficiente y hacer a su esquema demasiado
complejo para trabajar. Un balance apropiado de sentido común y
práctico puede ayudarnos a decidir cuándo normalizar

También podría gustarte