Bases de Datos y Sistemas de Información Curso para estudiantes con perfil de grado biológico Docentes Ing. Alfonso Vicente Duración 40 horas de clase teórico/prácticas 20 horas para la realización de trabajos obligatorios Créditos 8 créditos Objetivos La Bioinformática es, por definición, una actividad multidisciplinaria. Los profesionales no informáticos que se involucren en esta área deberán manejar una serie de conceptos y procesos involucrados en la construcción, explotación y mantenimiento de un sistema de información de forma de mejorar la calidad de la comunicación. De la misma forma, los informáticos que trabajen en esta área de conocimiento, deberán adquirir los conceptos básicos que les permitan modelar y comprender adecuadamente el dominio de aplicación. Este curso se enfoca a atacar el primer problema con el objetivo principal de generar un lenguaje común entre profesionales de las áreas biológicas e informáticos en lo que respecta al desarrollo de Sistemas de Información, el manejo de Bases de Datos y el desarrollo y uso de aplicaciones Web. El curso está orientado a profesionales no informáticos que necesitan participar activamente en los procesos de desarrollo, explotación y mantenimiento de ciertos tipos de sistemas informáticos utilizados en su área. En este caso, está especialmente orientado a investigadores del área biológica. Conocimientos previos Se parte de la base que el estudiante es capaz de utilizar una PC a nivel de usuario, y que tiene conocimientos básicos de matemática (teoría de conjuntos, relaciones, funciones) y lógica (lógica proposicional básica, tablas de verdad). Metodología de enseñanza Clases teóricas de presentación de los conceptos, acompañadas de material de lectura. Se intentará presentar lo fundamental de la disciplina de Bases de Datos, sin la rigurosidad de un curso de la carrera de Ingeniería en Computación, y haciendo énfasis en la aplicabilidad de los conceptos en la vida real. Se intentará además dar un panorama general del estado del arte en cuanto a tecnologías relacionadas a Sistemas de información. Resolución de problemas prácticos y discusión de dudas. Se fomentará el tratamiento de problemas presentados por los estudiantes. Clases de laboratorio en máquina, donde se realizarán tareas que acompañen los temas tratados en el curso Forma de evaluación Trabajos obligatorios individuales Prueba escrita final individual Temario Conceptos generales sobre Sistemas de Información, Arquitectura de Software y Bases de Datos. La intención es familiarizar al estudiante con las tareas y los conceptos más generales involucrados en la definición, implementación, explotación y mantenimiento de un sistema. Fundamentos de matemática y lógica. Se presentarán los conceptos básicos de matemática y lógica, sobre los cuales se apoya el modelo relacional. Se discutirá la importancia de las bases de datos relacionales. Modelo Entidad-Relación. Se presentará el Modelo Entidad-Relación (MER) como herramienta para el modelado de datos, y se discutirán técnicas y decisiones de modelado. Se practicará en el modelado de diferentes realidades mediante el MER. Calidad de Datos. Se presentarán brevemente los principales conceptos de calidad de esquemas y calidad de datos, discutiendo sobre alternativas de modelado. Modelo Relacional. Se presentará la teoría del modelo relacional, y se verá cómo transformar un MER en un conjunto de tablas. Structured Query Language (SQL). Se presentarán las bases del lenguaje de consulta SQL, se practicarán consultas SQL incluyendo prácticas de laboratorio con DBMSs reales, y se discutirá el poder expresivo de este lenguaje. Performance. Se presentarán brevemente las consideraciones más importantes sobre performance, planes de ejecución, utilización de índices y particionamiento. Se discutirán las limitaciones de las bases de datos relacionales en lo que respecta a performance. Taller con DBMSs reales. Se presentará la forma básica de trabajar con algunos de los principales DBMSs del mercado, y se discutirá sobre sus similitudes y diferencias. Programación sobre Bases de Datos. Se verán ejemplos de lenguajes procedurales implementados por los propios DBMSs así como la forma de acceder a las bases de datos utilizando otros lenguajes de programación, fundamentalmente Java/JDBC. Se hará énfasis en la lógica transaccional, en el uso de COMMIT y ROLLBACK, y en el manejo de excepciones. Alternativas al modelo relacional. Se describirán brevemente alternativas al modelo relacional, como NoSQL, NewSQL y BigData. Bibliografía básica Sistemas de Bases de Datos, Elmasri & Navathe, Addison Wesley, 2000 Database in Depth, C. J. Date, O’Reilly, 2005 Applied Mathematics for Database Professionals, de Haan & Koppelaars, Apress, 2007 SQL in a Nutshell, K. E. Kline, O’Reilly, 2004 Papers seleccionados A Relational Model of Data for Large Shared Data Banks, Edgar F. Codd, Communications of the ACM, 1970 The Entity-Relationship Model - Toward a Unified View of Data, P. P. -S. Chen, ACM Transactions on Database Systems, 1976 On the Correctness of Representing Extended Entity-Relationship Structures in the Relational Model, Markowitz and Shoshani, Proceedings of the ACM, 1989 The End of an Architectural Era, Stonebraker et. al, VLDB, 2007 Urban Myths About SQL, Stonebraker, VoltDB, 2010