1. 06/06/2013
1
BD-NORMALIZACION
Introducción
• El diseño 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.
• 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.
NORMALIZACION
• 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
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.
2. 06/06/2013
2
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.
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
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
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)
usuariolibro (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)
3. 06/06/2013
3
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 usuariolibro que es la que tiene la llave primaria
compuesta:
usuariolibro (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.
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.
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)
usuariolibro (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)
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)
editorial(i_editorial#, n_editorial, n_editorial, n_país, d_año)
4. 06/06/2013
4
Ejercicio
• Crear el diagrama entidad relación para el
ejemplo del préstamo de la biblioteca
• Incluir atributos y cardinalidad.
En el servicio de biblioteca queremos llevar el control de los préstamos
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
usuario librousuariolibro
Hay que romper la relación muchos a muchos, creando una relación intermedia
editorial
EJERCICIO
Se requiere tener la información sobre los alumnos de
la EAP. Sus datos generales. Que año cursan, las
materias aprobadas, la calificación en cada una de
ellas, en que período la cursaron y con que profesor.
De cada materia se necesita saber el nombre, el
horario, el régimen y si es promocional.
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
5. 06/06/2013
5
EJEMPLO
• ENTIDADES: alumno
• ATRIBUTOS: id_alumno, nombre, apellido
,teléfono, dirección, mail
• LLAVE PRIMARIA: id_alumno
• La entidad resultante es:
Entidad: alumno
atributos:(id_alumno#,
nombre,
apellido,
teléfono,
dirección,
mail)
NORMALIZACION: 1FN
• 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)
NORMALIZACION: 2FN
• 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.
NORMALIZACIÓN: 3FN
• Identificar atributos no llave que dependan
de otro atributo no llave
6. 06/06/2013
6
Ejercicio
• Se desea llevar el control de los trabajos de
investigación que están realizando los investigadores de
un instituto. De cada investigador se requieren sus
datos generales, sus grados académicos, su experiencia
profesional, lugar de trabajo, etc. De los trabajos
realizados se requiere, título, autor(es), tema, resumen,
revista en la que se publicó y/o congreso.
• Diseñar la base de datos que puede guardar esta
información, siguiendo las reglas de la normalización.
• ¿Hay información adicional que se pueda requerir?
MUCHAS GRACIAS