 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.
 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
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.
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.
 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
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)
 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.
 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.
 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)
 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.
1. Eliminar esas columnas de la tabla base
2. 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)
 Crear el diagrama entidad relación para el
ejemplo del préstamo de la biblioteca
 Incluir atributos y cardinalidad.
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
usuario libroprestamo
Hay que romper la relación muchos a muchos, creando una relación intermedia
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.
 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
 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)
 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)
 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))
 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.
 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)
 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?
 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?
 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.
 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
 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.
 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.
 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

Tuto 2 -normalizacion

  • 2.
     El diseñotiene 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.
  • 3.
     El procesode 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.
    Estamos en unservicio 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.
  • 5.
    Estamos en unservicio 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.
  • 6.
     En unarelació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
  • 7.
    i_usuario n_usuario i_librod_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
  • 8.
    1. Identificar “gruposde 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)
  • 9.
     Establece quetodas 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.
  • 10.
     Cuando algunaentidad 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.
  • 11.
     Una relaciónestá 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)
  • 12.
     Los pasosa 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. 1. Eliminar esas columnas de la tabla base 2. 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)
  • 13.
     Crear eldiagrama entidad relación para el ejemplo del préstamo de la biblioteca  Incluir atributos y cardinalidad.
  • 14.
    Estamos en unservicio 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 usuario libroprestamo Hay que romper la relación muchos a muchos, creando una relación intermedia
  • 15.
    Se requiere tenerla 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.
  • 16.
     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
  • 17.
     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)
  • 18.
     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)
  • 19.
     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))
  • 20.
     Identificar atributosque 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.
  • 21.
     IDENTIFICAR ATRIBUTOSQUE 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)
  • 22.
     Identificar atributosno 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?
  • 23.
     Se deseallevar 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?
  • 24.
     Obtener lastablas 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 columnaNUMERO 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