Sunteți pe pagina 1din 8

Forma normal de Boyce-Codd

La Forma Normal de Boyce-Codd (o FNBC) es una forma normal utilizada en


la normalizacin de bases de datos. Es una versin ligeramente ms 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 trminos menos formales, una tabla est en
FNBC si est en 3FN y los nicos determinantes son claves candidatas.

ndice
[ocultar]

1Ejemplo
2Otra formulacin
3Referencias
4Lectura adicional
5Vase tambin
6Enlaces externos

Ejemplo[editar]
Consideremos una empresa donde un trabajador puede trabajar en varios departamentos. En
cada departamento hay varios responsables, pero cada trabajador slo tiene asignado uno.
Tendramos una tabla con las columnas:
IDTrabajador, IDDepartamento, IDResponsable
La nica clave candidata es IDTrabajador (que ser por tanto la clave primaria).
Si aadimos la limitacin de que el responsable slo 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
seleccin de clave. La repeticin 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 estudiante puede tener ms de un tutor):

Referencia cruzada de Tutor/Estudiante

ID Tutor Nmero 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 propsito de la tabla es mostrar qu tutores estn asignados a qu estudiantes. Las claves


candidatas de la tabla son:

{ID Tutor, ID Estudiante}


{Nmero de seguro social del tutor, ID Estudiante}

Otra formulacin[editar]
Una forma sencilla de comprobar si una relacin se encuentra en FNBC consiste en
comprobar, adems 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 comn,
puede no estar en FNBC. Slo si, para cada dependencia funcional en la relacin, el
determinante es una clave candidata, estar en FNBC.

Conceptos previos:

Tipos de claves (llaves)

Llave primaria, clave candidata y superclave se refieren a un atributo o un conjunto de


atributos que permiten identificar unvocamente un registro. Es decir que no existe en
esa relacin un registro que tenga el mismo valor en ese (esos) atributo(s).

Superclave: (llave compuesta) es un conjunto de uno o ms atributos que,


tomados colectivamente, permiten identificar unvocamente cada registro de la
tabla. Es un subconjunto de atributos que permite distinguir de forma nica cada
una de las tuplas. Si se une otro atributo al subconjunto anterior, el resultado
seguir siendo una superclave.

Ejemplo

El atributo idCliente de la relacin Cliente es suficiente para distinguir una fila de


un Cliente de las otras. As, idCliente es una superclave. Anlogamente, la combinacin
de nombre y idCliente es una superclave del conjunto de relacin Cliente. El
atributonombre de cliente no es una superclave, porque varias personas podran tener el
mismo nombre.

El concepto de una superclave no es suficiente para lo que aqu se propone, ya que, como
se ha visto, una superclave puede contener atributos innecesarios. Si K es una superclave,
entonces tambin lo es cualquier superconjunto de K. A menudo interesan las
superclaves tales que los subconjuntos propios de ellas no son superclave.
Tales superclaves mnimas se llaman claves candidatas.

Clave candidata: Cuando una superclave, se reduce al mnimo de atributos que la


componen, pero an as sirve para identificar la tupla, entonces sta pasa a ser
una clave candidata. La clave (o llave) candidata es solo a nivel conceptual. En una
relacin ms de un atributo podra llegar a ser llave primaria, pues pueden
identificar a cada tupla, es decir que no existen dos valores para ese atributo que
sean iguales. Dichos atributos que se proponen a reconocer una tupla, se
denominan clave candidataporque son candidatos a ser clave primaria.

Ejemplo

Es posible que conjuntos distintos de atributos pudieran servir como clave candidata.
Supngase que una combinacin de nombre ydireccin es suficiente para distinguir
entre los miembros del conjunto de la relacin Cliente. Entonces, los
conjuntos {idCliente} y{nombre, calle} son claves candidatas. Aunque los
atributos idCliente y nombre juntos puedan distinguir las tuplas de Cliente, su
combinacin no forma una clave candidata, ya que el atributo idCliente por s solo es una
clave candidata.

Clave primaria: Una vez que se elige cual de los atributos de la clave candidata
ser el que permitir identificar cada registro en una tabla, dicho atributo se pasa
a llamar llave primaria. Se puede decir que la clave primaria es una clave
candidata, elegida por el diseador de la base de datos, para identificar
unvocamente las tuplas.

Nota

Otro concepto que se utilizar es el de dependencia funcional(DF) que se puede repasar en


la Lectura16

