Forma Normal de Boyce-Codd
La Forma Normal de Boyce-Codd (o FNBC) es una forma normal utilizada en la normalización de bases de datos. Es una versión ligeramente más fuerte de la Tercera forma normal (3FN). La forma normal de Boyce-Codd requiere que no existan dependencias funcionales no triviales de los atributos que no sean un conjunto de la clave candidata. En una tabla en 3FN, todos los atributos dependen de una clave, de la clave completa y de ninguna otra cosa excepto de la clave (excluyendo dependencias triviales, como ). Se dice que una tabla está en FNBC si y solo si está en 3FN y cada dependencia funcional no trivial tiene una clave candidata como determinante. En términos menos formales, una tabla está en FNBC si está en 3FN y los únicos determinantes son claves candidatas.
Así mismo dentro de la formal normal
de Boyce Codd, podemos señalar algunos ejemplos
relacionado a dicha forma normal:
Consideremos una empresa donde un trabajador puede
trabajar en varios departamentos. En cada departamento hay varios
responsables, pero cada trabajador sólo tiene asignado
uno. Tendríamos una tabla con las columnas:IDTrabajador, IDDepartamento, IDResponsable
La única clave candidata es IDTrabajador (que será por tanto la clave primaria).
Si añadimos la limitación de que el responsable sólo puede serlo de un departamento, este detalle produce una dependencia funcional ya que: Responsable ? Departamento
Por lo tanto, hemos encontrado un determinante (IDResponsable) que sin embargo no es clave candidata. Por ello, esta tabla no está en FNBC. En este caso la redundancia ocurre por mala selección de clave. La repetición del par [IDDepartamento + IDResponsable] es innecesaria y evitable.
Solamente en casos raros una tabla en 3NF no satisface los requerimientos de la FNBC. Un ejemplo de tal tabla es (teniendo en cuenta que cada puede tener más de un tutor):
Otro ejemplo a observar es la tabla tutor- estudiante la cual tendremos como referencia la siguiente:
Referencia cruzada de
Tutor/Estudiante
|
||||||
ID Tutor
|
Número de seguro social
del tutor
|
ID Estudiante
|
||||
1078
|
088-51-0074
|
31850
|
||||
1078
|
088-51-0074
|
37921
|
||||
1293
|
096-77-4146
|
46224
|
||||
1480
|
072-21-2223
|
31850
|
El propósito de la tabla es mostrar qué tutores están asignados a qué . Las claves candidatas de la tabla son:
-
{ID Tutor, ID Estudiante}
-
{Número de seguro social del tutor, ID
Estudiante}
Por consiguiente tenemos otra
formulación con respecto a la tabla la cual consta de los
siguientes:
Una forma sencilla de comprobar si una relación
se encuentra en FNBC consiste en comprobar, además de que
esté en 3FN, lo siguiente:(1) Si no existen claves candidatas compuestas (con varios atributos), está en FNBC.
(2) Si existen varias claves candidatas compuestas y éstas tienen un elemento común, no está en FNBC.
En la tabla de ejemplo anterior existen dos claves candidatas y ambas comparten el atributo ID Estudiante, por lo tanto no está en FNBC.
Del mismo modo, Una tabla está en Cuarta Forma Normal o 4FN si está en FNBC y las únicas dependencias funcionales multivaluadas que existen son las dependencias funcionales de la clave con los atributos que no forman parte de la misma. Estas dependencias multivaluadas de la clave con los atributos que no forman parte de la misma son dependencias triviales, por lo que algunos autores dicen que no existen dependencias multivaluadas en 4FN. En base de datos se entiende por dependencia Multivaluada el caso en que en una tupla (X,Y,Z). se dice que Y es multidependiente de X (X ---> Y) si y sólo si el conjunto de valores de Y correspondiente a un par (X,Z) depende sólo del valor de X y es independiente del valor de Z.