Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 créditos
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
TABLA DE CONTENIDO
2
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
TABLA DE ILUSTRACIONES
3
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Semanas Compendio
Semana 9 Páginas 3 – 8
Semana 10 Páginas 9 – 14
Semana 11 Páginas 15 - 20
4
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
RESULTADO DE APRENDIZAJE
Tema 1: Explicar los componentes principales de las bases de datos y las funciones básicas de
los sistemas de gestión de bases de datos. Diferenciar los tipos de bases de datos, en especial al
modelo jerárquico, de red y relacional, mediante sus características más relevantes y su
estructura.
Tema 3: Optimizar la estructura relacional, esquema lógico de datos, de las tablas aplicando la
normalización y desnormalización.
5
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
¿Qué es una "dependencia inconsistente"? Si bien es intuitivo para un usuario buscar en la tabla
Clientes la dirección de un cliente en particular, puede que no tenga sentido buscar allí el salario
del empleado que llama a ese cliente. El salario del empleado está relacionado con el empleado
o depende de él y, por lo tanto, debe trasladarse a la tabla Empleados. Las dependencias
inconsistentes pueden dificultar el acceso a los datos porque la ruta para encontrar los datos
puede faltar o estar rota.
Hay algunas reglas para la normalización de la base de datos. Cada regla se denomina "forma
normal". Si se observa la primera regla, se dice que la base de datos está en "primera forma
normal". Si se observan las tres primeras reglas, se considera que la base de datos está en
"tercera forma normal". Aunque son posibles otros niveles de normalización, la tercera forma
normal se considera el nivel más alto necesario para la mayoría de las aplicaciones. Estas reglas
serán cubiertas en las semanas 14 y 15.
La normalización es una técnica de diseño de base de datos, que se utiliza para diseñar una
tabla de base de datos relacional hasta una forma normal superior. El proceso es progresivo y
no se puede lograr un nivel más alto de normalización de la base de datos a menos que se hayan
satisfecho los niveles anteriores (Beynon-Davies, 2018). Eso significa que, teniendo datos en
forma no normalizada y con el objetivo de lograr el nivel más alto de normalización, el primer
paso sería asegurar el cumplimiento de la primera forma normal, el segundo paso sería asegurar
que se satisfaga la segunda forma normal, y así sucesivamente en el orden mencionado
anteriormente, hasta que los datos se ajusten a la sexta forma normal.
Sin embargo, vale la pena señalar que las formas normales más allá de 4NF son principalmente
de interés académico, ya que los problemas que existen para resolver rara vez aparecen en la
práctica.
6
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Objetivos de la normalización
Cuando se intenta modificar (actualizar, insertar o eliminar) una relación, pueden surgir los
siguientes efectos secundarios indeseables en las relaciones que no se han normalizado:
7
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Hay tres razones principales para normalizar una base de datos. El primero es minimizar los
datos duplicados, el segundo es minimizar o evitar problemas de modificación de datos y el
tercero es simplificar las consultas. A medida que avanzamos en los distintos estados de
normalización, analizaremos cómo cada formulario aborda estos problemas, pero, para
empezar, veamos algunos datos que no se han normalizado y analicemos algunos posibles
errores. Considere la siguiente tabla:
PersonalVenta
8
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Observe que para cada Nombre hemos almacenado tanto Oficina como Telefono. Hay datos de
vendedores duplicados. La información duplicada presenta dos problemas:
Por ejemplo, considere si trasladamos la oficina de Chicago a Evanston, IL. Para reflejar esto
correctamente en nuestra tabla, necesitamos actualizar las entradas para todos los Nombres
actualmente en Chicago. Nuestra tabla es un pequeño ejemplo, pero puede ver si fuera más
grande, que potencialmente esto podría involucrar cientos de actualizaciones. Estas situaciones
son anomalías de modificación. La normalización de la base de datos los corrige. Hay tres
anomalías de modificación que pueden ocurrir:
1. Anomalía de inserción: Hay hechos que no podemos registrar hasta que sepamos la
información de toda la fila. En nuestro ejemplo, no podemos registrar una nueva oficina
de ventas hasta que también conozcamos al vendedor, porque para crear el registro
necesitamos proporcionar una clave primaria. En nuestro caso, este es el IDempleado.
PersonalVenta
¿? ¿? Atlanta 312-555-1212
En la siguiente tabla tenemos la misma información en varias filas. Por ejemplo, si cambia el
número de la oficina, es necesario realizar varias actualizaciones. Si no actualizamos todas las
filas, aparecerán inconsistencias.
PersonalVenta
9
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
PersonalVenta
Claramente, si el cliente estuviera de alguna manera en una columna, esta consulta sería más
simple. Adicionalmente, para procesos de búsquedas y clasificación esta tabla hace estos
procesos complejos ya que deberían usarse consultas UNION independientes. Puede eliminar o
reducir estas anomalías separando los datos en diferentes tablas. Esto coloca los datos en tablas
con un solo propósito. El proceso para rediseñar la tabla es la normalización de la base de datos.
10
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
https://www.youtube.com/watch?v=bO18omSzeR4
El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las
relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional. Las bases de
datos relacionales se normalizan para:
En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea
considerada como una relación tiene que cumplir con algunas restricciones:
El inventor del modelo relacional Edgar Codd propuso la teoría de la normalización con la
introducción de la primera forma normal, y continuó extendiendo la teoría con la segunda y
tercera forma normal. Más tarde se unió a Raymond F. Boyce para desarrollar la teoría de la
forma normal de Boyce-Codd.
La normalización supone el uso de formas normales con respecto a la estructura de los datos
disponibles. Hay varias reglas de normalización. Cada una de ellas se denomina forma normal
11
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
(FN). Cada una de estas formas, excepto la primera, supone que la forma normal anterior ya se
ha aplicado a los datos. Cuando se ejecuta la primera regla, la base de datos se representa en la
primera forma normal (1FN), y cuando se ejecutan las tres reglas se representa en la tercera
forma normal (3FN). La teoría de la normalización de datos en SQL aún se está desarrollando
más. Por ejemplo, hay discusiones incluso en la sexta forma normal. Sin embargo, en la mayoría
de las aplicaciones prácticas, la normalización alcanza su mejor nivel en la tercera forma normal.
La evolución de las teorías de la normalización se ilustra a continuación:
La normalización es una técnica utilizada para diseñar tablas en las que las redundancias de
datos se reducen al mínimo. Las primeras tres formas normales (1FN, 2FN y 3FN) son las más
utilizadas. Desde un punto de vista estructural, las formas de mayor nivel son mejores que las
de menor nivel, porque aquellas producen relativamente pocas redundancias de datos en la
base de datos. En otras palabras, 3FN es mejor que 2FN y ésta, a su vez, es mejor que 1FN. Casi
todos los diseños de negocios utilizan la 3FN como forma ideal.
Para normalizar una base de datos existen principalmente 3 reglas, las cuales se
deberían cumplir para evitar redundancias e incoherencias en las dependencias. A estas reglas
se les conoce como "Forma normal" qué va de la primera a la tercera y si la base de datos cumple
con cada regla se dice que está en la "primera o segunda o tercera forma normal".
12
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Para que una tabla esté en la 1FN, debe seguir las siguientes reglas (Jiménez, 2019):
1. Solo debe tener atributos / columnas con un valor único (atómico, es decir indivisibles)
2. No deben existir grupos de valores repetidos
3. Identificar cada grupo de datos relacionados con una clave primaria
4. Todas las columnas de una tabla deben tener nombres únicos
Supongamos que hay en una tabla una columna Dirección para almacenar la dirección
completa, dato que se compone del nombre de la calle, el número exterior, el número interior
(puerta), el código postal, el estado y la capital.
13
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Una tabla con esta estructura plantea problemas a la hora de recuperar información. Imagine
que necesita conocer todas las entradas correspondientes a una determinada población, o que
quiere buscar a partir del código postal. Al ser la dirección completa una secuencia de caracteres
de estructura libre no resultaría nada fácil. Existirán más columnas, pero cada una de ellas
contendrá un valor simple e indivisible que facilitará la realización de las operaciones antes
mencionadas.
Si el diseño de nuestra base de datos cumple estas premisas, está preparada para pasar de la
primera a la segunda forma normal.
Tomemos otro ejemplo. Digamos que queremos crear una tabla con la información de usuarios,
y los datos a guardar son el nombre, la empresa, la dirección de la empresa y algún email, o URL
si las tienen.
14
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Digamos que la tabla de la Figura 4 está sin normalizar (formalización cero) porque ninguna de
las reglas de normalización ha sido aplicada. Observe los campos url1 y url2. ¿Qué haremos
cuando en nuestra aplicación necesitemos una tercera URL? Se podría añadir otra columna para
la tercera URL, pero no es funcional. Entonces podemos empezar a normalizar esta tabla.
En la tabla de la Figura 4 se está rompiendo la regla de que no deben existir valores repetidos
en los campos de url1 y url2. En relación con la identificación de datos con una clave primaria
tampoco se cumple en esa tabla original. Por eso se podría incluir un campo tipo contador auto-
incrementable para cada registro de tal forma que sería nuestra clave primaria.
Una vez que aplicamos la 1FN nos encontraríamos con la siguiente tabla:
Ahora la tabla de la Figura 5 está en 1FN. Hemos solucionado el problema de la limitación del
campo URL. Sin embargo, vemos otros problemas: cada vez que introducimos un nuevo registro
en la tabla usuarios, tenemos que duplicar el nombre de la empresa y del usuario. No sólo la
base de datos crecerá mucho, sino que será fácil que la base de datos se corrompa si escribimos
mal alguno de los datos redundantes. Para este propósito, aplicaremos la 2FM.
Además de cumplir con las dos reglas del punto previo, la 2FN añade la necesidad de que no
existan dependencias funcionales parciales. Esto significa que todos los valores de las columnas
de una fila deben depender de la clave primaria de dicha fila, entendiendo por clave primaria
los valores de todas las columnas que la formen, en caso de ser más de una.
Las tablas que están ajustadas a la primera forma normal, y además disponen de una clave
primaria formada por una única columna con un valor indivisible, cumplen ya con la segunda
forma normal. Ésta afecta exclusivamente a las tablas en las que la clave primaria está formada
por los valores de dos o más columnas, debiendo asegurarse, en este caso, que todas las demás
15
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
columnas son accesibles a través de la clave completa y nunca mediante una parte de esa clave.
En resumen, para cumplir con la 2FN es necesario cumplir estas condiciones:
Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros
Relacionar estas tablas mediante una clave externa.
Siguiendo con el ejemplo anterior, hemos separado el campo URL en otra tabla, de
forma que podemos añadir más en el futuro si tener que duplicar los demás datos. También
vamos a usar nuestra clave primaria para relacionar estos campos:
Hemos creado tablas separadas y la clave primaria userId en la tabla usuarios está relacionada
ahora con la clave externa en la tabla urls, relUserId. Pero ¿qué ocurre cuando queremos añadir
otro empleado a la empresa ABC? ¿o 200 empleados? Tendríamos el nombre de la empresa y
su dirección duplicándose, lo que podría inducir a errores en los datos. Así que tendríamos que
aplicar la 3FN.
En cuanto a la tercera forma normal, ésta indica que se deben eliminar aquellos campos que no
dependan de la clave. Esto implica que no deben existir dependencias transitivas entre las
columnas de una tabla, lo cual significa que las columnas que no forman parte de la clave
primaria deben depender sólo de la clave, nunca de otra columna no clave.
En el caso del ejemplo anterior, el nombre de empresa y su dirección no tienen nada que ver
con el campo userId, así que debe tener su propio emprId:
16
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Ahora tenemos la clave primaria emprId en la tabla empresas relacionada con la clave externa
relEmpresaId en la tabla usuarios, y podemos añadir 200 usuarios mientras que sólo tenemos
que insertar el nombre 'ABC' una vez. Las tablas de usuarios y urls pueden crecer sin duplicación
ni corrupción de datos.
Sabías que: Aunque son posibles otros niveles de normalización, la tercera forma
normal se considera el máximo nivel necesario para la mayoría de las aplicaciones.
17
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
La FNBC es una variante de la 3FN. Una relación está en FNBC si cualquier atributo sólo facilita
información sobre claves candidatas y no sobre atributos que no formen parte de ninguna clave
candidata. No deben existir relaciones entre atributos fuera de las claves candidatas.
Antes de definir la cuarta forma normal (4FN), veremos tres tipos de relaciones entre los datos:
uno a uno (1:1), uno a muchos (1:M) y muchos a muchos (M:N). Observe la tabla usuarios en la
Figura 5 del 1FN mostrada anteriormente. Por un momento imaginemos que ponemos el campo
url en una tabla separada y cada vez que introducimos un registro en la tabla usuarios también
introducimos una sola fila en la tabla urls. Entonces tendríamos una relación 1:1: cada fila en la
tabla usuarios tendría exactamente una fila correspondiente en la tabla urls. Para los propósitos
de nuestra aplicación no sería útil la normalización.
18
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Ahora, observe las tablas en el ejemplo del 2FN en la Figura 6. Estas tablas permiten a un solo
usuario tener asociadas varias urls. Esta es una relación 1:M, el tipo de relación más común hasta
que se presentó el dilema del Tercer Nivel de F/N. La relación M:N, sin embargo, es ligeramente
más compleja. Observe el ejemplo de la Figura 7 del 3FN en el que hay un usuario relacionado
con varias urls. Como dijimos, vamos a cambiar la estructura para permitir que varios usuarios
estén relacionados con varias urls y así existirá una relación M:N. Veamos como quedarían las
tablas antes de seguir con este planteamiento:
Para disminuir la duplicación de los datos (este proceso va a llevar al 4FN), se ha creado una
tabla que sólo tiene claves externas y primarias url_relations. Hemos sido capaces de remover
las entradas duplicadas en la tabla urls creando la tabla url_relations. Ahora podemos expresar
fielmente la relación que Joe y Jill tienen entre cada uno de ellos, y entre ambos, las urls. Así que
veamos exactamente lo que abarca el 4FN.
19
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
En las relaciones M:N, las entidades independientes no pueden ser almacenadas en la misma
tabla. Ya que sólo se aplica a las relaciones M:N, la mayoría de los desarrolladores pueden
ignorar esta regla de forma correcta. Pero es muy útil en ciertas situaciones, tal como la que se
expresó en el párrafo anterior. Se ha optimizado la tabla urls eliminado duplicados y se ha
puesto las relaciones en su propia tabla.
Una tabla está en 4NF si y solo si esta en 3FN o en BCNF (cualquiera de ambas) y no posee
dependencias multivaluadas no triviales. La definición de la 4NF confía en la noción de una
dependencia multivaluada. Una tabla con una dependencia multivaluada es una donde la
existencia de dos o más relaciones independientes M:M causa redundancia. Esta redundancia
es suprimida por la 4FN.
Existe otro nivel de normalización que se aplica a veces, pero en la mayoría de los casos no es
necesario para obtener la mejor funcionalidad de la estructura de datos o aplicación. Una
relación se encuentra en 5FN, o forma normal de Proyección-Unión, si se encuentra en 4FN y las
únicas dependencias que existen son las denominadas dependencias de Join de una tabla con
sus proyecciones, relacionándose entre sí mediante la clave primaria, o cualquier clave
alternativa.
El beneficio de aplicar la 5FN asegura que no se ha creado ninguna columna extraña en las tablas
y que la estructura de las tablas que se ha creado sea del tamaño justo que tiene que ser. Es una
buena práctica aplicar esta forma normal, pero se la suele utilizar cuando se trabajan con una
extensa estructura de datos. En ocasiones puede generar que se creen muchas tablas, lo que
complica el manejo de las tablas. La 5FN se aplica en forma de proyección para reducir la
complejidad de una tabla a través de la división de tablas una vez que se considera la unión de
las tablas.
20
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
3.2.3. Desnormalización
En una base de datos normalizada tradicional, almacenamos datos en tablas lógicas separadas
e intentamos minimizar los datos redundantes. Podemos esforzarnos por tener solo una copia
de cada pieza de datos en la base de datos. Por ejemplo, en una base de datos normalizada,
21
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
podríamos tener una tabla Cursos y una tabla Profesores. Cada entrada en Cursos almacenaría
el ID del profesor para un curso, pero no el nombre del profesor. Cuando necesitamos recuperar
una lista de todos los cursos con el nombre del profesor, hacemos una combinación entre estas
dos tablas. De alguna manera, esto es bueno ya que, si un profesor cambia su nombre, sólo
tenemos que actualizar el nombre en un lugar. El inconveniente es que, si las tablas son grandes,
podemos pasar un tiempo innecesariamente largo haciendo uniones en las tablas.
En un sistema que exige escalabilidad, como el de cualquier empresa de tecnología, casi siempre
usamos elementos de bases de datos tanto normalizadas como desnormalizadas.
La desnormalización es una técnica que se utiliza para fusionar datos de varias tablas en
una sola tabla que se puede consultar rápidamente. La normalización, por otro lado, se
usa para eliminar datos redundantes de una base de datos y reemplazarlos con datos
confiables y no redundantes.
La desnormalización se usa cuando las combinaciones son costosas y las consultas se
ejecutan regularmente en las tablas. La normalización, por otro lado, se usa
generalmente cuando se realiza una gran cantidad de operaciones de inserción,
actualización, eliminación, y las uniones entre esas tablas no son costosas.
22
Bases de datos
Unidad 1: Diseño de bases de datos relacionales
Tema 3: Normalización
Lectura complementaria de la
asignatura:
• Teutli (2012)
• Mendoza & López (2018)
BIBLIOGRAFÍA:
Elmasri, R., Navathe, S. B., Castillo, V. C., Pérez, G. Z., & Espiga, B. G. (2002). Fundamentos de
Jiménez, J. A. (2019). Buenas prácticas en el diseño de bases de datos. Arandu UTIC, 6(1), 193–
210.
metodológica para la elaboración de una base de datos a partir del modelo relacional.
23