Site hosted by Angelfire.com: Build your free website today!


Tercera Forma Normal


 

En el ejemplo anterior, una tabla en la Primera Forma Normal (ESTUDIANTES-CLASES) fue descompuesta en dos tablas en la Segunda Forma Normal, con el fin de eliminar los problemas asociados con la redundancia de datos y el comportamiento anómalo. Sin embargo, algunas tablas en la Segunda Forma Normal pueden presentar aún problemas de redundancia y anomalías. Estos problemas pueden ser eliminados mediante transformaciones que den como resultado tablas que se dice están en la Tercera Forma Normal. El ejemplo siguiente ilustra este procedimiento.
 

Adición de datos de los profesores

Supongamos que queremos modificar el diseño de la base de datos implícito en las tablas ESTUDIANTE y ESTUDlANTE-CLASE, con el fin de incluir los nombres y oficinas de los profesores de cada una de las clases. Como la tabla ESTUDIANTE-CLASE contiene ya datos acerca de las clases, parece que sería el lugar más indicado para incluir información acerca de los profesores. Conseguimos nuestro objetivo mediante la siguiente modificación de ESTUDIANTE-CLASE:

ESTUDIANTE-CLASE-PROF[ID-ESTUDIANTE, ID-CLASE, CALIFICACION, PROFESOR, OFICINA]
 
 

hemos vuelto a renombrar la tabla para indicar su contenido. La siguiente tabla contiene unos datos de muestra.
 

ID_ESTUDIANTE ID-CLASE CALIFICACION PROFESOR OFICINA
01234 FIS-1A A Vásquez, N. M11
22346 FIS-1A B Vásquez, N. M11
11349 QUIM-2B A Pardo, L. CT2
01234 QUIM-2B A Pardo, L. CT2
08349 MUS-5 B Hurtado, R M22
03472 ARTE-3A - Hurtado, R. M22
22346 QUIM-1A C Pardo, L. CT2
01234 MUS-5 B Hurtado, R. M22
33461 ARTE-3A - Hurtado, R. M22
03472 MUS-1 - Hurtado, R M22

 

Claves y dependencias funcionales

Analicemos la tabla en términos de claves y dependencias, al igual que lo hicimos para el ejemplo anterior. La clave de la tabla permanece igual que hasta ahora, concretamente ID-ESTUDIANTE + ID-CLASE, porque el hecho básico contenido en cada fila sigue siendo una combinación determinada de estudiante y clase. Las dependencias funcionales de la tabla son las siguientes:
 
 

ID-ESTUDIANTE + ID-CLASE ® CALIFICACION

ID-CLASE   ® PROFESOR

® OFICINA
 
Al igual, que antes, CALIFICACION es funcionalmente dependiente de la combinación ID-ESTUDIANTE + ID-CLASE. Sin embargo, PROFESOR es funcionalmente dependiente tan sólo de ID-CLASE, ya que cada clase determina de forma única el profesor, independientemente del número de estudiantes matriculados en la clase. De forma similar, OFICINA es funcionalmente dependiente solo de ID-CLASE, ya que una clase concreta determina de forma única una oficina concretamente el del profesor que da la clase.

¿Qué forma normal? Como las dependencias funcionales de ID-CLASE son parciales, la tabla ESTUDIANTIE-CLASE-PROF no está en la Segunda Forma Normal. Una vez más, el motivo de esto es que cada fila representa dos hechos básicos: el hecho estudiante/clase es el mismo de antes, pero también existe otro hecho ligeramente oculto: cada clase existe independientemente de los estudiantes matriculados en ella.
 
 

Transformación a la Segunda Forma Normal

La tabla ESTUDIANTE-CLASE-PROF, debido a estas dependencias parciales, exhibirá los mismos tipos de problemas de redundancia y anomalías que hemos señalado anteriormente. Esto puede verificarse estudiando los datos de muestra de la siguiente tabla:
 


Tabla CLASE-PROF

ID-CLASE (clave) PROFESOR OFICINA
FIS-1A Vázquez, N. M11
MUS-1 Hurtado, R M22
QUIM-2B Pardo, L. CT2
QUIM-1ª Pardo, L. CT2
MUS-5 Hurtado, R M22
ARTE-3A Hurtado, R M22

 

