Professional Documents
Culture Documents
Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de sólo tener
campos atómicos, pues el nombre del lector es un campo que puede (y conviene)
descomponerse en apellido paterno, apellido materno y nombres. Tal como se muestra
en la siguiente tabla.
1NF
CodLibro Titulo Autor Editorial Paterno Materno Nombres FechaDev
Variable Murray McGraw
1001 Pérez Gómez Juan 15/04/2005
compleja Spiegel Hill
Visual E.
1004 Anaya Ríos Terán Ana 17/04/2005
Basic 5 Petroustsos
Murray McGraw
1005 Estadística Roca René 16/04/2005
Spiegel Hill
Oracle Nancy Oracle
1006 García Roque Luis 20/04/2005
University Greenberg Corp.
Oracle Priya Oracle
1006 García Roque Luis 20/04/2005
University Nathan Corp.
Clipper McGraw
1007 Ramalho Pérez Gómez Juan 18/04/2005
5.01 Hill
Por ejemplo, el título es completamente identificado por el código del libro, pero el
nombre del lector en realidad no tiene dependencia de este código, por tanto estos datos
deben ser trasladados a otra tabla.
2NF
CodLibro Titulo Autor Editorial
Murray McGraw
1001 Variable compleja
Spiegel Hill
E.
1004 Visual Basic 5 Anaya
Petroustsos
Murray McGraw
1005 Estadística
Spiegel Hill
Nancy Oracle
1006 Oracle University
Greenberg Corp.
Oracle
1006 Oracle University Priya Nathan
Corp.
McGraw
1007 Clipper 5.01 Ramalho
Hill
Hemos creado una tabla para contener los datos del lector y también tuvimos que crear
la columna CodLector para identificar unívocamente a cada uno. Sin embargo, esta
nueva disposición de la base de datos necesita que exista otra tabla para mantener la
información de qué libros están prestados a qué lectores. Esta tabla se muestra a
continuación:
CodLibro CodLector FechaDev
1001 501 15/04/2005
1004 502 17/04/2005
1005 503 16/04/2005
1006 504 20/04/2005
1007 501 18/04/2005
Para la Tercera Forma Normal (3NF) la relación debe estar en 2NF y además los
atributos no clave deben ser mutuamente independientes y dependientes por completo
de la clave primaria. También recordemos que dijimos que esto significa que las
columnas en la tabla deben contener solamente información sobre la entidad definida
por la clave primaria y, por tanto, las columnas en la tabla deben contener datos acerca
de una sola cosa.
En nuestro ejemplo en 2NF, la primera tabla conserva información acerca del libro, los
autores y editoriales, por lo que debemos crear nuevas tablas para satisfacer los
requisitos de 3NF.
3NF
CodLibro Titulo
Variable
1001 compleja
1004 Visual Basic 5
1005 Estadística
Oracle
1006 University
1007 Clipper 5.01
CodAutor Autor
Murray
801 Spiegel
802 E. Petroustsos
Nancy
803 Greenberg
804 Priya Nathan
806 Ramalho
CodEditorial Editorial
McGraw
901 Hill
902 Anaya
Oracle
903 Corp.
Aunque hemos creado nuevas tablas para que cada una tenga sólo información acerca
de una entidad, también hemos perdido la información acerca de qué autor ha escrito
qué libro y las editoriales correspondientes, por lo que debemos crear otras tablas que
relacionen cada libro con sus autores y editoriales.
CodLibro codAutor
1001 801
1004 802
1005 801
1006 803
1006 804
1007 806
CodLibro codEditorial
1001 901
CodLibro codEditorial
1004 902
1005 901
1006 903
1007 901
EJEMPLOS DE LA 1FN:
Ejemplo 1:
En esta Guía de Pedido, la PK es el Nro_GI (número de guía) quién determina a los demás
atributos de la tabla.
Ejemplo 2:
En este caso de la biblioteca, la PK es el CodLibro, quién determina a los demás atributos de la
tabla.
Ejemplo 3:
En esta Informe de Notas, la PK esta conformada por el ID-Estudiante y el ID-Clave, quienes
determinan a los demás atributos de la tabla.
Ejemplo 4:
En esta Boleta de Ventas, la PK es el Num_bol (número de boleta) quién determina a los
demás atributos de la tabla.
Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no forman parte
de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen
dependencias parciales. (Todos los atributos que no son clave principal deben depender únicamente de la
clave principal).
En otras palabras podríamos decir que la segunda forma normal está basada en el concepto de
dependencia completamente funcional. Una dependencia funcional es completamente funcional
si al eliminar los atributos A de X significa que la dependencia no es mantenida, esto es
que . Una dependencia funcional es una dependencia
parcial si hay algunos atributos que pueden ser eliminados de X y la dependencia todavía se
mantiene, esto es .
Ejemplos:
Empleados
Empleado Habilidad
Jones Mecanografía
Jones Taquigrafía
Jones Tallado
Ellis Alquimia
Ellis Malabarismo
Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en
2NF.
Sin embargo, no todas las tablas 2NF están libres de anomalías de actualización. Un
ejemplo de una tabla 2NF que sufre de anomalías de actualización es:
Ganadores del torneo
La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre
los atributos que no son clave.
Un ejemplo de este concepto sería que, una dependencia funcional X->Y en un esquema de relación
R es una dependencia transitiva si hay un conjunto de atributos Z que no es un subconjunto de
alguna clave de R, donde se mantiene X->Z y Z->Y.
1. es superllave o clave.
2. es atributo primo de ; esto es, si es miembro de alguna clave en .
Además el esquema debe cumplir necesariamente, con las condiciones de segunda forma normal.
Un ejemplo de una tabla 2NF que falla en satisfacer los requerimientos de la 3NF es:
Una tabla se encuentra en 4FN si, y sólo si, para cada una de sus dependencias múltiples no
funcionales X->->Y, siendo X una super-clave que, X es o una clave candidata o un conjunto de
claves primarias.
Ejemplo:
Cada fila indica que un restaurante dado puede entregar una variedad dada de pizza a un área
dada.
Note que debido a que la tabla tiene una clave única y ningún atributo no-clave, no viola ninguna
forma normal hasta el BCNF. Pero debido a que las variedades de pizza que un restaurante
ofrece son independientes de las áreas a las cuales el restaurante envía, hay redundancia en la
tabla: por ejemplo, nos dicen tres veces que A1 Pizza ofrece la Corteza rellena, y si A1
Pizza comienza a producir pizzas de Corteza de queso entonces necesitaremos agregar
múltiples registros, uno para cada una de las Áreas de envío de A1 Pizza. En términos formales,
esto se describe como que Variedad de pizza está teniendo una dependencia multivalor
en Restaurante.
Para satisfacer la 4NF, debemos poner los hechos sobre las variedades de pizza ofrecidas en
una tabla diferente de los hechos sobre áreas de envío:
Ronald Fagin demostró que es siempre posible alcanzar la 4NF (pero no siempre deseable).
El teorema de Rissanen es también aplicable en dependencias multivalor.