www.jorge-guerrero.com

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

La Forma Normal de Boyce-Codd (FNBC)

cara0 Teoría:

Una relación R está en FNBC si y solo si todo determinante es una clave candidata.

def. Determinante. Un determinante es un atributo del que depende funcionalmente de manera completa algún otro atributo.

cara1 En la práctica:

La mayoría de las relaciones en 3FN estarán en FNBC. Para verificar que esto es así buscaremos todos los determinantes existentes en la relación así como todas las claves candidatas, comparamos ambos conjuntos y si encontramos que hay algún determinante que no resulta ser clave candidata podemos afirmar que no estamos en FNBC. Usualmente se considera aceptable tener relaciones que lleguen sólo hasta la FNBC.

El conjunto de relaciones obtenido hasta ahora está en 3FN y también en FNBC, de hecho es lo que suele ocurrir en la mayoría de los casos. Sin embargo, para ver una resolución práctica, consideraremos el caso de la tabla SP inicial con ligeras modificaciones:

En primer lugar realizamos el diagrama de dependencias correspondiente:

diag3

Fig.3. Diagrama de dependencias funcionales para la FNBC.

Comprobamos que la relación está en 1FN, todos los atributos son atómicos. También está en 2FN ya que no hay dependencias funcionalmente completas entre atributos que no sean clave ( formen parte de la clave). Y finalmente se verifica que no hay ningún atributo que dependa de forma transitiva de la clave Primaria, luego está en 3FN.

Ahora queda comprobar si está en FNBC, según la definición habrá que verificar si todos los determinantes son clave candidata, vemos que no es así, S# y P# son determinantes y no son clave candidata, luego no está en FNBC.

cara2 El problema:

La definición de la 3FN no produce diseños satisfactorios cuando se dan las siguientes condiciones, o lo que es lo mismo, cuando una relación NO ESTE EN FNBC concurrirán las siguientes circunstancias:

cara3 La solución:

cara1 En la práctica:

No hay un teorema sobre la división de la relación, el motivo es que no se puede asegurar que al descomponer una relación en dos para conseguir la FNBC el significado de las relaciones obtenidas se corresponda semánticamente a lo que representa la relación inicial. En otras palabras, podemos meter la pata al descomponer ya que puede que perdamos parte de la semántica de la relación anterior.

En el caso que nos ocupa podemos perfectamente dividir la relación en dos sin perder significado alguno.

El resultado sería:

o bien esta otra descomposición:

Ambas están en FNBC.

Como posible criterio para seleccionar una u otra, en la práctica podemos escoger aquella distribución que “ocupe menos espacio“. Supongamos que en nuestro caso el atributo nombre tiene hasta 50 caracteres (no variables, fijos) mientras que S# es sólo un entero, parecería más razonable tomar la primera descomposición como solución ya que las tuplas de la tabla SP son más pequeñas que las de la misma tabla en la otra descomposición.

En situaciones normales podíamos darnos por satisfechos con haber llegado hasta esta descomposición, sin embargo seguiremos viendo algunos casos excepcionales para comprender la cuarta y la quinta forma normal.

cara4 Hazlo tu mismo:

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