Tabla ESTUDIANTE-CLASE

(Clave) 

ID-ESTUDlANTE

(Clave)

ID-CLASE

CALIFICACION
01234
FIS-1A
A
22346
FIS-1A
B
11349
QUIM-2B
A
01234
QUIM-2B
A
08349
MUS-5
B
03472
ARTE-3A
-
22346
QUIM-1A
C
01234
MUS-5
B
33461
ARTE-3A
-
03472
MUS1
-

 

Al igual que en el ejemplo anterior, estas dificultades pueden ser eliminadas descomponiendo las dependencias parciales, con lo que se obtienen las siguientes nuevas tablas:

ESTUDIANTE-CLASE[ID-ESTUDIANTE, ID-CLASE, CALIFICACION]

CLASE-PROF[ID-CLASE, PROFESOR, OFICINA]
 
 

Fíjese en que la descomposición ha dado como resultado la creación nuevamente de la tabla ESTUDIANTE-CLASE, que se indicaba anteriormente, y que se encontraba en la Segunda Forma Normal. Si enfocamos nuestra atención sobre CLASE-PROF, nos damos cuenta de que también está en la Segunda Forma Normal, debido a las dependencias funcionales mostradas. Es decir, cada uno de los atributos que no constituyen una clave son totalmente dependientes de lD-CLASE, que es la clave.
 
 

Redundancia de datos y comportamiento anómalo

Estudiando una muestra de datos para CLASE-PROF se puede percibir que, incluso aunque la tabla está en la Segunda Forma Normal, aún existe una redundancia de datos considerable: los nombres y números de oficina de algunos de los profesores aparecen más de una vez. Además, la tabla muestra los mismos tipos de anomalías de modificación que ya se analizaron anteriormente.

Anomalías de actualización. Si un profesor determinado se mueve de una oficina a otra, es preciso modificar varias entradas de la tabla. Esto constituye otro ejemplo en el cual el cambio de un único hecho, en este caso, la asociación entre un profesor y un oficina, exige la alteración de varias entradas de la tabla.

Anomalías de borrado. Supongamos que un profesor pierde todas sus clases, debido a la falta de asistencia de los alumnos. Cuando se eliminan todas las entradas de la tabla, sucede lo mismo con el número de oficina del profesor. Es decir, como el profesor no tiene ninguna clase, la base de datos pierde la información que lo relaciona con un oficina concreto. Esto es una anomalía de borrado, y no debe producirse.

Anomalías de inserción. Supongamos que un nuevo profesor se incorpora a la escuela, pero aún no tiene asignada ninguna clase. No será posible añadir el nombre ni el número de oficina de esta persona a la tabla, porque la clave de la tabla es ID-CLASE. No tiene sentido incluir una entrada en la tabla, que no tenga un valor de la clave, ya que dos de dichas entradas darían como resultado dos filas con el mismo valor de la clave, lo cual viola la estructura básica de las tablas relacionales. Por supuesto, sería posible asignarle un valor de clave falso, de forma que pudiera introducirse el profesor como una fila separada, pero los problemas potenciales asociados con este método son lo suficientemente molestos como para que se descarte este tipo de solución.
 
 

Dependencias funcionales transitivas

Parece que hemos encontrado que, aunque CLASE-PROF esta en la Segunda Forma Normal, presenta exactamente los mismos tipos de problemas que existían en nuestros ejemplos precedentes de tablas en la Primera Forma Normal. De hecho, la razón para este tipo de problemas es también similar a la que vimos antes: existe todavía algún tipo de dependencia funcional dentro de la tabla. Esta dependencia surge del hecho de que aunque OFICINA es funcionalmente dependiente de ID-CLASE, también es funcionalmente dependiente de PROFESOR:

PROFESOR ® OFICINA

Esta dependencia puede observarse estudiando los datos de la tabla CLASE-PROF, fijándose en que los valores de OFICINA van completamente ligados a los de PROFESOR.

La relación PROFESOR ® OFICINA es un ejemplo de una dependencia funcional transitiva, que se define de la forma siguiente:
 
 

Se dice que existe una dependencia funcional transitiva entre dos atributos de una tabla, A y B, si:
  • Uno de los dos atributos es funcionalmente dependiente del otro, y
  • Ninguno de los dos atributos es parte de la clave de la tabla.

 
 
 
 
 

