Skip to content

7 Normalización

Introducción

El diseño de una BD relacional se puede realizar aplicando al mundo real, en una primera fase, un modelo como el modelo E/R, a fin de obtener un esquema conceptual; en una segunda fase, se transforma dicho esquema al modelo relacional mediante las correspondientes reglas de transformación.

También es posible, aunque quizás menos recomendable, obtener el esquema relacional sin realizar ese paso intermedio que es el esquema conceptual. En ambos casos, es conveniente (obligatorio en el modelo relacional directo) aplicar un conjunto de reglas, conocidas como Teoría de normalización, que nos permiten asegurar que un esquema relacional cumple unas ciertas propiedades, evitando:

  • La redundancia de los datos: repetición de datos en un sistema.
  • Anomalías de actualización: inconsistencias de los datos como resultado de datos redundantes y actualizaciones parciales.
  • Anomalías de borrado: pérdidas no intencionadas de datos debido a que se han borrado otros datos.
  • Anomalías de inserción: imposibilidad de adicionar datos en la base de datos debido a la ausencia de otros datos.

En la práctica, si la BD se ha diseñado haciendo uso de modelos semánticos como el modelo E/R no suele ser necesaria la normalización. Por otro lado si nos proporcionan una base de datos creada sin realizar un diseño previo, es muy probable que necesitemos normalizar.

En la teoría de bases de datos relacionales, las formas normales (FN) proporcionan los criterios para determinar el grado de vulnerabilidad de una tabla a inconsistencias y anomalías lógicas. Cuanto más alta sea la forma normal aplicable a una tabla, menos vulnerable será a inconsistencias y anomalías. Edgar F. Codd originalmente definió las tres primeras formas normales (1FN, 2FN, y 3FN) en 1970. Estas formas normales se han resumido como requiriendo que todos los atributos sean atómicos, dependan de la clave completa y en forma direct a (no transitiva). La forma normal de Boyce-Codd (FNBC) fue introducida en 1974 por los dos autores que aparecen en su denominación. Las cuarta y quinta formas normales (4FN y 5FN) se ocupan específicamente de la representación de las relaciones muchos a muchos y uno a muchos entre los atributos y fueron introducidas por Fagin en 1977 y 1979 respectivamente.Cada forma normal incluye a las anteriores.

Figura 46 - Normalización

Figura 46 - Normalización

Antes de dar los conceptos de formas normales veamos unas definiciones previas:

  • Dependencia funcional: A → B, representa que B es funcionalmente dependiente de A. Para un valor de A siempre aparece un valor de B. Ejemplo: Si A es el D.N.I., y B el Nombre, está claro que para un número de D.N.I, siempre aparece el mismo nombre de titular.
  • Dependencia funcional completa: A → B, si B depende de A en su totalidad. Ejemplo: Tiene sentido plantearse este tipo de dependencia cuando A está compuesto por más de un atributo. Por ejemplo, supongamos que A corresponde al atributo compuesto: D.N.I._Empleado + Cod._Dpto. y B es Nombre_Dpto. En este caso B depende del Cod_Dpto., pero no del D.N.I._Empleado. Por tanto no habría dependencia funcional completa.
  • Dependencia transitiva: A→B→C. Si A→B y B→C, Entonces decimos que C depende de forma transitiva de A. Ejemplo: Sea A el D.N.I. de un alumno, B la localidad en la que vive y C la provincia. Es un caso de dependencia transitiva A→ B → C.
  • Determinante funcional: todo atributo, o conjunto de ellos, de los que depende algún otro atributo. Ejemplo: El D.N.I. es un determinante funcional pues atributos como nombre, dirección, localidad, etc, dependen de él.
  • Dependencia multivaluada: A→→B. Son un tipo de dependencias en las que un determinante funcional no implica un único valor, sino un conjunto de ellos. Un valor de A siempre implica varios valores de B. Ejemplo: CursoBachillerato →→ Modalidad. Para primer curso siempre va a aparecer en el campo Modalidad uno de los siguientes valores: Ciencias, Humanidades/Ciencias Sociales o Artes. Igual para segundo curso.

Primera Forma Normal (1FN)

Una Relación está en 1FN si y sólo si cada atributo es atómico.

DNI Nombre Curso FechaMatricula Tutor LocalidadAlumno ProvinciaAlumno Teléfonos
1111111A Eva 1º ESO-A 01-julio-17 Isabel Écija Sevilla 6601234321
2222222B Ana 1º ESO-A 09-julio-17 Isabel Écija Sevilla 660345678
660333222
660234567
3333333C Susana 1º ESO-B 11-julio-17 Roberto Écija Sevilla
4444444D Juan 2º ESO-A 05-julio-17 Federico El Villar Córdoba
5555555E José 2º ESO-A 02-julio-17 Federico El Villar Córdoba 660111222
660111333

Esta tabla no está en 1FN puesto que el campo Teléfonos contiene varios datos dentro de una misma celda y por tanto no es un campo cuyos valores sean atómicos.

DNI Nombre Curso FechaMatricula Tutor LocalidadAlumno ProvinciaAlumno
1111111A Eva 1º ESO-A 01-julio-17 Isabel Écija Sevilla
2222222B Ana 1º ESO-A 09-julio-17 Isabel Écija Sevilla
3333333C Susana 1º ESO-B 11-julio-17 Roberto Écija Sevilla
4444444D Juan 2º ESO-A 05-julio-17 Federico El Villar Córdoba
5555555E José 2º ESO-A 02-julio-17 Federico El Villar Córdoba
DNI Teléfonos
1111111A 6601234321
2222222B 660345678
2222222C 660333222
2222222C 660333222
5555555E 660111222
5555555E 660111333