Forma normal Boyce-Codd


La definicin original de la 3FN no trataba satisfactoriamente el caso de una relacin que
tena dos o ms claves candidatas compuestas y que tenan al menos un atributo en
comn. Es por esto que se crea la forma normal de Boyce-codd(FNBC), que es una forma
normal estrictamente ms slida que la 3FN, la cual atiende los caso que no cubre
correctamente la 3FN.

Nota

No es tan frecuente encontrar relaciones con ms de una claves candidatas compuestas y con
al menos un atributo en comn. Para una relacin en donde no suceden, las 3FN y FNBC son
equivalentes.

Definicin

Un esquema de relacin R est en FNBC si, para todas las dependencias funcionales de
la forma A->B, donde A y B son subconjuntos de R, se cumplen las siguientes condiciones:

A->B es una dependencia funcional (DF) trivial: (B es subconjunto de A). Entonces


se mantiene la condicin de FNBC, debido a que slo una DF no trivial puede violar
esta condicin.
A es una superclave del esquema R: Si se tiene A -> B, pero no B-> A, entonces A
es la superclave y cada dependencia no trivial contiene A en la izquierda, por tanto
no hay violacin a la condicin FNBC.
Toda dependencia funcional trivial tiene una clave candidata como su
determinante.

Un diseo de base de datos est en FNBC si cada miembro del conjunto de esquemas de
relacin que constituye el diseo est en FNBC.

Vale la pena sealar que la definicin FNBC es conceptualmente ms simple que la


definicin anterior de la 3FN, ya que no hace referencias explcitas a la primera y segunda
formas normales como tales, ni al concepto de dependencia transitiva. Adems, aunque
(como ya indicamos) la FNBC es estrictamente ms slida que la 3FN, se sigue dando el
caso que cualquier relacin dada puede descomponerse sin prdida en una coleccin
equivalente de relaciones FNBC.

Descomposicin para lograr la FNBC

En algunas ocasiones con la eleccin de descomposiciones adecuadas, se puede romper


cualquier esquema de relacin en una coleccin de subconjuntos de sus atributos con
las siguientes propiedades importantes:

1. Estos subconjuntos son los esquemas de relaciones en FNBC.


2. Los datos de la relacin original se representa fielmente por los datos en las
relaciones resultantes de la descomposicin. A grandes rasgos, tenemos que ser
capaces de reconstruir la relacin original con exactitud a partir de las relaciones
descompuestas.

Lo anterior sugiere que tal vez lo nico que se debe hacer es romper un esquema de
relacin en subconjuntos de dos atributos, y el resultado estar en FNBC. Sin embargo,
tal descomposicin arbitraria puede no satisfacer la condicin (2). De hecho, se debe ser
ms cuidadosos y utilizar el DF debido a guiar la descomposicin. La estrategia de
descomposicin que vamos a seguir es buscar un DF trivial [Math Processing
Error]A1A2...An>B1B2...Bm que viola FNBC, es decir, [Math Processing
Error]A1,A2,...,An no es una superclave. Vamos a aadir a la derecha tantos atributos
como son funcionalmente determinado por [Math Processing Error]A1,A2,...,An . Este
paso no es obligatorio, pero a menudo se reduce la cantidad de trabajo realizado, y lo
vamos a incluir en nuestro algoritmo. La Figura que se muestra a continuacin ilustra
cmo los atributos se dividen en dos esquemas de relacin que se superponen. Uno es
de todos los atributos involucrados en la violacin de DF, y el otro es el lado izquierdo
de la DF adems de todos los atributos que no participan en la DF, es decir, todos los
atributos excepto los Bs que no son As.

Ejemplo 1
Pelcula:

ttulo | ao | duracin | gnero | director | actor


--------------+------+----------+--------+-----------------+-------------
Forrest Gump | 1994 | 142 | Drama | Robert Zemeckis | Tom Hanks
Forrest Gump | 1994 | 142 | Drama | Robert Zemeckis | Robin Wright
Forrest Gump | 1994 | 142 | Drama | Robert Zemeckis | Gary Sinise
The Godfather | 1972 | 175 | Crime | Mario Puzo | Marlon Brando
Matrix | 1999 | 136 | Action | Wachowski | Keanu Reeves
Matrix | 1999 | 136 | Action | Wachowski | Laurence Fishburne