La dependencia transitiva y sus problemas asociados de redundancia de datos pueden ser eliminados mediante una técnica similar a la que usamos para eliminar las dependencias parciales: descomponiendo la dependencia en una tabla aparte, de la forma siguiente:

CLASE-PROF [ID-CLASE, PROFESOR]

PROFESORES [NOMBRE, OFICINAJ
 
 

Cada una de estas tablas se dice que está en la Tercera Forma Normal, que se define de la siguiente forma:
 
 

Tercera Forma Normal

Una tabla está en Tercera Forma Normal si:

  • Está en Segunda Forma Normal
  • No tiene dependencias transitivas

 

Como resultado de la descomposición de la tabla, los datos de la tabla CLASE-PROF se convierten de la siguiente manera:
 


Tabla CLASE-PROF

ID-CLASE (clave) PROFESOR
FIS-1A Vázquez, N.
MUS-1 Hurtado, R
QUIM-2B Pardo, L.
QUIM-1ª Pardo, L.
MUS-5 Hurtado, R
ARTE-3A Hurtado, R

Tabla PROFESORES

PROFESOR OFICINA
Vázquez, N. M11
Hurtado, R M22
Pardo, L. CT2

 

En los de las tablas anteriores; un examen revela que los problemas de redundancia de datos y de comportamiento anómalo han desaparecido.
 
 

La mejor Forma Normal

Las Formas Normales que se han presentado hasta ahora, así como las que se analizarán más adelante, son, en cierto sentido, ideales que el diseñador debe tener en mente. Sin embargo, no es absolutamente esencial que una tabla tenga que estar en una forma determinada para que resulte útil. Por ejemplo, una tabla que no está en Segunda Forma Normal podría ser utilizada tal como está para el almacenamiento, recuperación y modificación de datos. El diseñador, sin embargo, debería ser consciente de las dificultades potenciales relacionadas con las anomalías de modificación, y del espacio de almacenamiento adicional requerido por culpa de la redundancia de datos.
 
 

Descomponer o no descomponer

Con frecuencia se elige deliberadamente no transformar una tabla a la Tercera Forma Normal, dejándola en alguna de las otras dos formas. Considere el ejemplo siguiente:

CLIENTES [RUT, NOMBRE, TELEFONO, CALLE, CIUDAD, REGION]

Esta tabla no está en la Tercera Forma Normal, ya que existe una dependencia transitiva entre dos de los atributos:

CIUDAD ® REGION
 
 

Con el fin de eliminar estas dependencias parciales, sería necesario descomponer la tabla CLIENTES de esta forma.

CLIENTES [RUT, NOMBRE, TELEFONO, CALLE, CIUDAD]

CIUDADES[CIUDAD, REGION]

Por razones de conveniencia, sin embargo, a menudo se escogería el primer diseño en vez del segundo. Para ilustrar esto, supongamos que estamos buscando de forma interactiva en una base de datos una información relativa a uno o más clientes. Si nuestra base de datos consta de una única tabla representada mediante el primer diseño, sería posible encontrar toda la información relativa a cada cliente con una única búsqueda.

Por otro lado, supongamos que nuestra base de datos consta de las dos tablas (segundo diseño). En este caso, sería necesario un proceso de dos etapas para cada cliente:

1. Localizar la entrada correcta en la tabla CLIENTES.

2. Usando el valor encontrado para CIUDAD, buscar en la tabla CIUDADES la entrada apropiada, que contiene la ciudad y la región correspondientes.
 
 

Cuando se escoge el primer diseño en vez del segundo, se está adoptando un compromiso entre 1) la conveniencia de uso; y 2) los problemas asociados con el uso de una tabla que contiene dependencias transitivas. En este ejemplo particular, los problemas de anomalías apenas son significativos, ya que las relaciones entre las ciudades y las regiones no van a sufrir cambios con toda probabilidad. Además, es posible que no existiese ningún interés en conocer la región de una ciudad determinada, si no existiesen clientes viviendo en esa zona. Por tanto, la existencia de una tabla CIUDADES separada no mejoraría la utilidad de la base de datos.

La Tercera Forma Normal es una meta útil, pero el diseñador tendrá que afrontar a menudo la elección de sacrificar el ideal a lo práctico.