Este documento introduce la normalización de bases de datos, que consiste en aplicar una serie de reglas a las relaciones obtenidas en un modelo entidad-relación para evitar redundancia de datos, problemas de actualización y proteger la integridad de los datos. Explica las cinco formas normales y cómo aplicarlas a través de ejemplos para eliminar grupos de repetición y dependencias parciales y transitivas.
1. Normalización de
Base de Datos
@emalca Ing. Eddie Malca Vicente
emalca@iluminatic.com
/iluminatic emalca@gmail.com
2. Introducción
• El diseño de base de datos tiene como objetivo obtener una
serie de esquemas que permitan almacenar información, sin
redundancia y de fácil acceso.
• Las formas normales permiten lograr un buen diseño de base
de datos cumpliendo ciertas reglas.
• Para esto se necesita información acerca del problema que
se esté modelando. Parte de esta información se encuentra
en un diagrama E-R, pero se necesita información adicional.
3. Normalización
• El proceso de normalización de una base de datos consiste
en aplicar una serie de reglas a las relaciones obtenidas en el
modelo E-R (entidad-relación).
• Las bases de datos relacionales se normalizan para:
Evitar la redundancia de los datos.
Evitar problemas de actualización de los datos en las tablas.
Proteger la integridad de los datos.
• En el modelo relacional es frecuente llamar tabla a una
relación, la cual tiene que cumplir con algunas restricciones:
- Cada columna debe tener su nombre único.
- No puede haber dos renglones iguales. No se permiten los
duplicados.
- Todos los datos en una columna deben ser del mismo tipo.
4. Teoría de la Normalización
• Técnica formal de análisis y organización de datos; trata de
evitar la redundancia y anomalías de actualización.
• Introduce formalización en el diseño lógico de base de datos
relacionales.
• Además permite mecanizar parte del proceso al disponer de
instrumentos algorítmicos de ayuda al diseño.
• Proceso de normalización: disminuye las anomalías de
actualización, pero penaliza las consultas (combinación
consume muchos recursos, las consultas demoran más en
dar resultados).
5. Las Formas normales
• Un esquema de relación está en una determinada forma normal si
satisface un determinado conjunto específico de restricciones
definidas sobre los atributos del esquema (dependencias).
– 1ª FN (Codd, 1970)
• Concepto de relación normalizada.
– 2ª, 3ª FN (Codd, 1970), FNBC (Boyce/Codd, 1974)
• Basadas en análisis de dependencias funcionales.
– 4ª FN. Fagin, 1977
• Basada en análisis de dependencias multivaluadas.
– 5ª FN. Fagin, 1979
• Basada en análisis de dependencias de proyección /
combinación.
6. Formas normales
Relaciones en 2ªFN
Relaciones en 3ªFN
Relaciones en FNBC
Relaciones en 4ªFN
Relaciones en 5ªFN
Relaciones normalizadas
Relaciones
8. Ejemplo 1
• Estamos en un servicio de biblioteca y
queremos llevar el control del préstamo que
incluya los siguientes datos:
• Información sobre el usuario del servicio, datos
del libro y la información sobre el préstamos que
se realiza.
9. Diagrama E-R para el ejemplo
• Estamos en un servicio de biblioteca y queremos llevar
el control del préstamo que incluya los siguientes datos:
• Información sobre el usuario del servicio, datos del libro
y la información sobre el préstamos que se realiza.
usuario libro
Existe una relación muchos a muchos que hay que romper.
10. Primera Forma Normal
• En una relación (tabla) no pueden existir grupos de repetición, es
decir, un atributo no puede tomar más de un valor del dominio
subyacente:
• Considerando la entidad usuario, sus atributos son:
i_usuario#, n_usuario, i_libro, d_prestamo, d_entrega
• Y considerando la entidad libro, sus atributos son:
i_libro#, n_título, n_editorial, n_país, d_año
• La entidad usuario, presenta el siguiente problema: cada vez que un
usuario pida un libro hay que escribir su número de usuario
(i_usuario) y su nombre (n_usuario), además en la realidad se
tendrán muchos datos más de los usuarios de la biblioteca.
• ¿Qué problemas puede traer esto?
• Hacer una tabla con datos y ver que pasa
11. La Tablita
i_usuario n_usuario i_libro d_prestamo d_entrega
3435 J. Perez Qa76.9 25/IV/07 13/V/07
3435 J. Perez Qa76.9 5/X/07 13/X/07
3435 J. Perez Qa76.893 3/III/07 13/III/07
5678 A. Ramírez Qa76.9 2/IV/07 3/V/07
12. Aplicando la Primera Forma Normal
1. Identificar “grupos de repetición”. En el ejemplo el “grupo
de repetición” es lo que está en rojo: i_usuario#, n_usuario,
i_libro, d_prestamo, d_entrega
2. Eliminar “grupos de repetición”. Para poderlos eliminar se
crea una nueva tabla con una llave primaria compuesta, una
parte es la llave primaria de la tabla original (i_usuario) y la
otra parte es la llave primaria del grupo de repetición (i_libro),
las entidades quedan así:
usuario (i_usuario#, n_usuario)
prestamo (i_usuario#, i_libro#, d_prestamo, d_entrega)
– De una entidad se crearon 2 entidades
– La entidad libro queda igual
libro(i_libro#, n_título, n_editorial, n_país, d_año)
13. Segunda Forma Normal
• Establece que todas las dependencias parciales se deben
eliminar y separar dentro de sus propias tablas.
• Una dependencia parcial es un atributo que no depende
completamente de la llave primaria. Normalmente se
presenta cuando la llave primaria es compuesta, es decir,
que está formada por dos atributos.
• Analizando la entidad préstamo que es la que tiene la llave
primaria compuesta:
prestamo (i_usuario#, i_libro#, d_prestamo, d_entrega)
• En este ejemplo todas las entidades se encuentran en 2
FN, ya que los atributos d_prestamo y d_entrega dependen
completamente de la llave primaria compuesta y no de una
parte de ésta.
14. Aplicando la Segunda Forma Normal
• Cuando alguna entidad se encuentre en 2FN, será
necesario:
1. Determinar cuáles atributos no dependen de la llave
primaria compuesta de la tabla.
2. Eliminar esas columnas de la tabla base.
3. Crear una segunda tabla con esos atributos cuya llave
primaria será el atributo del cual dependen.
15. Tercera Forma Normal
• Una relación está en 3FN si no hay dependencias transitivas.
Una dependencia transitiva es aquella en la cual existen
columnas (atributos) que dependen de otras columnas
(atributos) que tampoco son llave.
• En el ejemplo, estas dos entidades están en 3FN:
usuario (i_usuario#, n_usuario)
prestamo (i_usuario#, i_libro#, d_prestamo, d_entrega)
• Pero en esta entidad se puede aplicar la 3FN
libro(i_libro#, n_título, n_editorial, n_país, d_año)
16. Aplicando la Tercera Forma Normal
Los pasos a seguir son:
1. Determinar que columnas son dependientes de otra columna no
llave.
- En el ejemplo el atributo n_pais y d_año dependen del atributo
no llave n_editorial, por lo tanto se puede sacar a otra entidad.
2. Eliminar esas columnas de la tabla base
3. Crear otra tabla con esas columnas y con la columna no llave de
la cual son dependientes, crear una llave primaria para esta tabla.
- En el ejemplo, a partir de la entidad libro quedarían las
siguientes dos entidades:
libro(i_libro#, n_título, n_editorial, n_país, d_año)
editorial(i_editorial#, n_editorial, n_editorial, n_país, d_año)
17. Ejemplo 2
• Se requiere tener la información sobre los alumnos de los
distintos programas de postgrado de la UPCI. Sus datos
generales. Que grado cursan (especialidad, maestría y/o
doctorado) y el nombre del programa, que materias han
cursado, que calificación llevan en cada una de ellas, en que
período la cursaron y con que profesor. De cada materia se
necesita saber clave, su área y el número de créditos.
18. Metodología
• Identificar entidad(es): Definir objetos como personas, lugares
o conceptos sobre los que se quiere tener información.
• Identificar atributos: Definir las “propiedades” de cada
entidad
• Determinar llave primaria.
20. Primera Forma Normal
• 1FN: Identificar “grupos de repetición” en cada
entidad
• Cada grupo de repetición sacarlo a una nueva
entidad. Su llave primaria será una llave primaria
compuesta (2 atributos).
21. Aplicación Primera Forma Normal
• IDENTIFICAR GRUPO(S) DE REPETICION:
alumno(expediente#, nombre, grado, programa
(clave_mat, materia, profesor, periodo_cursada,
calificacion, creditos, área))
• SACAR GRUPO REPETICION A NUEVA ENTIDAD:
alumno(expediente#, nombre, grado, programa)
alumno-materia(expediente#, clave_mat#, materia,
profesor, periodo_cursada, calificacion, creditos,
área))
22. Segunda Forma Normal
• Identificar atributos que no dependen completamente
de la llave primaria compuesta
• Sacar a una nueva entidad los atributos que no
dependen completamente de la llave primaria
compuesta. La llave primaria de esta nueva entidad
será la parte de la llave primaria compuesta de la cual
dependen estos atributos.
23. Aplicación Segunda Forma Normal
• IDENTIFICAR ATRIBUTOS QUE NO DEPENDEN
COMPLETAMENTE DE expediente#-materia#:
materia, créditos, área SACARLOS A OTRA ENTIDAD
CON SU LLAVE PRIMARIA
alumno(expediente#, nombre, grado, programa)
alumno-materia(expediente#, clave_mat#,
periodo_cursada#, profesor, calificacion,))
materia(clave_mat#, materia, creditos, área)
24. Tercera Forma Normal
• Identificar atributos no llave que dependan de otro atributo no llave
alumno nombre
expediente# grado
programa
alumno-materia profesor,
expediente#, clave_mat#, periodo_cursada#,
calificacion
materia materia
clave_mat# creditos
área
• Analizar: un alumno puede estar en más de un programa? ya sea
al mismo tiempo o al finalizar uno, iniciar otro?
• ¿Conviene un catálogo de programas que se imparten en la UPCI?
25. Normalización
de Base de
Datos
@emalca Ing. Eddie Malca Vicente
emalca@iluminatic.com
/iluminatic emalca@gmail.com