Atributos
Sigla: 
CI-0127
Créditos: 
4
Horas: 
5
Clasificación: 
Curso propio
Énfasis y ciclo: 
Tronco común 3.II
Descripción: 

Este es un curso introductorio de bases de datos relacionales, el cual abarca los fundamentos teóricos y prácticos de su diseño, implementación, consulta, operación, control de concurrencia y recuperación. El curso está diseñado para estudiantes de tercer año de la carrera de Bachillerato en Computación e Informática, que lleven simultáneamente los cursos Ingeniería de Software y Proyecto Integrador de Ingeniería de Software y Bases de Datos. En particular, este curso ofrece los conocimientos y habilidades esenciales para desarrollar el proyecto integrador y a su vez el proyecto sirve para consolidar y motivar estos conocimientos y habilidades al proveer un contexto de aplicación integrado.  Se espera que una vez concluido este curso y el curso Proyecto Integrador de Ingeniería de Software y Bases de Datos, el estudiante demuestre una base sólida de las bases de datos relacionales. Este curso también permite a los énfasis que tienen el curso de Bases de Datos Avanzadas en su plan de estudios, partir de una formación base en sus estudiantes, para poder estudiar conceptos avanzados del área de base de datos.

Objetivo general: 

El objetivo general del curso es que los estudiantes desarrollen habilidades para diseñar, implementar, consultar y operar bases de datos relacionales, considerando los mecanismos de control de concurrencia y recuperación de los sistemas de gestión de bases de datos, con el fin de que construyan bases de datos sin redundancia y las operen correctamente, mediante estrategias que integren lo teórico y lo práctico, incluyendo un fuerte componente de actividades en el laboratorio.  

Objetivos específicos: 

Durante este curso el estudiante desarrollará habilidades para:

  1. Identificar los principales componentes de un sistema de base de datos y su utilidad, con el fin de reconocer la importancia que tienen las bases de datos dentro de los sistemas de software, a través de estrategias esencialmente declarativas.
  2. Diseñar bases de datos relacionales que satisfagan los requerimientos de datos y operaciones de un sistema, mediante la presentación de ejemplos y contraejemplos de buen diseño, así como el desarrollo de ejercicios prácticos de diseño.
  3. Implementar, consultar y operar bases de datos relacionales, mediante el uso práctico del lenguaje SQL en el laboratorio, para construir bases de datos que operen correctamente.
  4. Diferenciar entre un índice primario, secundario y agrupado, mediante estrategias declarativas que ilustren sus características respecto a la organización física de archivo y de índice, con el fin de elegir el más adecuado en diversos contextos.
  5. Ilustrar el concepto y las propiedades de una transacción, mediante la combinación de estrategias declarativas y ejecución concurrente de operaciones con y sin transacciones, para justificar la utilidad de las transacciones en bases de datos multiusuario y concurrentes.
  6. Utilizar y contrastar diferentes protocolos de control de concurrencia, mediante la ejecución y discusión de ejemplos, para seleccionar el más adecuado en cada contexto.
  7. Utilizar y contrastar diferentes mecanismos de recuperación ante fallos, mediante la ejecución y discusión de ejemplos, para predecir el comportamiento de la base de datos ante fallos.
