Title: NORMALIZACION
1NORMALIZACION
2Introducció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.
3NORMALIZACION
- 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
4Ejemplo
- 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.
5Diagrama 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.
6Primera 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
7i_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
8Aplicando la Primera Forma Normal
- 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 - 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)
9Segunda 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. -
10Aplicando la Segunda Forma Normal
- Cuando alguna entidad se encuentre en 2fn, será
necesario - Determinar cuáles atributos no dependen de la
llave primaria compuesta de la tabla. - Eliminar esas columnas de la tabla base.
- Crear una segunda tabla con esos atributos cuya
llave primaria será el atributo del cual
dependen.
11Tercera 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)
12Aplicando la Tercera Forma Normal
- Los pasos a seguir son
- 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. - Eliminar esas columnas de la tabla base
- 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)
13Ejercicio
- Crear el diagrama entidad relación para el
ejemplo del préstamo de la biblioteca - Incluir atributos y cardinalidad.
14- 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
Hay que romper la relación muchos a muchos,
creando una relación intermedia
usuario
libro
prestamo
15EJERCICIO
- Se requiere tener la información sobre los
alumnos - de los distintos programas de posgrado del CADIT.
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.
16METODOLOGÍ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
17EJEMPLO
- ENTIDADES alumno
- ATRIBUTOS expediente, nombre, clave_mat,
calificacion, trimestre, creditos, materia - LLAVE PRIMARIA expediente
- La entidad resultante es
- alumno(expediente, nombre, grado, programa
clave_mat, materia, profesor, periodo_cursada,
calificacion, creditos, área)
18NORMALIZACION 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)
19Aplicació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))
20NORMALIZACION 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.
21Aplicació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)
22NORMALIZACIÓN 3FN
- 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 el CADIT?
23Ejercicio
- 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?
24Ejercicio
- Obtener las tablas y normalizar las tablas
- IDENTIFICACION DE LAS VISTAS DEL USUARIO
- El equipo de diseño entrevistó a los posibles
usuarios del sistema - en el hospital, incluyendo enfermeras, doctores,
administradores, - etc. Obtuvieron muestras de reportes existentes
y otros documentos - para la operación del hospital. A partir de lo
anterior se identificaron - cuatro vistas de datos significativas para el
hospital - VISTA 1 FACTURA DEL PACIENTE
- La primera vista es la de la factura del
paciente. Los cargos de - cada paciente se acumulan durante su estancia en
el hospital. - Una vez dado de alta se deberán facturar los
cargos correspondientes. - La factura contiene los siguientes datos
- Nombre del paciente, número del paciente,
dirección del paciente, - fecha de ingreso, fecha de salida.
- En columnas aparecen la clave del servicio, su
descripcióbn - (cuarto, rayos X, televisión, pruebas de
laboratorio, etc) - y el cargo por cada una.
25- VISTA 2 UTILIZACION DE CUARTOS
- El reporte de utilización de cuartos es un
reporte diario que muestra - el status de cada cuarto y cama en el hospital.
Este reporte se usa - principalmente para la asignación de camas y el
control de la utilización - de cuartos y camas.
- El reporte que se utiliza para llevar el control
de cuartos contiene los - siguientes datos Fecha en la que se hace el
reporte, Número de cuarto - Tipo de cuarto, Paciente_número, Paciente_nombre,
Fecha de entrada - Fecha de salida
26- La columna NUMERO DE CUARTO en el reporte indica
el número - de cuarto y el número de cama que ocupa el
paciente, por ejemplo - 101-2 es el cuarto 101 y la cama 2. El tipo de
cuarto puede ser privado - (PR) y semiprivado (SP). Las columnas restantes
contienen información - acerca del paciente (si es que lo hay), asignado
a esa cama y a ese - cuarto en el momento de que se preparó el
reporte.
27- VISTA 3 DATOS DEL PACIENTE
- Los datos del paciente se presentan porque
cualquier doctor, - enfermera o miembros del hospital pueden
necesitarlos. - Suponemos que el usuario deberá introducir el
número del - paciente para desplegar los datos de un paciente
(en la práctica, - el sistema probablemente soportará una búsqueda
en función - del nombre)
- El reporte del paciente recibe los siguientes
datos número_paciente, - nombre_paciente, dirección_paciente,
fecha_ingreso, fecha_salida, - número_cuarto, extensión.
28- VISTA 4 REPORTE MEDICO
- El reporte médico se prepara diario para cada
médico del grupo - del hospital, mostrando los pacientes que han
sido tratado y el - nombre del tratamiento. Para simplificar el
análisis, suponemos - que cada paciente puede recibir solo un
tratamiento de un médico - cada día.
- El reporte médico tiene los siguientes datos
fecha del reporte - médico encargado, teléfono del médico
- y columnas con los siguientes datos
número_paciente, - nombre_paciente, número_cuarto,tratamiento