Normalizaciones de Bases de Datos
Normalización
La normalización es proceso por la cual aplicamos un conjunto
de técnicas para obtener una nueva base de datos sin
redundancias, con esto evitamos en un futuro posibles
anomalías en la ejecución de tareas básicas por ejemplo en la
inserción de datos.
¿Qué es una "dependencia incoherente"?
El proceso de normalización
Consiste en comprobar en forma secuencial si una tabla
cumple con:
Primera Forma Normal
Segunda Forma Normal
Tercera Forma Normal
Ejemplo
Usaremos un ejemplo para explicar el
proceso
Tenemos una empresa donde los empleados
cobran su sueldo de acuerdo al puesto que
ocupan o el cargo que tienen. Además cada
empleado trabaja en uno o varios proyectos.
Ejemplo
EMPLEADOS
Id Nombre Cargo Sueldo Correo
123 Sergio Pérez Jefe Área 3000
[email protected];
[email protected]223 Jorge Pla Ingeniero 2500
[email protected]323 Juan Tort Analista 1000
[email protected]… … … … …
PROYECTOS
Id Proyecto FechaInicio Duracion
123 A 10/10/2010 30
123 B 12/03/2010 20
223 A 10/10/2010 30
323 B 12/03/2010 20
Primera Forma Normal (1FN)
Una tabla está en Primera Forma Normal (1FN)
si sus atributos contienen valores atómicos: no
podemos tener mas de un valor para un mismo
atributo.
Primera Forma Normal (1FN)
Solución 1:
Duplicar los registros con valores repetidos.
Primera Forma Normal (1FN)
EMPLEADOS
Id Nombre Cargo Sueldo Correo
123 Sergio Perez Jefe Area 3000 [email protected]
123 Sergio Perez Jefe Area 3000 [email protected]
223 Jorge Pla Ingeniero 2500 [email protected]
323 Juan Tort Analista 1000 [email protected]
Primera Forma Normal (1FN)
Solución 2: separar el atributo que viola 1FN
en otra tabla
Primera Forma Normal (1FN)
EMPLEADOS
Id Nombre Cargo Sueldo
123 Sergio Perez Jefe Area 3000
223 Jorge Pla Ingeniero 2500 CORREOS
323 Juan Tort Analista 1000
Id Correo
123
[email protected] 123
[email protected] 223
[email protected] 323
[email protected] Segunda Forma Normal (2FN)
Un esquema está en 2FN si:
Está en 1FN.
Y todos sus atributos que no son de la clave principal
tienen dependencia funcional completa respecto de
todas las claves existentes en el esquema.
La 2FN se aplica a las relaciones que tienen claves
primarias compuestas por dos o más atributos
Segunda Forma Normal (2FN)
Las dependencias que tenemos son las
siguientes:
{id, proyecto}->fechaInicio, duracion
proyecto->fechaInicio, duracion
PROYECTOS
Id Proyecto FechaInicio Duracion
123 A 10/10/2010 30
123 B 12/03/2010 20
223 A 10/10/2010 30
323 B 12/03/2010 20
Segunda Forma Normal (2FN)
Solución: creamos una nueva tabla
PROYECTOS PROYECTOS-DATOS
Id Proyecto Proyecto FechaInicio Duracion
123 A A 10/10/2010 30
123 B B 12/03/2010 20
223 A
323 B
Tercera Forma Normal (3FN)
Una relación está en tercera forma normal si, y
sólo si:
está en 2FN y, además, cada atributo que no
está incluido en la clave primaria no depende
transitivamente de la clave primaria.
Tercera Forma Normal (3FN)
Siguiendo el ejemplo, podemos detectar la
siguiente transitividad:
id->cargo
cargo->sueldo
Por lo tanto la descomposición sería la siguiente:
En la nueva tabla CARGOS, la clave será el cargo, que
también queda como clave referenciando la
tabla EMPLEADOS. El resto de las tablas quedan
como estaban.
Tercera Forma Normal (3FN)
EMPLEADOS CARGOS
Id Nombre Cargo Cargo Sueldo
123 Sergio Perez Jefe Area Jefe Area 3000
223 Jorge Pla Ingeniero Ingeniero 2500
323 Juan Tort Analista Analista 1000
444 Maria Perez Ingeniero
555 Jose Rios Analista CORREOS
Id Correo
123 [email protected]
123 [email protected]
223 [email protected]
323 [email protected]
En resumen
Resumiendo:
Nuestra tarea como diseñadores de bases de datos y aplicaciones
será crear bases de datos donde no existan duplicaciones
innecesarias de datos y a su vez también nos provea una forma
rápida de acceder a nuestros datos.
Referencias
http://msdn.microsoft.com/es-es/library/ms191178.aspx
http://cvva.wordpress.com/2007/12/04/normalizacion-de-
bases-de-datos-las-3-formas-normales/
http://wapedia.mobi/es/Normalizaci%C3%B3n_de_bases
_de_datos