Contenidos: 
Objetivo específico Eje temático Desglose
Durante las primeras 7 semanas del curso, se prepara al estudiante para completar la Iteración 0 del Proyecto Integrador 
1 Introducción a las bases de datos Nociones básicas y contextualización: Terminología básica: base de datos, sistema de base de datos, sistema de gestión de bases de datos (SGBD). Funcionalidad de un SGBD y principales componentes. Niveles externo, conceptual e interno de una base de datos. Lenguajes de bases de datos. Arquitectura y evolución de los sistemas de bases de datos.
2 Diseño de bases de datos relacionales (Parte I) Diseño conceptual: Etapas del diseño de una base de datos. Diseño conceptual de bases de datos utilizando el modelo Entidad-Relación extendido (EER) o UML.
Diseño lógico: Diseño lógico de bases de datos utilizando el modelo Relacional. Algoritmo de transformación de diagramas EER o UML en esquemas relacionales. 
3 Implementación, manipulación y consulta  de bases de datos relacionales (Parte I) Uso básico de SQL: Comandos de SQL para la definición del esquema de la base de datos con sus restricciones. Comandos básicos de SQL para la consulta y manipulación (inserción, borrado y actualización) de datos.
2 Diseño de bases de datos relacionales (Parte II) Evaluación de la calidad del diseño: Guías informales de buen diseño. Proceso formal de normalización para asegurar diseños de alta calidad: dependencias funcionales y formas normales (hasta 3era forma normal).
Durante las siguientes 3 semanas del curso, se prepara al estudiante para completar la Iteración 1 del Proyecto Integrador
3 Implementación, manipulación y consulta de bases de datos relacionales (Parte II) Uso avanzado de SQL: Consultas avanzadas en SQL. Programación de procedimientos almacenados, disparadores (triggers) y cursores. Comandos de SQL para la creación y consulta de vistas.
Durante las siguientes 3 semanas del curso, se prepara al estudiante para completar la Iteración 2 del Proyecto Integrador
4 Organización física de archivos e índices Nivel físico de las bases de datos: Organización física de los archivos en medios de almacenamiento secundario (concepto de bloque, archivos ordenados vs. secuenciales). Concepto de índice y su utilidad para mejorar el rendimiento de las consultas. Tipos de índice: primario, secundario y agrupado. Árbol B+. Buenas prácticas sobre el uso de índices.
5 Transacciones Conceptos básicos de transacciones: Concepto de transacción. Estados de una transacción. Propiedades ACID de las transacciones. Ejecución concurrente de las transacciones y problemas típicos.
6 Control de la concurrencia Control de la concurrencia: Diferentes mecanismos para el control de concurrencia basados en candados (two-phase locking y de granularidad múltiple) y de validación (optimista).  Uso de candados para control de concurrencia en los índices. Interbloqueos (deadlocks), formas de prevenirlos y detectarlos.
Niveles de aislamiento: Diferentes niveles de aislamiento. Problemas existentes y tipos de candados asociados con cada nivel de aislamiento.
7 Recuperación ante fallos Fallos y su recuperación: Tipos de fallos en bases de datos. Bitácora del sistema. Diferentes mecanismos usados por el sistema de recuperación del SGBD (protocolos No-Undo/Redo, Undo/Redo, Undo/No-Redo, No-Undo/No-Redo).
Bibliografía: 

Libro de texto recomendado:

  1. Elmasri R. y Navathe S. “Fundamentos de Sistemas de Bases de Datos”, 6ta ed. Pearson-Addison Wesley, 2010.

Otra bibliografía de apoyo:

  1.  Bernstein P.A. y Newcomer, E. “Principles of Transaction Processing”, 2da edición. Morgan Kaufman Publisher, 2009.
  2. Connolly T.M. y Begg C.E. “Database Systems: A Practical Approach to Design, Implementation and Management”, 5ta ed. Pearson/Addison-Wesley, 2009.
  3.  Garcia-Molina H., Ullman J., y Widom J. “Database Systems: The Complete Book”, 2da ed.  Pearson, 2008. 
  4. Gray J. y Reuter A.  “Transactions Processing: Concepts and Techniques”. Morgan Kaufman Publishers, 1995. 
  5. Hellerstein M. y Stonebraker, M.  “Readings in Database Systems”, 4ta edición.   Morgan Kaufman Publishers, 2005.
  6. Malinowski E. “Material de Apoyo Bases de Datos I” (folleto del curso), Escuela de Ciencias de la Computación e Informática, UCR, 2011. 
  7. Ramakrishnan R. y Gehrke J. “Database Management Systems”, 3ra ed. McGraw-Hill, 2002. 
  8. Weikum G. y Vossen G. “Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery”. Morgan Kaufmann Publishers, 2002. 
  9. Zaniolo C., Ceri S., Faloutsos C., Snodgrass R., Zicari R. y Subrahmanian V.S. “Advanced Database Systems”. Morgan Kaufmann, 1997.
     
LIberación de responsabilidad: 

Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.