Professional Documents
Culture Documents
Concepto:
El proceso de normalizacin de bases de datos consiste en aplicar una serie de reglas a las relaciones
obtenidas tras el paso del modelo entidad-relacin al modelo relacional.
Las bases de datos relacionales se normalizan para:
En el modelo relacional es frecuente llamar tabla a una relacin, aunque para que una tabla sea considerada
como una relacin tiene que cumplir con algunas restricciones:
Todos los datos en una columna deben ser del mismo tipo.
Dependencia Funcional:
Una dependencia funcional es una conexin entre uno o ms atributos. Por ejemplo si se conoce el valor de
DNI tiene una conexin con Apellido o Nombre . (DNI (Documento Nacional de Identidad)
Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente manera:
FechaDeNacimiento
Edad
De la normalizacin (lgica) a la implementacin (fsica o real) puede ser sugerible tener stas dependencias
funcionales para lograr la eficiencia en las tablas.
De la normalizacin (lgica) a la implementacin (fsica o real) puede ser sugerible tener stas dependencias
funcionales para lograr la eficiencia en las tablas.
A partir de cualquier atributo o conjunto de atributos siempre puede deducirse l mismo. Si la direccin o el
nombre de una persona estn incluidos en el DNI, entonces con el DNI podemos determinar la direccin o su
nombre.
Dependencia funcional Aumentativa
entonces
DNI
nombre
DNI,direccin
nombre,direccin
Si con el DNI se determina el nombre de una persona, entonces con el DNI ms la direccin tambin se
determina el nombre y su direccin.
Z entonces X
FechaDeNacimiento
Edad
Z
Edad
Conducir
FechaDeNacimiento
Edad
Conducir
Formas normales: Las formas normales son aplicadas a las tablas de una base de datos. Decir que una base
de datos est en la forma normal N es decir que todas sus tablas estn en la forma normal N.
En general, las primeras tres formas normales son suficientes para cubrir las necesidades de la mayora de las
bases de datos. El creador de estas 3 primeras formas normales (o reglas) fue Edgar F. Codd.1
En la teora de bases de datos relacionales, las formas normales (NF) proporcionan los criterios para
determinar el grado de vulnerabilidad de una tabla a inconsistencias y anomalas lgicas. Cuanto ms alta sea
la forma normal aplicable a una tabla, menos vulnerable ser a inconsistencias y anomalas. Cada tabla tiene
una "forma normal ms alta" (HNF): por definicin, una tabla siempre satisface los requisitos de su HNF y
de todas las formas normales ms bajas que su HNF; tambin por definicin, una tabla no puede satisfacer
los requisitos de ninguna forma normal ms arriba que su HNF.
Los recin llegados al diseo de bases de datos a veces suponen que la normalizacin procede de una manera
iterativa, es decir un diseo 1NF primero se normaliza a 2NF, entonces a 3NF, etctera. sta no es una
descripcin exacta de cmo la normalizacin trabaja tpicamente. Una tabla sensiblemente diseada es
probable que est en 3NF en la primera tentativa; adems, si est en 3NF, tambin es extremadamente
probable que tenga una forma HNF de 5NF. Conseguir formas normales "ms altas" (sobre 3NF) usualmente
no requiere un gasto adicional de esfuerzo por parte del diseador, porque las tablas 3NF usualmente no
necesitan ninguna modificacin para satisfacer los requisitos de estas formas normales ms altas.
Edgar F. Codd originalmente defini las tres primeras formas normales (1NF, 2NF, y 3NF). Estas formas
normales se han resumido como requiriendo que todos los atributos no-clave sean dependientes en "la clave,
la clave completa, y nada excepto la clave". Las cuarta y quinta formas normales ( 4NF y 5NF) se ocupan
especficamente de la representacin de las relaciones muchos a muchos y uno muchos entre los atributos.
La sexta forma normal (6NF), en pocas palabras, se basa en el principio de que si se tiene ms de dos claves
candidatas en una tabla, se tendrn que crear otras tablas con estas.
Por ejemplo si tenemos "tem" con un id cdigo de producto y con los atributos descripcin y precio que son
claves candidatas se tendra que crear otras tablas separando la tabla tem: ItemDesc {cdigo_producto*,
Descripcin} ItemPrecio {cdigo_producto*, Precio}.
La sexta forma normal no es muy utilizada porque genera ms tablas cuando tenemos pequeas bases de
datos.
Todos los atributos son atmicos. Un atributo es atmico si los elementos del dominio son
indivisibles, mnimos.
Debe Existir una independencia del orden tanto de las filas como de las columnas, es decir, si los
datos cambian de orden no deben cambiar sus significados
Todas las columnas son regulares [es decir, las filas no tienen componentes como IDs de fila, IDs de
objeto, o timestamps ocultos
Una tabla que carece de una clave primaria. Esta tabla podra acomodar filas duplicadas, en violacin de la
condicin 3.
Una tabla con por lo menos un atributo que pueda ser nulo. Un atributo que pueda ser nulo estara en violacin de la
condicin 4, que requiere a cada campo contener exactamente un valor de su dominio de columna
Grupos repetidos
. El siguiente ejemplo ilustra cmo un diseo de base de datos puede incorporar la repeticin de grupos, en
violacin de la 1FN.
Ejemplo 1: Dominios y valores
ID Cliente
123
456
789
Nombre
Rachel
James
Cesar
Cliente
Apellido
Ingram
Wright
Dure
Telfono
555-861-2025
555-403-1659
555-808-9633
En este punto, el diseador se da cuenta de un requisito para guardar mltiples nmeros telfonicos para
algunos clientes. Razona que la manera ms simple de hacer esto es permitir que el campo "Telfono"
contenga ms de un valor en cualquier registro dado:
123
Nombre
Rachel
Cliente
Apellido
Ingram
456
James
Wright
789
Cesar
Dure
ID Cliente
Telfono
555-861-2025
555-403-1659
555-776-4100
555-808-9633
Asumiendo, sin embargo, que la columna "Telfono" est definida en algn tipo de dominio de nmero
telefnico (por ejemplo, el dominio de cadenas de 12 caracteres de longitud), la representacin de arriba no
est en 1FN. La 1FN (y, para esa materia, el RDBMS) prohbe a un campo contener ms de un valor de su
dominio de columna.
Ejemplo 2: Grupos repetidos a travs de columnas
El diseador puede evitar esta restriccin definiendo mltiples columnas del nmero telefnico:
ID Cliente
123
456
789
Nombre
Rachel
James
Cesar
Apellido
Ingram
Wright
Dure
Cliente
Telfono 1
555-861-2025
555-403-1659
555-808-9633
Telfono 2
Telfono 3
555-776-4100
Sin embargo, esta representacin hace uso de columnas que permiten valores nulos, y por lo tanto no se
conforman con la definicin de la 1NF de Date. Incluso si se contempla la posibilidad de columnas con
valores nulos, el diseo no est en armona con el espritu de 1NF. Telfono 1, Telfono 2, y Telfono 3,
comparten exactamente el mismo dominio y exactamente el mismo significado; el dividir del nmero de
telfono en tres encabezados es artificial y causa problemas lgicos. Estos problemas incluyen:
Dificultad en hacer consultas a la tabla. Es difcil contestar preguntas tales como "Qu clientes
tienen el telfono X?" y "Qu pares de clientes comparten un nmero de telfono?".
La imposibilidad de hacer cumplir la unicidad los enlaces Cliente-a-Telfono por medio del
RDBMS. Al cliente 789 se le puede dar equivocadamente un valor para el Telfono 2 que es
exactamente igual que el valor de su Telfono 1.
La restriccin de los nmeros de telfono por cliente a tres. Si viene un cliente con cuatro nmeros
de telfono, estamos obligados a guardar solamente tres y dejar el cuarto sin guardar. Esto significa
que el diseo de la base de datos est imponiendo restricciones al proceso del negocio, en vez de
(como idealmente debe ser el caso) al revs.
Cliente
ID Cliente
123
456
789
Nombre
Rachel
James
Cesar
Apellido
Ingram
Wright
Dure
Telfono
555-861-2025
555-403-1659, 555-776-4100
555-808-9633
ste es defendiblemente el peor diseo de todos, y otra vez no mantiene el espritu de la 1NF. El
encabezado "Telfono" llega a ser semnticamente difuso, ya que ahora puede representar, o un
nmero de telfono, o una lista de nmeros de telfono, o de hecho cualquier cosa. Una consulta
como "Qu pares de clientes comparten un nmero telefnico?" es virtualmente imposible de
formular, dada la necesidad de proveerse de listas de nmeros telefnicos as como nmeros
telefnicos individuales. Con este diseo en la RDBMS, son tambin imposibles de definir
significativas restricciones en nmeros telefnicos.
123
456
789
Nombre
Rachel
James
Cesar
Apellido
Ingram
Wright
Dure
123
456
456
789
En este diseo no ocurren grupos repetidos de nmeros telefnicos. En lugar de eso, cada enlace Cliente-aTelfono aparece en su propio registro. Es valioso notar que este diseo cumple los requerimientos
adicionales para la segunda (2NF) y la tercera forma normal (3FN).
Habilidad
Mecanografa
Taquigrafa
Tallado
Limpieza ligera
Alquimia
Malabarismo
Limpieza ligera
El atributo restante, Lugar actual de trabajo, es dependiente solo en parte de la clave candidata, llamada
Empleado. Por lo tanto la tabla no est en 2NF. Observe la redundancia de la manera en que son
representadas los Lugares actuales de trabajo: nos dicen tres veces que Jones trabaja en la 114 Main Street, y
dos veces que Ellis trabaja en 73 Industrial Way. Esta redundancia hace a la tabla vulnerable a anomalas de
actualizacin: por ejemplo, es posible actualizar el lugar del trabajo de Jones en sus registros "Mecanografa"
y "Taquigrafa" y no actualizar su registro "Tallado". Los datos resultantes implicaran respuestas
contradictorias a la pregunta "Cul es el lugar actual de trabajo de Jones?".
Un alternativa 2NF a este diseo representara la misma informacin en dos tablas:
Empleados
Empleado
Jones
Bravo
Ellis
Harrison
Un atributo no-primario es un atributo que no pertenece a ninguna clave candidata. Una dependencia
transitiva es una dependencia funcional X Z en la cual Z no es inmediatamente dependiente de X, pero s
de un tercer conjunto de atributos Y, que a su vez depende de X. Es decir, X Z por virtud de X Y e Y
Z.
Nada excepto la clave"
Un memorable resumen de la definicin de Codd de la 3NF, siendo paralelo al compromiso tradicional de
dar evidencia verdadera en un tribunal de justicia, fue dado por Bill Kent: cada atributo no-clave "debe
proporcionar un hecho sobre la clave, la clave entera, y nada ms excepto la clave". 3 Una variacin comn
complementa esta definicin con el juramento: "con la ayuda de Codd". 4
Requerir que los atributos no-clave sean dependientes en "la clave completa" asegura que una tabla est en
2NF; un requerimiento posterior que los atributos no-clave sean dependientes de "nada excepto la clave"
asegura que la tabla est en 3NF.
Ejemplo
Un ejemplo de una tabla 2NF que falla en satisfacer los requerimientos de la 3NF es:
Ganadores del torneo
Torneo
Ao
Ganador
Indiana Invitational
1998 Al Fredrickson
Cleveland Open
1999 Bob Albertson
Des Moines Masters
1999 Al Fredrickson
Indiana Invitational
1999 Chip Masterson
La nica clave candidata es {Torneo, Ao}.
La violacin de la 3NF ocurre porque el atributo no primario Fecha de nacimiento del ganador es
dependiente transitivamente de {Torneo, Ao} va el atributo no primario Ganador. El hecho de que la
Fecha de nacimiento del ganador es funcionalmente dependiente en el Ganador hace la tabla vulnerable a
inconsistencias lgicas, pues no hay nada que impida a la misma persona ser mostrada con diferentes fechas
de nacimiento en diversos registros.
Para expresar los mismos hechos sin violar la 3NF, es necesario dividir la tabla en dos:
Torneo
Indiana Invitational
Cleveland Open
Des Moines Masters
Indiana Invitational
Ganador
Al Fredrickson
Bob Albertson
Al Fredrickson
Chip Masterson
Ganador
Chip Masterson
Al Fredrickson
Bob Albertson
Fecha de nacimiento
14 de marzo de 1977
21 de julio de 1975
28 de septiembre de 1968
Las anomalas de actualizacin no pueden ocurrir en estas tablas, las cuales estn en 3NF.
es superllave o clave.
De esta forma, todo esquema que cumple FNBC, est adems en 3FN; sin embargo, no todo esquema
que cumple con 3FN, est en FNBC.
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.
Ejemplo
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:
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)
El propsito de la
tutores estn asignados a qu estudiantes. Las claves candidatas de la tabla son:
tabla es mostrar qu
Otra formulacin
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.
Restaurante
Vincenzo's Pizza
Vincenzo's Pizza
Vincenzo's Pizza
Vincenzo's Pizza
Elite Pizza
Elite Pizza
A1 Pizza
A1 Pizza
A1 Pizza
A1 Pizza
A1 Pizza
A1 Pizza
rea de envo
Springfield
Shelbyville
Springfield
Shelbyville
Capital City
Capital City
Springfield
Shelbyville
Capital City
Springfield
Shelbyville
Capital City
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 ningn 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 enva, 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 mltiples registros, uno para cada una de las reas de envo de A1
Pizza. En trminos 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 envo:
En contraste, si las variedades de pizza ofrecidas por un restaurante a veces variaran de un rea de envo a
otra, la tabla original de la tres columnas satisfara la 4NF.
Ronald Fagin demostr que es siempre posible alcanzar la 4NF (pero no siempre deseable). El teorema de
Rissanen es tambin aplicable en dependencias multivalor.
4NF en la prctica
Un artculo de 1992 de Margaret S. Wu observa que la enseanza de la normalizacin de la base de datos se
detiene tpicamente justo antes de la 4NF, quizs debido a una creencia que las tablas que violan la 4NF
(pero que hacen frente a todas las formas normales ms bajas) son raramente encontradas en aplicaciones
empresariales. Sin embargo, esta creencia puede no ser exacta. Wu reporta que en un estudio de cuarenta
bases de datos de organizaciones, ms del 20% contena una o ms tablas que violaban la 4NF mientras que
satisfacen todas las formas normales ms bajas. 1
No existen relaciones de dependencias no triviales que no siguen los criterios de las claves. Una
tabla que se encuentra en la 4FN se dice que est en la 5FN si, y slo si, cada relacin de
dependencia se encuentra definida por claves candidatas.
La quinta forma normal (5FN), tambin conocida como monda (PJ/NF), es un nivel de normalizacin de
bases de datos diseado para reducir redundancia en las bases de datos relacionales que guardan hechos
multi-valores aislando semnticamente relaciones mltiples relacionadas. Una tabla se dice que est en 5NF
si y slo si est en 4NF y cada dependencia de unin (join) en ella es implicada por las claves candidatas.
Ejemplo
Considere el siguiente ejemplo:
Psiquiatra
Dr. James
Dr. James
Dr. Kendrick
Dr. Kendrick
Dr. Kendrick
Dr. Lowenstein
Dr. Lowenstein
Dr. Lowenstein
Dr. Lowenstein
Psiquiatra-para-Asegurador-para-Condicin
Asegurador
Condicin
Healthco
Ansiedad
Healthco
Depresin
FriendlyCare
OCD
FriendlyCare
Ansiedad
FriendlyCare
Depresin
FriendlyCare
Esquizofrenia
Healthco
Ansiedad
Healthco
Demencia
Victorian Life
Trastorno de conversin
El psiquiatra puede ofrecer tratamiento reembolsable a los pacientes que sufren de la condicin dada y que
son asegurados por el asegurador dado. En ausencia de cualquier regla que restrinja las combinaciones
vlidas posibles de psiquiatra, asegurador, y condicin, la tabla de tres atributos Psiquiatra-para-Aseguradorpara-Condicin es necesaria para modelar la situacin correctamente.
Note como esta disposicin ayuda a quitar redundancia. Suponga que el Dr. James se convierte en un
proveedor de tratamientos para FriendlyCare. En la disposicin anterior tendramos que agregar dos nuevas
entradas puesto que el Dr. James puede tratar dos condiciones cubiertas por FriendlyCare: ansiedad y
depresin. Con la nueva disposicin necesitamos agregar una sola entrada (en la tabla Psiquiatra-paraAsegurador).