Professional Documents
Culture Documents
Introduccin
El diseo tiene como objetivo obtener una serie de esquemas que permitan almacenar informacin, sin redundancia y de fcil acceso. Las formas normales permiten lograr un buen diseo. Para esto se necesita informacin acerca del problema que se est modelando. Parte de esta informacin se encuentra en un diagrama E-R, pero se necesita informacin adicional.
NORMALIZACION
El proceso de normalizacin de una base de datos consiste en aplicar una serie de reglas a las relaciones obtenidas en el modelo E-R (entidad-relacin). Las bases de datos relacionales se normalizan para:
Evitar la redundancia de los datos. Evitar problemas de actualizacin de los datos en las tablas. Proteger la integridad de los datos.
En el modelo relacional es frecuente llamar tabla a una relacin, 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 prstamo que incluya los siguientes datos: Informacin sobre el usuario del servicio, datos del libro y la informacin sobre el prstamos que se realiza.
La entidad usuario, presenta el siguiente problema: cada vez que un usuario pida un libro hay que escribir su nmero de usuario (i_usuario) y su nombre (n_usuario), adems en la realidad se tendrn muchos datos ms 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. Ramrez
Qa76.9
2/IV/07
3/V/07
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.
1. 2. 3.
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_ttulo, n_editorial, n_pas, d_ao)
Los pasos a seguir son: Determinar que columnas son dependientes de otra columna no llave.
En el ejemplo el atributo n_pais y d_ao dependen del atributo no llave n_editorial, por lo tanto se puede sacar a otra entidad.
1. 2.
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 quedaran las siguientes dos entidades: libro(i_libro#, n_ttulo, n_editorial, n_pas, d_ao) editorial(i_editorial#, n_editorial, n_editorial, n_pas, d_ao)
Ejercicio
Crear el diagrama entidad relacin para el ejemplo del prstamo de la biblioteca Incluir atributos y cardinalidad.
Estamos en un servicio de biblioteca y queremos llevar el control del prstamo que incluya los siguientes datos: Informacin sobre el usuario del servicio, datos del libro y la informacin sobre el prstamos que se realiza.
usuario libro
Hay que romper la relacin muchos a muchos, creando una relacin intermedia
usuario
prestamo
libro
EJERCICIO
Se requiere tener la informacin sobre los alumnos de los distintos programas de posgrado del CADIT. Sus datos generales. Que grado cursan (especialidad, maestra y/o doctorado) y el nombre del programa, que materias han cursado, que calificacin llevan en cada una de ellas, en que perodo la cursaron y con que profesor. De cada materia se necesita saber clave, su rea y el nmero de crditos.
METODOLOGA
Identificar entidad(es): Definir objetos como personas, lugares o conceptos sobre los que se quiere tener informacin. Identificar atributos: Definir las propiedades de cada entidad Determinar llave primaria
EJEMPLO
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)
NORMALIZACION: 1FN
1FN: Identificar grupos de repeticin en cada entidad Cada grupo de repeticin 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.
NORMALIZACIN: 3FN
Identificar atributos no llave que dependan de otro atributo no llave alumno nombre expediente# grado programa alumno-materia expediente#, clave_mat#, periodo_cursada#, profesor, calificacion materia materia clave_mat# creditos rea Analizar: un alumno puede estar en ms de un programa? ya sea al mismo tiempo o al finalizar uno, iniciar otro? Conviene un catlogo de programas que se imparten en el CADIT?
Ejercicio
Se desea llevar el control de los trabajos de investigacin que estn realizando los investigadores de un instituto. De cada investigador se requieren sus datos generales, sus grados acadmicos, su experiencia profesional, lugar de trabajo, etc. De los trabajos realizados se requiere, ttulo, autor(es), tema, resumen, revista en la que se public y/o congreso. Disear la base de datos que puede guardar esta informacin, siguiendo las reglas de la normalizacin. Hay informacin adicional que se pueda requerir?
Ejercicio
Obtener las tablas y normalizar las tablas: IDENTIFICACION DE LAS VISTAS DEL USUARIO El equipo de diseo 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 operacin 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 debern facturar los cargos correspondientes. La factura contiene los siguientes datos Nombre del paciente, nmero del paciente, direccin del paciente, fecha de ingreso, fecha de salida. En columnas aparecen la clave del servicio, su descripcibn (cuarto, rayos X, televisin, pruebas de laboratorio, etc) y el cargo por cada una.
VISTA 2: UTILIZACION DE CUARTOS El reporte de utilizacin 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 asignacin de camas y el control de la utilizacin 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, Nmero de cuarto Tipo de cuarto, Paciente_nmero, Paciente_nombre, Fecha de entrada Fecha de salida
La columna NUMERO DE CUARTO en el reporte indica el nmero de cuarto y el nmero 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 informacin 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.
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 nmero del paciente para desplegar los datos de un paciente (en la prctica, el sistema probablemente soportar una bsqueda en funcin del nombre) El reporte del paciente recibe los siguientes datos: nmero_paciente, nombre_paciente, direccin_paciente, fecha_ingreso, fecha_salida, nmero_cuarto, extensin.
VISTA 4: REPORTE MEDICO El reporte mdico se prepara diario para cada mdico del grupo del hospital, mostrando los pacientes que han sido tratado y el nombre del tratamiento. Para simplificar el anlisis, suponemos que cada paciente puede recibir solo un tratamiento de un mdico cada da. El reporte mdico tiene los siguientes datos: fecha del reporte mdico encargado, telfono del mdico y columnas con los siguientes datos: nmero_paciente, nombre_paciente, nmero_cuarto,tratamiento