www.jorge-guerrero.com

Apuntes > Informática >Normalización de Bases de Datos

La Tercera Forma Normal (3FN)

cara0 Teoría:

R está en 3FN si y sólo si está en 2FN y todos los atributos no clave dependen de manera no transitiva de la clave primaria.

cara1 En la práctica:

Tenemos que conseguir que NO haya dependencias funcionales de la forma ClavePrimaria --> B -->...--> C. NO hay que permitir que se pueda llegar desde la clave primaria hasta un atributo C siguiendo las dependencias funcionales entre atributos intermedios. Esta son las relaciones que tenemos hasta ahora:

Lo que hacemos es buscar dependencias funcionales entre los atributos que no son clave primaria de una misma relación. Sólo tenemos esa característica en la tabla S, escribimos el diagrama de dependencias funcionales sólo para los atributos implicados:

diag2

Fig.2. Depedencias transitivas existentes.

Existe por tanto una dependencia transitiva, ya que si seguimos la flecha que parte de S# hasta ciudad podemos seguir hasta País.

cara2 El problema:

Las dependencias transitivas producen una serie de anomalías que afectan al rendimiento de la base de datos, éstas son:

cara3 La solución:

cara0 Teoría:

Teorema (Heath):

Sea R una relación con atributos (A,B,C) y con clave primaria (A) tal que B --> C, entonces la relación R puede descomponerse como:

R --> R1(A,B) y R2(B,C)

cara1 En la práctica:

Tal y como dice el teorema, si tenemos ClavePrimaria --> B --> C, creamos una nueva relación R1(B,C) y dejamos en la relación anterior R(ClavePrimaria,B). En nuestro caso tenemos S# --> ciudad --> país. Con lo que finalmente podemos dividir la relación en las siguientes tablas:

o bien en

Ambas descomposiciones están en 3FN, pero ¿cuál es la mejor opción?.

En el primer caso podemos introducir información sobre las ciudades sin tener que conocer información alguna sobre el proveedor. Ceuta es una ciudad española independientemente de que el proveedor S1 resida en ella o no. En el segundo caso no podemos introducir información del país sin conocer antes el proveedor, es más, si cambia un proveedor la actualización será más dificil. En general las operaciones son más complejas según la última descomposición.

El motivo de todo esto tiene un nombre y es INDEPENDENCIA. En el primer caso ambas relaciones son indipendientes la actualización en una no afecta en otra y viceversa. En general esta propiedad es más que desable por eso si tenermos varias opciones nos decantaremos por aquellas descomposiciones que sean independientes, sin embargo hay que hacer constar que muchas veces nos encontraremos con relaciones que no pueden ser descompuestas en otras que no sean dependientes. Existe un teorema que nos servirá para comprobar si dos relaciones, R1 y R2, resultantes de haber descompuesto R son independientes.

cara0 Teoría:

Teorema de Rissanen:

La descomposición en R1 y R2 de R es independiente si y sólo si:

  • Toda dependencia funcional en R se puede deducir lógicamente de las dependencias funcionales en R1 y R2.
  • Los atributos comunes de R1 y R2 componen una clave candidata de al menos una de las relaciones.

cara1 En la práctica:

cara4 Hazlo tu mismo:

Anterior [1] [2] [3] [4] [5] [6] Siguiente