BASES DE DATOS, MODELOS DE DATOS Y DBMS Maestría en Bioinformática – Marzo 2010 Bases de Datos Algunas definiciones: Bases de Datos y DBMS Procesos y Actores Involucrados ¿Por qué usar DBMSs? ¿Cuándo no usar un DBMSs? Algunas Definiciones ¿Qué es un Base de Datos (BD)? Conjunto de datos relacionados NO tiene por qué ser un programa. Ej: agenda de teléfonos ¿Qué es un Database Management System (DBMS)? Software especializado en la gestión de Bases de Datos Por lo general pensado para grande volúmenes de datos Procesos y Actores Involucrados Procesos: Definición de una BD Construcción de una BD Manipulación de una BD Actores: Administrador de BDs. Diseñador de BDs Desarrolladores de Sistemas de Información Usuarios finales ¿Por qué usar DBMSs? (I) ¿Qué aporta esta tecnología ? Software específico para manejo de datos relacionados. ¿Qué se haría si no se puede usar ? Desarrollar programas usando lenguajes de propósito general. C, Java, C++, ... ¿y esto que problemas trae ? Más trabajo para manipular datos. Productividad, Costos, Calidad. Ejemplo - Aplicación Bancaria Un banco posee un Sistema de Información. Está formado por los siguientes programas: Un programa que debita y/o acredita $ en cuentas. 2. Un programa que crea una cuenta nueva. 3. Un programa que devuelve el saldo de una cuenta. 4. Un programa que genera los movimientos mensuales de una cuenta. 5. Un programa que lista el cliente, la dirección y el saldo de su cuenta. Los datos se almacenan en archivos y los programas se escriben en lenguajes de propósito 1. Problemas al no usar DBMSs (I) Específicos a la implementación basada en archivos, a resolver por el programador. Inconsistencia de datos. Dificultades para el acceso a información. Programar consultas/listados específicos. Aislamiento de datos. Programar control de restricciones de Integridad. Programar algoritmos de merge (apareo archivos). Seguridad en datos. Programar los controles de acceso para los ítems. Problemas al no usar DBMSs (II) Control de concurrencia. ¿Qué pasa si se ejecuta el programa DEBITO desde dos estaciones ? Programa DEBITO (nro_cuenta, cant_retiro) cuenta = ObtenerCuenta(nro_cuenta); /* lectura de la cuenta a fin de visualizar el saldo actual de la misma y poder modificarlo */ cuenta.saldo := cuenta.saldo – cant_retiro; /* se actualiza el saldo */ GuardarCuenta(cuenta); /* se hace efectivo el retiro */ END Problemas al no usar DBMSs (III) Una ejecución podría ser de la forma: Puesto 1 (DEBITO(#10,50) Puesto 2 (DEBITO(#10,100) cuenta = ObtenerCuenta(#10) saldo = cuenta.saldo // ($ 500) saldo = saldo - 50 // (quedan $ 450) cuenta.saldo = saldo GuardarCuenta(cuenta) cuenta = ObtenerCuenta(#10) Fin DEBITO Fin DEBITO El saldo es $ 450 El saldo es $ 400 saldo = cuenta.saldo // ($ 500) saldo = saldo - 100 // (quedan $ 400) cuenta.saldo = saldo GuardarCuenta(cuenta) tiempo ¿Por qué usar DBMSs? (II) Organización de la información: Definición central de datos. Abstracción de Datos. Permite múltiples vistas de los datos. Programación del acceso a datos: Separación entre programas y datos. Control de Restricciones de Integridad. Estandarización de modelos y lenguajes. ¿Por qué usar DBMSs? (III) Explotación de la Base de Datos: Datos compartidos. Control de concurrencia. Seguridad y Recuperación ante fallas. Datos persistentes en modelos avanzados. ¿Por qué no usar DBMSs? Para evitar ciertos costos: Inversión en : Hardware Software Capacitación técnica Costo de administración del DBMS y la base de datos. Costo computacional para proveer: Control de concurrencia Restricción de acceso, etc. ¿Por qué no usar DBMSs? (II) En algunos casos el uso de un DBMS no se justifica : Muy pocos datos (planillas) Datos muy estables Alta performance (sistemas de tiempo real) Cuando no hay acceso concurrente Modelos de Datos y DBMS Modelos de Datos Esquemas e Instancias Arquitectura en tres niveles Tipos de DBMS ¿Cómo se interactúa con un DBMS? Estructura básica de DBMSs Modelos de Datos: Definición Lenguajes usados para especificar Bases de Datos Los Modelos de Datos permiten expresar: Estructuras: objetos de los problemas Restricciones: reglas que deben cumplir los datos EJ: CUENTAS(nro_cuenta, tipo, moneda, saldo) EJ: (∀c ∈ CUENTAS) (c.saldo > 0) Operaciones sobre los datos: insertar, borrar y consultar la BD EJ: INSERT INTO CUENTAS (2584,Caja de ahorros,pesos,5000) Modelos de Datos: Clasificación Según el nivel de abstracción: Conceptuales: Representan la realidad independientemente de cualquier implementación de BD Usados en etapa de Análisis Lógicos: Representan la implementación del conceptual en un DBMS particular Usado en etapas de Diseño e Implementación Físicos: Implementación de estructuras de datos Modelos de Datos Conceptuales La realidad expresada en términos de: Entidades: conceptos u objetos del mundo real Atributos: propiedades de las entidades Relaciones: asociaciones entre 2 o más entidades Utilizaremos un lenguaje gráfico para construir nuestros modelos (Modelo Entidad Relación) Modelos de Datos: Aplicación MUNDO REAL MODELADO CONCEPTUAL CAJAS DE AHORROS POSEEN CUENTAS CORRIENTES PERSONAS EJ: MODELO ENTIDAD RELACION ESQUEMA CONCEPTUAL CUENTAS DISEÑO DEL SISTEMA EJ: MODELO RELACIONA L ESQUEMA LÓGICO •TABLA CUENTAS(nro_cuenta, moneda, saldo) •TABLA PERSONAS (cédula, nombre, …) •TABLA POSEEN(cédula, nro_cuenta) Esquema e Instancias Esquema de una BD: Estructura y significado Muy estables. CUENTAS(nro_cuenta, moneda, saldo) PERSONAS (cédula, nombre, direccion, telefono) POSEEN(cédula, nro_cuenta) Instancias: Nro_cuenta Datos almacenados 25440 23456 Muy volátiles 23457 moneda saldo pesos 15000 dólares 500 dólares 850 Recordemos ... Propiedades importantes de DBMSs: Control centralizado de la BD. Separación entre esquema y aplicaciones. Esquema: visión global de los datos de la realidad. Aplicaciones: programas sobre la BD. Soporte a diferentes visiones de los datos. Usuarios/aplicaciones ven subconjuntos de la BD. Independencia de datos. Esquema lógico independiente de implementación. Niveles de Abstracción (arquitectura) NIVEL EXTERNO VISTA EXTERNA 1 VISTA EXTERNA 2 VISTA EXTERNA 3 NIVEL CONCEPTUAL ESQUEMA CONCEPTUAL NIVEL INTERNO ESQUEMA INTERNO Tipos de DBMS Según el Modelo de Datos que usan para la representación interna: Según distribución de la BD: Relacional (RDBMS) Orientado a Objetos (OODBMS) Otros: Redes, Jerárquico, Deductivo Centralizado Distribuido En el curso usaremos un RDBMS centralizado: PostgreSQL ¿Cómo se interactúa con un DBMS? Existen lenguajes que me permiten: Definir el esquema (crear, borrar, modificar) Manipular las instancias (crear borrar, modificar) Query Language (QL) Crear vistas Data Manipulation Language (DML) Hacer consultas Data Definition Language (DDL) View Definition Language (VDL) SQL (Structured Query Language) lenguaje que permite hacer todo esto sobre los RDBMS ¿Cómo se interactúa con un DBMS? (II) Mediante lenguajes de programación: Los lenguajes definen abstracciones (ej: bibliotecas) Usándolas interactuo con el DBMS También puedo interactuar usando programas cliente que provee el fabricante del DBMS Estructura de DBMS Referencias “Fundamentals of Database Systems 5th Ed.”, Elmasri & Navathe, Addison Wesley, 2007. (cap. 2 y 3) Curso Fundamentos de Bases de Datos, INCO, http://www.fing.edu.uy/inco/cursos/bdatos/