La Relacin Pelculas no es en FNBC. Para ver por qu, primero tenemos que determinar
qu conjuntos de atributos son claves. Nuestra hiptesis ser que {ttulo, ao, actor} son
en conjunto una clave, para demostrar que es una clave en primer lugar, tenemos que
verificar que identifica inequvocamente una tupla. Para ello supongamos que dos tuplas
tienen igual valor en estos tres atributos:{ttulo, ao, actor}. Al ser la misma pelcula, los
otros atributos {duracin, gnero, director} sern iguales tambin. As, dos tuplas
diferentes no pueden concordar en {ttulo, ao, actor} pues en realidad sera la misma
tupla.

Ahora, debemos argumentar que ningn subconjunto propio de {ttulo, ao,


actor} determina funcionalmente a todos los dems atributos. Primero se observa que el
ttulo y el ao no determinan a actor, porque muchas pelculas tienen ms de un actor.
Por lo tanto, {ttulo, ao} no es una clave. {ao, actor} no es una clave, porque podramos
tener un actor en dos pelculas en el mismo ao, por lo tanto: actor ao -> ttulo no
es un DF. Asimismo, sostenemos que {ttulo, actor} no es una clave, porque dos pelculas
con el mismo ttulo, realizada en diferentes aos, de vez en cuando tienen un actor en
comn.

Como {ttulo, ao, actor} es una clave, cualquier conjunto de atributos que contienen
estos tres es una superclave. Los mismos argumentos anteriores se pueden utilizar para
explicar por qu no existe un conjunto de atributos que no incluya a los tres
atributos{ttulo, ao, actor} que pudiera ser una superclave. Por lo tanto, afirmamos
que {ttulo, ao, actor} es la nica clave para Pelculas.

Sin embargo, tenga en cuenta:

ttulo ao-> duracin gnero actor

Desafortunadamente, el lado izquierdo de la anterior DF no es una superclave. En


particular, se sabe que el ttulo y el ao no determinan funcionalmente el atributo actor.
Por lo tanto, la existencia de esta DF viola la condicin FNBC y nos dice que Pelculas no
est en FNBC.

Por otro lado:

Pelculas2:

ttulo | ao | duracin | gnero | director


--------------+------+----------+--------+-----------------
Forrest Gump | 1994 | 142 | Drama | Robert Zemeckis
The Godfather | 1972 | 175 | Crime | Mario Puzo
Matrix | 1999 | 136 | Action | Wachowski

ao ttulo -> duracin gnero director

La nica clave para Pelculas2 es {ttulo, ao}. Por otra parte, la nica DF no trivial debe
tener por lo menos ttulo y ao en el lado izquierdo, y por lo tanto su lado izquierdo debe
ser superclave. Por lo tanto, Pelculas2 est en FNBC.
Ejemplo 2

Se tiene un esquema de relacin y sus respectivas dependencias funcionales:

cliente = (nombreC, direccin, ciudadC)

nombreC -> direccin ciudad

sucursal = (nombreS, activo,ciudadS)

nombreS -> activo ciudadS

Puede afirmarse que cliente est en FNBC. Obsrvese que una clave candidata para la
relacin es nombreC. Las nicas dependencias funcionales no triviales que se cumplen
en cliente tienen a nombreC a la izquierda de la flecha. Dado que nombreC es una clave
candidata, las dependencias funcionales con nombreC en la parte izquierda no violan la
definicin de FNBC. De manera parecida, se puede demostrar fcilmente que relacin
sucursal est en FNBC.

Ejemplo 3
Clases:

ID | asignatura | profesor
----+------------+----------
121 | Lenguaje | Paul
121 | Matemticas| David
345 | Lenguaje | Paul
567 | Matemticas| Robert
567 | Lenguaje | Julia
563 | Matemticas| Robert

La tabla est en 3FN pues no posee dependencias transitivas, pero no est en forma de
Boyce - Codd, ya que (ID, asignatura)->profesor y profesor->asignatura. En este
caso la redundancia ocurre por mala seleccin de clave. La redundancia de la asignatura
es completamente evitable. La solucin sera:

ID | profesor
----+----------
121 | Paul
121 | David
345 | Paul
567 | Robert
567 | Julia
563 | Robert

asignatura | profesor
-----------+----------
Lenguaje | Paul
Matemticas| David
Matemticas| Robert
Lenguaje | Julia

En las formas de Boyce-Codd hay que tener cuidado al descomponer ya que se podra
perder informacin por una mala descomposicin.

S-ar putea să vă placă și