Tema 1: Introducción Objetivos de los sistemas de bases de datos Vistas de datos Modelos de datos Lenguajes de definición de datos (DDL) Lenguajes de manipulación de datos (DML) Gestión de transacciones Gestión de almacenamiento Administrador de bases de datos Usuarios de bases de datos Estructura general del sistema Bases de datos 1 Definición Es una colección de datos operativos almacenados y utilizados por los programadores de aplicaciones y por usuarios finales de muy diversa índole Idea básica al implementar una BD: Aprovechar los mismos datos para tantas aplicaciones como sea posible. Bases de datos 2 Sistema gestor de bases de datos (SGBD) Conjunto de datos relacionados Conjunto de programas para acceder a los datos Un SGBD contiene información sobre una realidad concreta Un SGBD proporciona un entorno que es conveniente y eficiente en su uso Aplicaciones de bases de datos: + Bancos: todas las transacciones + Líneas aéreas: reservas, planificaciones + Universidades: matrícula, titulaciones + Ventas: clientes, productos, compras + Fabricación: producción, inventario, suministros + Recursos humanos: registros de usuarios, salarios Las bases de datos “tocan” todos los aspectos de nuestras vidas Bases de datos 3 Objetivos de un sistema de bases de datos Las primeras aplicaciones de bases de datos se construían sobre los sistemas de ficheros Problemas de usar sistemas de ficheros para almacenar datos: + Redundancia de datos e inconsistencias Varios formatos de fichero, información duplicada en diferentes ficheros + Dificultad en acceder a los datos Necesidad de escribir un nuevo programa para cada nueva tarea + Aislamiento de datos — multiples ficheros y formatos + Problemas de integridad Las restricciones de integridad (p.e. balance > 0) son parte del código del programa Dificultad en añadir nuevas restricciones o cambiar las existentes Bases de datos 4 Objetivos de un sistema de bases de datos (Cont.) Problemas de usar sistemas de ficheros (cont.) + Atomicidad de actualizaciones Los fallos pueden dejar la base de datos en un estado inconsistente debido a actualizaciones parciales P.e. transferir fondos de una cuenta a otra debería o bien realizarse completamente o bien no realizarse + Acceso concurrente por varios usuarios Los accesos concurrentes son necesarios para aumentar las prestaciones Los accesos concurrentes incontrolados pueden llevar a inconsistencias – P.e. dos personas leyendo un balance y modificándolo a la vez + Problemas de seguridad Los sistemas de bases de datos dan soluciones a todos estos problemas Bases de datos 5 Objetivos de un sistema de bases de datos (Cont.) Es decir, un SGBD tiene por objetivos: + Acceso concurrente + Independencia física y lógica + Redundancia controlada de los datos + Alta relacionabilidad de los datos + Integridad de los datos + Consistencia de los datos + Seguridad de los datos + Actualización fácil y coherente + Alto rendimiento + Reducción de la dificultad de programación Bases de datos 6 Niveles de abstracción El nivel físico describe cómo se almacena un registro (p.e., cliente). El nivel lógico: describe los datos almacenados en la base de datos y las relaciones entre los datos. type cliente = record nombre : string; calle : string; ciudad : integer; end; EL nivel de vista: los programas de aplicación ocultan detalles de los tipos de datos. Las vistas también pueden ocultar información (p.e. salario) por motivos de seguridad. Bases de datos 7 Vistas de datos Una arquitectura para un sistema de bases de datos nivel de vista vista 1 vista 2 vista n nivel lógico nivel físico Bases de datos 8 Visión global El mundo real Las bases de datos Bancos, líneas aéreas, … Modelos de información, conjuntos de entidades, atributos, ref. cruzadas, … Árboles equilibrados, Las estructuras de datos ficheros secuenciales, indexados, cadenas, hash, listas invertidas, … El almacenamiento físico Bits, bytes, registros, códigos ASCII, EBCDIC, … Bases de datos 9 Instancias, esquemas e independencia Similar a tipos de datos y variables en lenguajes de programación Esquema – la estructura lógica de la base de datos + P.e., la base de datos consiste en información sobre un conjunto de clientes y cuentas y la relación entre ellos) + Análogo al tipo de datos de una variable en un programa + Esquema físico: el diseño de la base de datos a nivel físico + Esquema lógico: el diseño de la base de datos a nivel lógico Instancia – el contenido actual de la base de datos en un instante concreto + Análogo al valor de una variable Independencia física de los datos – la habilidad para modificar el esquema físico sin cambiar el esquema lógico + Las aplicaciones dependen del esquema lógico + En general, los interfaces entre los diferentes niveles y componentes debería estar bien definidos para que los cambios en algunas partes no afecten de forma importante a otras. Bases de datos 10 Modelos de datos Una colección de herramientas para describir + datos + relaciones entre datos + semántica de los datos + restricciones de los datos Modelo Entidad-Asociación o Entidad-Relación Modelo relacional Otros modelos: + Modelo orientado a objetos + Modelos de datos semiestructurados + Modelos antiguos: modelo de red y modelo jerárquico Bases de datos 11 Modelo Entidad-Asociación Ejemplo de esquema en el modelo entidad-asociación nombre-cliente calle-cliente id-cliente saldo ciudad-cliente clientes Bases de datos numero-cuenta depositante cuentas 12 Modelo Entidad-Asociación (Cont.) Modelo E-A del mundo real + Entidades (objetos) P.e. clientes, cuentas, sucursales bancarias + Asociaciones entre entidades P.e. La cuenta A-101 pertenece al cliente Pérez La asociación depositante asocia clientes con cuentas Ampliamente utilizado para diseño de bases de datos + El diseño de bases de datos en el modelo E-A normalmente se transforma en un diseño en el modelo relacional que se utiliza para almacenamiento y procesamiento Bases de datos 13 Modelo Relacional Ejemplo de datos tabulares en el modelo relacional Atributos Id-Cliente nombre-cliente 192-83-7465 Pérez 019-28-3746 Gómez 192-83-7465 López 321-12-3123 Gómez 019-28-3746 González Bases de datos calle-cliente ciudad-cliente numero-cuenta Principe Vigo A-101 Real Santiago A-215 Real Vigo A-201 Sol Madrid A-217 Norte Lugo A-201 14 Un ejemplo de base de datos relacional Id-cliente nombre-cliente calle-cliente ciudad-cliente 192-83-7465 Sánchez Alma Santiago 019-28-3746 Rodríguez Norte Vigo 677-89-9011 Gómez Príncipe Madrid 182-73-6091 Fernández Alcalá Madrid 321-12-3123 Veiga Príncipe Madrid 336-66-9999 López Diagonal Barcelona 019-28-3746 Rodríguez Norte Vigo (a) Tabla clientes numero-cuenta saldo A-101 500 A-215 700 A-102 400 A-305 350 A-201 900 A-217 750 A-222 700 (b) Tabla cuentas Id-cliente numero-cuenta 192-83-7465 A-101 192-83-7465 A-201 019-28-3746 A-215 677-89-9011 A-102 182-73-6091 A-305 321-12-3123 A-217 336-66-9999 A-222 019-28-3746 A-201 (c) Tabla depositante Bases de datos 15 Sistemas Gestores de Bases de Datos UN SGBD es un software que al menos: Gestiona las BD y al acceso a las mismas. Proporciona un LDD (Lenguaje de Definición de Datos) + Proporciona facilidades para definir esquemas Proporciona un LMD (Lenguaje de Manipulación de Datos) + Proporciona facilidades para acceder y manipular los datos organizados en el modelo de datos apropiado Bases de datos 16 Lenguajes de definición de datos (DDL) Especificación de notación para definir el esquema de las bases de datos + P.e. create table cuenta ( numero-cuenta balance char(10), integer) El compilador de DDL genera un conjunto de tablas almacenadas en un diccionario de datos Los diccionarios de datos contienen metadatos (es decir, datos sobre los datos) + esquema de la base de datos + Lenguaje de almacenamiento y definición de datos El lenguaje en el que se especifican las estructuras de almacenamiento y los métodos de acceso usados por la base de datos Normalmente es una extensión del lenguaje de definición de datos Bases de datos 17 Lenguaje de manipulación de datos (DML) Lenguaje para acceder y manipular a los datos organizados por el modelo de datos apropiado + El DML también se conoce como lenguaje de consulta Dos clases de lenguajes + Procedimental – el usuario especifica que datos quiere consultar y como obtener esos datos + No procedimental – el usuario especifica que datos quiere consultar sin especificar como obtener esos datos SQL es el lenguaje de consulta más ampliamente usado Bases de datos 18 SQL SQL: lenguaje no procedimental ampliamente utilizado + P.e. encontrar el nombre del cliente con id-cliente 192-83-7465 select cliente.nombre-cliente from cliente where cliente.id-cliente = ‘192-83-7465’ + P.e. encontrar los balances de todas las cuentas pertenecientes al cliente con id-cliente 192-83-7465 select cuenta.balance from depositante, cuenta where depositante.id-cliente = ‘192-83-7465’ and depositante.numero-cuenta = cuenta.numero-cuenta Los programas de aplicación normalmente acceden a bases de datos mediante + Extensiones de lenguaje que permiten embeber SQL + Interfaces de programación de aplicaciones (p.e. ODBC/JDBC) que permiten enviar consultas SQL a una base de datos Bases de datos 19 Gestión de transacciones Una transacción es un conjunto de operaciones que realizan una única función lógica en una aplicación de bases de datos El componente de gestión de transacciones asegura que la base de datos se mantiene en un estado consistente (correcto) aun cuando se produzcan fallos en el sistema (p.e. fallos de alimentación o del sistema operativo) o fallos de transacción. El gestor de control de concurrencia controla la interacción entre transacciones concurrentes, para asegurar la consistencia de la base de datos. Bases de datos 20 Gestión de almacenamiento El gestor de almacenamiento es un módulo que proporciona el interfaz entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicación y consultas enviadas al sistema. El gestor de almacenamiento se encarga de: + Interactuar con el gestor de ficheros + Conseguir un almacenamiento, recuperación y actualización eficientes de los datos Bases de datos 21 Administrador de bases de datos Coordina todas las actividades del sistema de bases de datos; el administrador de bases de datos tiene un buen conocimiento de los recursos y necesidades de información de la organización. Las funciones del administrador de bases de datos incluyen: + Definición de esquemas + Definición de métodos de acceso y estructuras de almacenamiento + Modificación de esquemas y organización física + Garantizar derechos de acceso a la base de datos + Especificar restricciones de integridad + Actuar como enlace con los usuarios + Monitorizar las prestaciones y responder a cambios en los requisitos Bases de datos 22 Usuarios de bases de datos Los usuarios se diferencian por la forma en que esperan interactuar con el sistema Programadores de aplicaciones – interactuan con el sistema a través de llamadas DML Usuarios sofisticados – hacen peticiones en un lenguaje de consulta de bases de datos Usuarios especializados – escriben aplicaciones de bases de datos sofisticadas que no encajan en el marco del procesamiento tradicional de datos Usuarios no técnicos – llaman uno de los programas de aplicación permanentes que se han escrito previamente + P.e. gente accediendo a la base de datos a través del web, cajeros de banco, personal de oficina Bases de datos 23 Estructura general del sistema usuarios no técnicos (vendedores, agentes, usuarios web) usuarios sofisticados (analistas) programadores de aplicaciones usan escriben interfaces de aplicación usan usan herramientas de administración programas de aplicación herramientas de consulta compilador y enlazador consultas DML código objeto de programa de aplicación interprete DDL compilador y organizador de DML evaluador de consultas gestión de bufferes administradores de bases de datos gestión de ficheros procesador de consultas gestión de autorización e integridad gestión de transacciones gestión de almacenamiento índices datos Bases de datos diccionario de datos gestión de disco datos estadísticos 24 Arquitecturas de aplicación usuario usuario cliente aplicación aplicación cliente red red programa servidor sistema de bd servidor sistema de bd a. arquitectura en dos niveles b. arquitectura en tres niveles Arquitectura en dos niveles: P.e. los programas clientes utilizan ODBC/JDBC para comunicarse con la base de datos Arquitectura en tres niveles: P.e. las aplicaciones basadas en web, o las aplicaciones que utilizan “middleware” Bases de datos 25