Segunda Forma Normal (2FN)

Una Relación esta en 2FN si y sólo si está en 1FN y todos los atributos que no forman parte de la Clave Principal tienen dependencia funcional completa de ella.

DNI Nombre Curso FechaMatricula Tutor LocalidadAlumno ProvinciaAlumno
1111111A Eva 1º ESO-A 01-julio-17 Isabel Écija Sevilla
2222222B Ana 1º ESO-A 09-julio-17 Isabel Écija Sevilla
3333333C Susana 1º ESO-B 11-julio-17 Roberto Écija Sevilla
4444444D Juan 2º ESO-A 05-julio-17 Federico El Villar Córdoba
5555555E José 2º ESO-A 02-julio-17 Federico El Villar Córdoba

Vamos a examinar las dependencias funcionales. El gráfico que las representa es el siguiente:

Figura 47 - Dependencias funcionales

Figura 47 - Dependencias funcionales

  • Siempre que aparece un DNI aparecerá el Nombre correspondiente y la LocalidadAlumno correspondiente. Por tanto DNI → Nombre y DNI → LocalidadAlumno. Por otro lado siempre que aparece un Curso aparecerá el Tutor correspondiente. Por tanto Curso → Tutor. Los atributos Nombre y LocalidadAlumno no dependen funcionalmente de Curso, y el atributo Tutor no depende funcionalmente de DNI.
  • El único atributo que sí depende de forma completa de la clave compuesta DNI y Curso es FechaMatrícula: (DNI,Curso) → FechaMatrícula.

A la hora de establecer la Clave Primaria de una tabla debemos escoger un atributo o conjunto de ellos de los que dependan funcionalmente el resto de atributos. Además debe ser una dependencia funcional completa. Si escogemos DNI como clave primaria, tenemos un atributo (Tutor) que no depende funcionalmente de él. Si escogemos Curso como clave primaria, tenemos otros atributos que no dependen de él.

Si escogemos la combinación (DNI, Curso) como clave primaria, entonces sí tenemos todo el resto de atributos con dependencia funcional respecto a esta clave. Pero es una dependencia parcial, no total (salvo FechaMatrícula, donde sí existe dependencia completa). Por tanto esta tabla no está en 2FN. La solución sería la siguiente:

DNI Nombre Localidad Provincia
1111111A Eva Écija Sevilla
2222222B Ana Écija Sevilla
3333333C Susana Écija Sevilla
4444444D Juan El Villar Córdoba
5555555E José El Villar Córdoba
Curso Tutor
1º ESO A Isabel
1º ESO B Roberto
2º ESO A Federico
DNI Curso FechaMatricula
1111111A 1º ESO A 01-julio-2017
2222222B 1º ESO A 09-julio-2017
3333333C 1º ESO B 11-julio-2017
4444444D 2º ESO A 05-julio-2017
5555555E 2º ESO A 02-julio-2017

Tercera Forma Normal (3FN)

Una Relación esta en 3FN si y sólo si está en 2FN y no existen dependencias transitivas. Todas las dependencias funcionales deben ser respecto a la clave principal.

Ejemplo: Seguimos con el ejemplo anterior. Trabajaremos con la siguiente tabla:

DNI Nombre Localidad Provincia
1111111A Eva Écija Sevilla
2222222B Ana Écija Sevilla
3333333C Susana Écija Sevilla
4444444D Juan El Villar Córdoba
5555555E José El Villar Córdoba

Las dependencias funcionales existentes son las siguientes. Como podemos observar existe una dependencia funcional transitiva: DNI → Localidad → Provincia

Figura 48 - Dependencias Transitivas

Figura 48 - Dependencias Transitivas

Para que la tabla esté en 3FN, no pueden existir dependencias funcionales transitivas. Para solucionar el problema deberemos crear una nueva tabla. El resultado es:

DNI Nombre Localidad
1111111A Eva Écija
2222222B Ana Écija
3333333C Susana Écija
4444444D Juan El Villar
5555555E José El Villar
Localidad Provincia
Écija Sevilla
Écija Sevilla
Écija Sevilla
El Villar Córdoba
El Villar Córdoba
Resultado final
DNI Nombre Curso FechaMatricula Tutor LocalidadAlumno ProvinciaAlumno Teléfonos
1111111A Eva 1º ESO-A 01-julio-17 Isabel Écija Sevilla 6601234321
2222222B Ana 1º ESO-A 09-julio-17 Isabel Écija Sevilla 660345678
660333222
660234567
3333333C Susana 1º ESO-B 11-julio-17 Roberto Écija Sevilla
4444444D Juan 2º ESO-A 05-julio-17 Federico El Villar Córdoba
5555555E José 2º ESO-A 02-julio-17 Federico El Villar Córdoba 660111222
660111333
DNI Nombre Localidad
1111111A Eva Écija
2222222B Ana Écija
3333333C Susana Écija
4444444D Juan El Villar
5555555E José El Villar
Localidad Provincia
Écija Sevilla
Écija Sevilla
Écija Sevilla
El Villar Córdoba
El Villar Córdoba
DNI Teléfonos
1111111A 6601234321
2222222B 660345678
2222222C 660333222
2222222C 660333222
5555555E 660111222
5555555E 660111333
Curso Tutor
1º ESO A Isabel
1º ESO B Roberto
2º ESO A Federico
DNI Curso FechaMatricula
1111111A 1º ESO A 01-julio-2017
2222222B 1º ESO A 09-julio-2017
3333333C 1º ESO B 11-julio-2017
4444444D 2º ESO A 05-julio-2017
5555555E 2º ESO A 02-julio-2017