La normalización tiene como objetivo obtener esquemas relacionales que cumplan
determinadas condiciones, a través de las formas normales.
Primera Forma Normal (1FN) fue introducida por Codd, en su primer trabajo. Es
una restricción inherente al modelo relacional por lo que su cumplimiento es obligatorio.
Consiste en la prohibición de que en una relación existan grupos repetitivos, es decir, un
atributo no puede tomar más de un valor del dominio subyacente.
Segunda Forma Normal (2FN), fue introducida por Codd. Una relación está en 2FN,
si además de estar en 1FN, todos los atributos que no forman parte de ninguna clave candidata
suministran información acerca de la clave completa.
Para la relación PRESTAMO( num_socio, nombre_socio, cod_libro, fec_prest,
editorial, país ) las claves candidatas son:
(num_socio, cod_libro) y (nombre_socio, cod_libro)
Se puede observar que ciertos atributos que no forman parte de las claves candidatas,
tal como editorial, constituye información acerca del libro, pero no acerca de la clave
completa. Luego, la relación préstamo no se encuentra en 2FN.
La solución es descomponer esta relación en las siguientes:
PRESTAMO1( num_socio, nombre_socio, cod_libro, fec_prest )
LIBRO( cod_libro, editorial, país )
En la relación PRESTAMO1, el único atributo que no forma parte de las claves
candidatas es fec_prest, pero suministra información acerca de la clave completa. Por lo que
está en 2FN.
La relación LIBRO, la clave es cod_libro, y los dos atributos: editorial y país
suministran información de la clave completa. Por lo tanto, está en 2FN.
OBS: Una relación que está formada por un único atributo esta en 2 FN.
Tercera Forma Normal (3FN), propuesta por Codd. Una relación está en 3FN, si
además de estar en 2FN, los atributos que no forman parte de ninguna clave candidata
facilitan información sólo acerca de la(s) clave(s) y no acerca de otros atributos.
En la relación PRESTAMO1, el atributo fec_prest facilita información acerca de las
claves, ya que no existen más atributos. Por lo que está en 3FN.
En la relación LIBRO, el atributo país entrega información acerca de la editorial que
publica el libro, por lo que no está en 3FN.
La solución es descomponerla en:
LIBRO1( cod_libro, editorial )
EDITORIAL( editorial, país ),
que están en 3FN, ya que todo atributo no clave facilita información acerca de la clave.
Forma Normal de Boycce y Codd (FNBC). La relación PRESTAMO1, que está en
3FN, todavía presenta anomalías, ya que num_socio y nombre_socio, se repiten
innecesariamente por cada cod_libro. Una relación está en FNBC si y solo si, el conocimiento
de las claves candidatas permite averiguar todas las interrelaciones existentes entre los datos
de la relación, o lo que es igual, las claves candidatas son los únicos descriptores sobre los
que se facilita información por cualquier otro atributo.
En la relación PRESTAMO1, num_socio es información acerca de nombre_socio y
viceversa. Ninguno de estos atributos son clave (aunque formen parte de la clave). Para
solucionarlo la descomponemos:
SOCIO( num_socio, nombre_socio )
PRESTAMO2( num_socio, cod_libro, fec_prest ), que están en FNBC.
Hasta ahora nuestro esquema relacional está compuesto por las siguientes relaciones en
FNBC:
LIBRO1( cod_libro, editorial )
EDITORIAL( editorial, país )
SOCIO( num_socio, nombre_socio )
PRESTAMO2( num_socio, cod_libro, fec_prest )