Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller de Normalización
27 de octubre de 2021
Ficha: 2419805.
Las formas normales son conjuntos de criterios que utilizamos para «normalizar» (es decir,
mejorar la estructura) de las bases de datos.
Todos los atributos son «atómicos». Por ejemplo, en el campo teléfono no tenemos varios
teléfonos.
INTRODUCCIÓN A LAS BASES DE DATOS.
INSTRUCTOR: LEE JARED ESCOBAR.
TALLER N°3
La tabla contiene una clave primaria única. Por ejemplo, el NIF para personas, la matrícula para
vehículos o un simple id autoincremental. Si no tiene clave, no es 1FN.
La clave primaria no contiene atributos nulos. No podemos tener filas para las que no haya clave
(por ejemplo, personas sin NIF o vehículos sin matrícula).
No debe existir variación en el número de columnas. Si algunas filas tienen 8 columnas y otras 3,
pues no estamos en 1FN.
Los campos no clave deben identificarse por la clave. Es decir, que los campos no clave dependen
funcionalmente de la clave. Esto es prácticamente lo mismo que decir que existe clave primaria.
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. Por ejemplo, si en la columna 1
tenemos el primer apellido y en la columna 2 tenemos el segundo, pues no estamos en 1FN.
Igualmente, si en la tercera fila tenemos el tercer mejor expediente y en la quinta fila el quinto, no
estamos en 1FN.
Suponga que un diseñador principiante desea guardar los nombres y los números telefónicos de
los clientes. Procede a definir una tabla de cliente como la que sigue:
Cliente2
ID
Nombre Apellido Teléfono
Cliente
Cliente
ID
Nombre Apellido Teléfono
Cliente
Asumiendo, sin embargo, que la columna "Teléfono" está definida en algún tipo de dominio de
número telefónico (por ejemplo, el dominio de cadenas de 12 caracteres de longitud), la
representación de arriba no está en 1FN. La 1FN (y el RDBMS) prohíbe a un campo contener más
de un valor de su dominio de columna.
El diseñador puede evitar esta restricción definiendo múltiples columnas del número telefónico:
Cliente
ID
Nombre Apellido Teléfono 1 Teléfono 2 Teléfono 3
Cliente
Sin embargo, esta representación hace uso de columnas que permiten valores nulos, y por lo tanto
no se conforman con la definición de la 1FN de Date. Incluso si se contempla la posibilidad de
columnas 3 con valores nulos, el diseño no está en armonía con el espíritu de 1FN. Teléfono 1,
Teléfono 2, y Teléfono 3, comparten exactamente el mismo dominio y exactamente el mismo
significado, dividir los números de teléfono en tres encabezados es artificial y causa problemas
lógicos.
Dificultad en hacer consultas a la tabla. Es difícil contestar preguntas tales como "¿Qué
clientes tienen el teléfono X?" y "¿Qué pares de clientes comparten un número de
teléfono?".
La imposibilidad de hacer cumplir la unicidad los enlaces Cliente-a-Teléfono por medio del
RDBMS. Al cliente 789 se le puede dar equivocadamente un valor para el Teléfono 2 que
es exactamente igual que el valor de su Teléfono 1.
La restricción de los números de teléfono por cliente a tres. Si viene un cliente con cuatro
números de teléfono, estamos obligados a guardar solamente tres y dejar el cuarto sin
guardar. Esto significa que el diseño de la base de datos está imponiendo restricciones al
proceso del negocio, en vez de (como idealmente debe ser el caso) al revés.
El diseñador puede, alternativamente, conservar una sola columna de número de teléfono, pero
alterando su dominio, haciendo una cadena de suficiente longitud para acomodar múltiples
números telefónicos:
Cliente
INTRODUCCIÓN A LAS BASES DE DATOS.
INSTRUCTOR: LEE JARED ESCOBAR.
TALLER N°3
ID
Nombre Apellido Teléfono
Cliente
Este es defendiblemente el peor diseño de todos, y otra vez no mantiene el espíritu de la 1NF. El
encabezado "Teléfono" llega a ser semánticamente difuso, ya que ahora puede representar, o un
número de teléfono, o una lista de números de teléfono, o de hecho cualquier cosa. Una consulta
como "¿Qué pares de clientes comparten un número telefónico?" es virtualmente imposible de
formular, dada la necesidad de proveerse de listas de números telefónicos, así como números
telefónicos individuales. Con este diseño en la RDBMS, son también imposibles de definir
significativas restricciones en números telefónicos.
Una tabla está en 2FN si además de estar en 1FN cumple que los atributos no clave depende de
TODA la4clave principal.
Por ejemplo, si tenemos una tabla con Personas, identificadas por su NIF y recogemos su empresa
y dirección de trabajo, la clave sería NIF-Empresa. Pero nos encontraremos con que una misma
persona puede trabajar en varias empresas. Y vemos que la dirección de trabajo no depende de
TODA la clave primaria, sino solo de la empresa. Por lo tanto, no estamos en 2FN.
Ejemplo:
Una alternativa 2NF a este diseño representaría la misma información en dos tablas:
Empleados
5
Empleado Lugar actual de trabajo
Empleado Habilidad
Jones Mecanografía
Jones Taquigrafía
Jones Tallado
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:
Des Moines
1998 Chip Masterson 14 de marzo de 1977
Masters
Des Moines
1999 Al Fredrickson 21 de julio de 1975
Masters
6
Indiana Invitational 1999 Chip Masterson 14 de marzo de 1977
Aunque el Ganador y la Fecha de nacimiento del ganador están determinadas por una clave
completa {Torneo, Año} y no son partes de ella, particularmente las
combinaciones Ganador / Fecha de nacimiento del ganador son mostradas redundantemente en
múltiples registros. Este problema es tratado por la tercera forma normal (3NF).
Una tabla para la cual no hay dependencias funcionales parciales en la clave primaria está
típicamente, pero no siempre, en 2NF. Además de la clave principal, la tabla puede contener otras
claves candidatas; es necesario establecer que ningún atributo no-principal tienen dependencias
de clave parciales en cualesquiera de estas claves candidatas.
Aun si el diseñador ha especificado la clave principal como {Nombre completo del modelo}, la
tabla no está en 2NF. {Fabricante, Modelo} es también una clave candidata, y País del fabricante es
dependiente en un subconjunto apropiado de él: Fabricante.
Una tabla está en 3FN si además de estar en 2FN no existe ninguna dependencia transitiva entre
los atributos que no son clave.
Vamos a explicarlo. Como dijo Bill Kent, «todo atributo no clave debe proporcionar información
sobre la7clave, sobre toda la clave y nada más que la clave… con la ayuda de Codd».
Bueno, en serio, supongamos que tenemos una tabla de ganadores de torneos de tenis. En ella
figura el nombre del torneo, el año, el nombre del ganador y su nacionalidad. La clave sería
Torneo-Año. Pues esta tabla no está en 3FN porque el atributo nacionalidad, que no es de la clave,
depende del nombre del ganador (también depende de la clave). Digamos que nacionalidad
aporta información sobre el ganador, pero no sobre la clave. Es una dependencia transitiva porque
nacionalidad depende de ganador que a su vez depende de Torneo-Año.
Ejemplo
Un ejemplo de una tabla 2NF que falla en satisfacer los requerimientos de la 3NF es:
Se puede observar que la tabla anterior posee datos que se pueden repetir, o sea hacer referencia
a la misma entidad por así decirlo. Así que lo correcto sería generar una tabla para ellos.
1 1998 2
2 1999 3
3 1999 2
1 1999 1
idTorne
Nombre
o
1 8 Indiana Invitational
2 Cleveland Open
Jugadores
idJugado
Jugador Fecha de nacimiento
r
Las anomalías de actualización no pueden ocurrir en estas tablas, las cuales están en 3NF.
INTRODUCCIÓN A LAS BASES DE DATOS.
INSTRUCTOR: LEE JARED ESCOBAR.
TALLER N°3
REFERENCIAS
9
Barbero, M. J. (2015, 7 noviembre). Formas Normales (1FN, 2FN, 3FN y FNBC) | El Blog de
19E37. Formas Normales. Recuperado 27 de octubre de 2021, de
http://19e37.com/blog/formas-normales-1fn-2fn-3fn/
colaboradores de Wikipedia. (2021, 7 septiembre). Primera forma normal. Wikipedia, la
enciclopedia libre. Recuperado 27 de octubre de 2021, de
https://es.wikipedia.org/wiki/Primera_forma_normal
colaboradores de Wikipedia. (2021a, junio 11). Segunda forma normal. Wikipedia, la
enciclopedia libre. Recuperado 27 de octubre de 2021, de
https://es.wikipedia.org/wiki/Segunda_forma_normal#2NF_y_las_claves_candidatas
colaboradores de Wikipedia. (2021b, agosto 16). Tercera forma normal. Wikipedia, la
enciclopedia libre. Recuperado 27 de octubre de 2021, de
https://es.wikipedia.org/wiki/Tercera_forma_normal#Ejemplo