INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Temario Bases de Datos (Teoría de Bases de Datos) 1. In tr o du cc ió n a l os S is te m a s d e B a se s de D at os . 1.1. Sistemas de información y Bases de datos: Definiciones y conceptos. 1.2. Sistemas Gestores de Base de Datos (SGBD). Arquitectura ANSI-SPARC. 1.3. El nivel interno: Archivos, páginas e índices. El nivel conceptual y externo. 2. M od e lo s de S GB D. 2.1. El modelo jerárquico. 2.2. El modelo de Red. 2.3. Modelo de Lista Invertida. 3. S i st em a s G es to re s de B a se d e D a to s R el a c io n a le s ( SG B DR ). 3.1. Características del modelo Relacional. 3.2. Conceptos y definiciones. 3.3. Vistas. 3.4. Claves, dominios e integridad de claves primarias y externas. 3.5. Algebra relacional. 3.6. Tablas del sistema (Metabase). 4. E l e nt o rn o d e t r a b a jo d e B a se s d e D a to s. 4.1. Transacciones: Concepto y utilización. 4.2. Concurrencia y bloqueos. 4.3. La administración de Bases de Datos: Seguridad y permisos. 1 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 1. Introducción a los Sistemas de Bases de Datos. 1. 1. S i st e m as de i nf o rm ac i ó n y B as e s d e d a to s : D ef i n i c i on e s y c o nc ep to s. Sistemas de información de la empresa: Es el conjunto de mecanismos que controlan la distribución, acceso y almacenamiento de los datos relevantes para la administración de una organización. Bases de datos: Colecciones de información organizada que describen un sistema. Las bases de datos están pensadas para resolver los problemas asociados al manejo de grandes volúmenes de información. Sistema Gestor de Bases de Datos (SGDB): Aplicaciones informáticas que manejan y gestionan esta información. Fu nc i on e s m í n im a s d e u n S G B D : Crear y mantener la estructura de los datos (esquema de la BD, tablas, campos, índices, ...). Actualizar los datos (altas, bajas, modificaciones, ...). Presentar la información (listados, ...). Facilitar el desarrollo de aplicaciones (interface de programación (API), lenguajes 4GL, generadores de aplicaciones, ...). Si st e m a d e f ic h er o s v s. S GB D : Independencia física: No se necesita saber nada de la situación, rutas, formas de almacenamiento, etc. Independencia lógica: La información se pueden ver de muchas formas que en la mayoría de los casos no tienen nada que ver con la manera en que esta guarda. 1. 2. S i st e m as G es t or e s d e B a s e d e D at o s ( S GB D) . A rq u it ect u r a A NS I - SP A RC . Usuarios Administrador Fabricante (motor o DBMS) Nivel externo Distintas ‘vistas’ de los usuarios. Nivel conceptual Estructura de la base de datos. Entidades, campos, relaciones, etc. Nivel interno Almacenamiento, nivel físico. Nivel externo: Presenta información conceptual. Nivel conceptual: Diseño de la base de datos (editor de esquemas). Nivel interno: Sólo sabe cómo el fabricante. Co nc e pto d e mo to r d e b a s e d e d a to s . Es un conjunto de programas que controlan y manejan todos los accesos a la base de datos. Esquema de actuación: a) Los usuarios y aplicaciones hacen una solicitud de acceso (de conexión, de consulta, de actualización). b) El motor analiza esa solicitud y la interpreta. 2 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta c) El DBMS inspecciona el esquema conceptual, planifica y realiza la correspondencia entre este esquema conceptual y el interno, es decir, traza rutas optimizadas de acceso a los datos físicos. d) El DBMS realiza las operaciones necesarias sobre los datos y los pone a disposición de las aplicaciones. Componentes del motor de ACCESS O.D.B.C. (Open Data Base Conectibity) Controladores para acceder a datos externos /remotos. Query Manager Es el optimizador de consultas. D.A.O. Es una jerarquía de clases montada sobre el API; de hecho constituye el API de programación. Pr og r a m ac ió n d e D AO . Si nt ax i s ap r ox i m a d a. Function NuevaTabla() TableDef guarda la estructura de la tabla, es una definición de Dim miBD As DATABASE tabla. Dim miDeftabla As TableDef En Field se guardan los campos de la BD. Dim miCampo As Field Asignación de la BD. BD que se estás utilizando. Set miBD = CurrentDb() Crea una nueva estructura de tabla, la cual se llamará Clientes. Set miDeftabla = miBD.CreateTableDef("Clientes") Set miCampo = miDeftabla.CreateField("FechaAlta", Las mayúsculas indican constantes creas un campo (nombre, DB_DATE) formato predefinido). miDeftabla.Fields.Append miCampo Todas las estructuras de tabla se guardan en un TableDef. miBD.TableDefs.Append miDeftabla Debug.Print "Se creó la tabla" NuevaTabla = True End Function Con el Append añadirá una definición de tabla a la colección de estructuras de tablas de la BD Al ejecutarlo nos devolverá un -1 si es verdadero Ejemplo de creación de una tabla (DAO). Nueva base de datos - Módulo Nuevo. A continuación nos aparece la pantalla para picar el código y una vez esté introducido para compilarlo haremos: Menú - Ejecutar - Compilar módulos cargados, para crear la nueva tabla. Haciendo: Menú - Ver - Ventana de ejecución nos aparecerá una ventana que es como una especie de DEBUG para poder depurar nuestro programa. Se cc ió n p o st e ri o r y s ec ci ó n f ro nt a l . El objeto general de los sistemas de BD es, en general, apoyar el desarrollo de aplicaciones. Desde esa perspectiva tenemos el esquema siguiente: aplicaciones interface DBMS base de datos sección frontal sección posterior Sección posterior: Es el DBMS o motor en sí. 3 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Secciones frontales: Son las aplicaciones ‘contra’ el DBMS. a) Aplicaciones escritas por los usuarios en lenguajes soportados por el API de DBMS o ‘embebidos’ en lenguajes clásicos (C, COBOL, etc.). b) Aplicaciones suministradas por el fabricante (utilidades) que trabajan contra el DBMS. Editores de esquemas. Editores de consultas. Generadores de informes y listados. Útiles de importación, exportación, etc. A rq u it ec tu r a Cl i e n te /S e rv i do r y d is t r ib u id a s . Aparecen al romper el esquema anterior. Se dedican diferentes máquinas para las secciones posteriores y frontales. Máquinas de sección frontal. Red de comunicaciones DBMS BD Máquina de sección posterior. Ventajas: Procesos distribuidos. Aprovechar las ventajas de cada S.O. y hardware para cada sección. Inconvenientes: Mayor complejidad. Posible incremento del tráfico de la red. Diferentes arquitecturas Cliente/Servidor. Las aplicaciones Cliente/Servidor pueden dividirse en: Servicios de presentación Servicios de control (proceso) Servicios de datos Las aplicaciones cliente/servidor difieren en cómo y en cuántas máquinas se dividen estos 3 apartados. 1) 2) 3) 4) Máquina 1 Máquina 2 Máquina 1 Máquina 2 Máquina 1 Máquina 2 Presentación Proceso y datos. Presentación y proceso Datos Presentación y procesos asociados Datos y procesos asociados Máquina 1 Máquina 2 Presentación Proceso Cliente/Servidor puro Arquitectura 2 pisos Más utilizada Arquitectura 3 pisos 4 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Máquina 3 Datos Cliente/Servidor ODBC. ODBC es un standard de conectividad con distintos sistemas de Bases de Datos desde WINDOWS. Puede entenderse como un API genérico. Utilidades: Desarrollo de aplicaciones Cliente/Servidor . Acceso a Bases de Datos remotas desde aplicaciones de productividad personal (procesadores de texto, hojas de cálculo, etc.). Esquema: usuarios aplicaciones crear una conexión ODBC e indicar con qué quieres trabajar ODBC driver manager ODBC SQL server ORACLE OTROS controladores red de comunicaciones DBMS SQ server DBMS ORACLE Recogen las peticiones de acceso a datos y las traducen para que se puedan entender. Ejemplos prácticos: 1) Conocer el nivel de compatibilidad que ofrece el controlador ODBC que se vaya a utilizar. 2) Crear una definición de acceso ODBC. Menú - Panel de control - Icono ODBC - Add - SQL Server. Uso: 5 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 1. MS-QUERY (editor de consultas). Archivo - Nueva consulta - Otro - OK - Usar. 2. EXCEL Menú - Insertar - Macro - Módulo. Para cargar la librería xlodbc.xla: Menú - Herramientas - Referencias. Y la buscamos en la lista. Para ver las funciones que contiene, Menú - Ver - Examinar objetos. Código: Proced DatosDesde() Dim strConex QueSea Cadena 'Variable que almacena la cadena de conexión. Dim strSQL QueSea Cadena strConex = "DSN=ViajesLaMonda" 'Función perteneciente a la librería, poner en marcha la conexión. nCanal = SQLOpen(strConex; Rango("A3:A3"); 4) 'Muestra aquí toda la cadena de conexión. strSQL = "SELECT * FROM VIAJES" 'El *indica todas. nValor = SQLExecQuery(nCanal; strSQL) 'Como es una consulta devolverá columnas. nFilas = SQLRetrieve(nCanal; Rango("A7:A7"); ; ; Verdadero) xValor = SQLClose(nCanal) Fin Proced Esquema: EXCEL XLODBC:XLA librería que tiene EXCEL para conexiones ODBC DRIVER ODBC RED DE COMUNICACIÓN DBMS SQL SERVER BD 6 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 3. ACCESS 1) Empezar una nueva Base de Datos. 2) Menú - Archivo - Importar importa la estructura y los datos de una tabla de una Base de Datos externa (xBase, Paradox, Archivos .txt, ODBC, etc.) a una tabla Access. (Se utiliza para migrar.) 3) Menú - Archivo - Adjuntar Guardar en Access una referencia a una tabla externa y permite utilizarla en Access (formularios, consultas, informes, etc.). No se puede cambiar la estructura. Esquemas: SQL server Acceso mediante ODBC a servidores de BD ODBC Base Datos Access referencia MDS Transmite solicitudes a SQL SERVER CLIPPER xBASE DBF Acceso directo a sistemas de ficheros ACCESS referencia MDB Peticiones directamente al motor de Access Ejercicio Crear una Base de Datos en Access de nombre ‘Facturas’ que contenga la tabla ‘Facs’ con la estructura siguiente: idFac idCli FechaFac Importe Crear un origen de datos ODBC (seleccionar el controlador Access 2.0). Este controlador pide la localización de la Base de Datos a utilizar. Probar desde MS-QUERY la conexión de este origen de datos. Si funciona, probarlo desde Excel utilizando la librería xlodbc.xla B a se s d e D a to s di st r ib u id a s . En las Bases de Datos distribuidas existen varia secciones posterior. La Base de Datos se distribuye entre diferentes DBMS y cada uno accede a sus tablas. Acceso distribuido: Las aplicaciones acceden a las tablas de diferentes DBMS pero entre estos no existe ninguna conexión. Sistema de Bases de Datos distribuidas: Se percibe un único esquema de Base de Datos. Se propagan las modificaciones de los esquemas, se soportan las transacciones distribuidas. Transacción: Es un conjunto de operaciones de actualización de datos que pasan de un momento coherente a otro momento coherente. 7 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta usuarios aplicaciones red de comunicaciones c ap a d e so f twa r e DBMS1 DB1 DBMS2 DBMS3 DB2 DB3 Ventajas: Muchas empresas ya son ‘distribuidas’. Los datos están más cerca de dónde se necesitan. Proceso más distribuido. Inconvenientes: Mayor complejidad. Resolver: propagación de actualizaciones. Optimización de consultas entre tablas de diferentes DBMS. Transacciones distribuidas. 1.3. El nivel interno: arch ivos, páginas e índices . El n ivel conceptu al y externo. El nivel interno es el nivel físico. En él, el DBMS se encarga de actualizar los datos. Página: Es una unidad de lectura/escritura en disco (la información que se lee/escribe en cada operación de E/S). El tamaño depende del S.O. y del S.G.B.D. En la F.A.T., en caso de MS-DOS, se mantiene información de la página en que se inicia un archivo. Cada página tiene un apuntador que señala la siguiente página de ese archivo. La optimización del uso de una Base de Datos consiste en minimizar el número de operaciones de E/S. Para ello sería interesante que las página fuesen contiguas (creación de espacio en disco sólo para la Base de Datos). Manejador de disco: Componentes del S.O. que ‘conoce’ las direcciones físicas de las páginas. Sus funciones son: Leer páginas. Escribir páginas. Añadir páginas nuevas. Borrar páginas. Manejador de archivos: Solicita páginas al manejador de disco. Estas páginas contienen los registros identificados de manera única (ROWid identificador de registro). Funciones: Leer un registro de la página. Reemplazar un registro de la página. Añadir, eliminar registros. Crear y destruir registros. 8 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta El DBMS es quien entiende la estructura de los registros proporcionados (campos, tipos de datos, etc.). Indices: Archivos auxiliares que utiliza el DBMS para recuperar registros según otros criterios de ordenación y facilitar las búsquedas. El archivo de índice más sencillo es el índice denso. Este archivo tiene una entrada para cada valor de campo (campo indexado) y almacena este valor y un apuntador (ROWid) al registro que contiene el valor. Ejemplo: Manera física en que está guardada la tabla. IdCli 001 002 003 004 Nombre L J S D Índice denso. Provincia Madrid Barcelona Valencia Barcelona Apuntador * * * * Provincia Barcelona Barcelona Valencia Madrid Ti po s : Índice denso Contiene una entrada para cada registro, y por lo tanto, cada entrada apunta a una registro individual. Índice no denso Contiene una entrada para cada grupo de registros agrupados según el campo indexado. El apuntador señala a una página (que contendrá un conjunto de registros). Posteriormente se hace una revisión de la página en memoria. El número de operaciones de E/S será menor y el índice será más pequeño. Clave de indexación Campo/s para los que se crea un índice. Clave de indexación simple Por un sólo campo. Clave de indexación compuesta Por varios campos. Índice principal Creado para el campo clave. Índice secundario Los demás que se creen para la tabla. Índices de árbol B (1972) Son índices con estructura de árbol (multinivel). Tienen la siguiente estructura: Conjunto secuencia: Índice de un sólo nivel de los datos reales. Conjunto índice: Es un índice con estructura de árbol sobre el conjunto secuencia. El nivel superior del conjunto índice se compone de un solo nodo (raíz). Esquema: conjunto índice * 12 * 32 * 15 18 32 * 50 * 82 * * 58 * 70 * 51 52 58 * 89 * 71 78 82 94 * conjunto secuencia 6 8 12 35 40 50 60 62 70 83 85 89 9 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Co nc e pto s a di c io n a le s so b re í nd i ce s . 1) Un DBMS relacional, el de un servidor de datos, utiliza los índices de acuerdo con los criterios que establece el optimizador de consultas (QUERY MANAGER). 2) En un sistema de ficheros es el programador el que activa o desactiva el uso de los índices según las necesidades de la aplicación. En este aspecto, Access es un sistema mixto. Para aplicaciones cerradas o con pocos recursos es mejor un sistema de ficheros. Í nd ic e s n o d e n s o s El índice no tiene una entrada para cada registro del archivo de datos, sino una entrada para cada página. Así entonces las páginas deben tener un orden . Es decir, el orden del índice, es el orden físico en que se almacenan los registros. Son índices sobre un archivo “agrupado” o de tipo “cluster”. Coinciden la ordenación del índice y del archivo de datos. El índice tiene apuntadores a páginas ( a un grupo de registros ) con lo cual es más pequeño. Las búsquedas son más rápidas aunque haya que hacer búsquedas adicionales en memoria. Evidentemente sólo puede haber un índice de este tipo por archivo de datos. I nd iz ac i ón H A SH ( di s pe n s ió n ) Procurar un acceso rápido a un registro en base a un valor de un cierto campo. Cada registro almacenado se coloca en la BD en un sitio cuya dirección (RowId o al menos nº de páginas) se calcula con una función. La dirección devuelta por esta función se denomina ‘dirección de dispersión’. Para localizar este registro a partir del valor del campo el DBMS realiza el mismo cálculo y lee ese registro en la posición calculada. Dirección de dispersión = f (valor campo). Dado que esta técnica se apoya en la ordenación física del archivo, sólo puede haber un índice de este tipo por archivo. Evidentemente había más valores distintos para ese campo que páginas por lo que se producen colisiones. Ciertamente lo que devuelve la dirección de dispersión es la posición inicial en que se almacenan los registros con una misma dirección de dispersión y después tendremos que hacer un recorrido secuencial para encontrar uno determinado. Esta técnica con algunas mejoras sofisticadas garantiza en la práctica que siempre se pude localizar un registro con 1 o 2 entradas/salidas al registro. Co me nt a r i os fi n a l es s ob r e í n di ce s ¿Para qué se utilizan los índices? Búsqueda y acceso a un determinado registro. Recorridos secuenciales según una ordenación. ¿Quién utiliza los índices? En los sistemas de ficheros y en sistemas pre-relacionales (dBase,Clipper, etc.) el programador. En los SGBDR auténticos o puros, el Query Manager (optimizador de consultas) y el propio DBMS (mantenimiento de integridad). En Access : es un sistema mixto. Puede utilizarse como sistema de ficheros y como SGBDR. Ven t aja s Inconv enien tes Aceleran las búsquedas, ordenaciones, Penalizan las actualizaciones (hay que selección, agrupación (totalización) según actualizar más archivos). las claves de indexación. 10 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Ej em p lo de ut i l iz a ci ón d e í nd i ce s . Crear una BD Crear una tabla “clientes” con 2 campos (IdCli:entero;NomCli:texto). Crear índices : el primer índice será el IdCli (el cual se crea automáticamente, y al cual se le asigna el nombre de Primary Key)El segundo índice a crear es el IdxNom con el campo Nombre asignado. 1) Acceso secuencial según ordenación del índice. Function OrdenIdx() Dim miBD As DATABASE Dim miTabla As TABLE Set miBD = CurrentDb() Set miTabla = miBD.OpenTable("Clientes") miATabla.Index "IdxNom" Do While Not miTabla.EOF Debug.Print miTabla.NomCli miTabla.MoveNext Loop miTabla.Close End Function Ejercicio: 1. Menú - Ver - Ventana de ejecución. ? OrdenIdx() deberá aparecer: BB CC DD AA 2. Desactivar la línea ‘miATabla.Index "IdxNom" y debería salir en el orden físico. Nota: Siempre que hay una asignación es una propiedad. Los método son llamadas a procedimientos. 11 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 2. Modelos de Sistemas Gestores de Bases de Datos (SGBD). Si st e m as r el a c io n a le s y ot r os . El sistema relacional es el más utilizado. Para estudiarlos los dividiremos en: Sistemas pre-relacionales: Sistemas jerárquicos (IMS de IBM) Sistemas de red (IDMS de Computer Associates) Sistema de lista invertida (Datacom de Computer Associates) Sistemas relacionales: DB2 de IBM Ingress Informix Oracle SysBase SQL Server de Microsoft MS-Access de Microsoft C ar a ct e rí st i c as ge ne r a l es d e l os s i st em a pr e - r e l ac io n a le s . En general son anteriores a los sistemas relacionales y más primitivos. No se desarrollan sobre una base teórica sólida. Sólo los SGBDR se construyen sobre una base teórica y formal. Tienen un nivel de abstracción más bajo y poca independencia física y lógica. Están muy vinculados a los sistemas de almacenamiento subyacente. En general son sistemas de programación. El único usuario posible es el desarrollador de aplicaciones. En general trabajan registro a registro. 2.1. El modelo jerárquico. No tiene una base teórica. Lo que se explique se extrae de la observación de un producto comercial como es IMS de IBM. Ejemplo de una estructura de base de datos de una escuela que imparte cursos monográficos. CURSO OFERTAS PROFESORES MATRÍCULAS ALUMNOS Una Base de Datos jerárquica es un conjunto de ejemplares de un tipo de árbol. Esquema: CURSO idCurso NomCurso idOferta Fecha Lugar idProfesor NomProfesor idAlumn Nom Nota 12 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Fo rm a de tr a b a jo . Se trabaja con 2 objetos: 1) Registros: Un registros padre puede tener un número indeterminado de hijos pero un hijo no puede tener más de un padre. 2) Ligaduras. Fo rm a de g u ar d a r l a i n fo r m ac ió n. La información se guarda árbol a árbol y de izquierda a derecha y de arriba a abajo. Ma n ip u l ac i ón d e l os d at os . Seleccionar un árbol determinado. Pasar de un árbol a otro. Pasar de un padre a su primer hijo. Pasar de un registro a otro dentro de un mismo nivel. Insertar/borrar registros de un nivel. Ma nt e n im i en to de l a i nt e g ri d a d. Referencial: No se puede tener un hijo sin su padre. Permite borrados y actualizaciones en cascada. Ven t aja s Inconv enien tes Muy eficientes en accesos asociados con la Un pequeño cambio en el programa puede jerarquía del árbol. suponer grandes modificaciones en el sistema. 2. 2. M o de l o d e r e d (I DM S d e C om p ut e r As s oc i at e s) . Puede considerarse como una forma extendida de la jerarquía en que un registro puede tener un número ilimitado de padres. Esquema: PROVEEDORES PEDIDOS ARTÍCULOS PROV1 ART1 PROV2 ART2 ligadura PROVEEDOR/PEDIDO ligaduraARTÍCULOS/PEDIDOS Fo rm a de tr a b a jo . Se trabaja con 2 elementos: 1) Registros. 2) Ligaduras: Una ligadura tiene 1 padre para varios hijos. Ma n ip u l ac i ón d e l os d at os . Localizar un registro. Pasar de un registro padre a su primer hijo de una ligadura. Moverse de un hijo a otro. 13 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Pasar de un hijo a su padre. Ven t aja s Se mantiene la integridad referencial. Actualizaciones y borrados en cascada. Inconv enien tes Un pequeño cambio en el programa puede suponer grandes modificaciones en el sistema. 2.3. Modelo de lista invertida (Sistema de ficheros, Sistema de navegación: CLIPPER, dBASE). Fo rm a de tr a b a jo . Se trabaja con 2 tipos de elementos: 1) Archivos de datos. 2) Archivos de índices. Y un lenguaje de programación que maneje estas estructuras. Son como el componente interno de un sistema relacional, como un SGBDR desnudo, sin independencia física/lógica en el que el usuario (programador) debe optimizar los accesos, controlar la integridad, etc. Archivos de datos: Se perciben como tablas en que las filas son registros y las columnas son los campos. Los registros tienen una ordenación física. Archivos de índice: Los utiliza el programado para acelerar los accesos. Ma n ip u l ac i ón d e l os d at os . Localización de un registro en un archivo. Localización un registro utilizando un índice. Acceso directo a un registro (ir al registro 1, 2, 3, 50, etc.) Desplazamientos relativos (registro anterior, siguiente, primero, etc.) Leer/modificar/borrar el registro actual. Ven t aja s Inconv enien tes Son muy rápidas para aplicaciones cerradas Mala ejecución de consultas AD-HOC (no y con pocos recursos de máquina. previstas), Consultas día a día. Las modificaciones son complicadas. No se incluyen reglas de integridad El programador tiene que implementarlas en sus aplicaciones (control de duplicados, integridad referencial). 14 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 3. Sistemas Gestores de Bases de Datos Relacionales (SGBDR ). 3. 1. C ar a ct er í st ic a s d e l m od e lo re l a c io n a l. A diferencia de los modelos vistos hasta ahora, el modelo relacional sí que se basa en un modelo formal. El modelo relacional fue creado un matemático que trabajaba para IBM llamado E. F. Codd F al l o s q ue t e n í an l a s B a s e s d e D at o s e n a qu e l l a é po c a : Inconsistencia, Redundancia, Falta de independencia física/lógica, Poca flexibilidad. 3. 2. Co nc ep to s y d ef i n ic io n es . Té rm i no s u t il iz a do s : Término relacional formal Término informal Relación Tabla, Entidad tupla Fila, Registro Cardinalidad nº de Filas o Registros Atributo Columna, Campo Grado nº de Columnas o Campos Clave Primaria Campo Clave, Identificador Dominio Valores aceptados B a se s d e l m od e l o re l a ci o n a l: 1) Estructura de datos: Los datos siempre se perciben en forma de tablas (filas y columnas). El modelo relacional hace la abstracción del carácter lógico o físico de estas estructuras. Estas estructuras tienen una 1ª fila con valores fijos (nombres de columnas) y un conjunto de filas variables en el tiempo. Propiedades de las relaciones: a) No existen filas repetidas. b) No existe orden (no existe nº de registro o similar) c) Los valores de los campos son autónomos (no contienen lista de valores, grupos repetidos). Estas propiedades se derivan de considerar las relaciones como conjuntos en el sentido matemático. Tipos de relaciones: a) Tablas o relaciones base: Son los verdaderos contenedores de datos. Son persistentes. b) Vistas o tablas virtuales: Sólo se guardan las definiciones que son persistentes. No guardan datos. c) Resultados de consultas: No tienen datos, ni se guardan sus definiciones. d) Tablas temporales: Sí que contienen datos pero no son persistentes. 2) Operadores entre estructuras. 3) Definiciones de integridad. 3.3. Vistas. Las vista son tablas virtuales derivadas de tablas base y referenciadas por un nombre. No contienen datos, sólo se almacena su definición en la Base de Datos. La sintaxis standard en SQL es: Nombre_Vista AS SELECT ... CREATE VIEW 15 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Ut i l id a d es d e l a s v i st a s Obtener vista de los datos optimizados según las necesidades de los usuarios que no necesitan conocer los detalles del diseño de la Base de Datos. Ofrecen diferentes formas de ver los datos. Ocultar filas o columnas por motivos de confidencialidad. Aumentar la independencia lógica de los datos. (Pueden renombrarse columnas, crearse columnas virtuales, etc.) Existen vistas actualizables, es decir, que permiten modificar desde las vistas los datos de las tablas base a que pertenecen. Cabe remarcar que no todas las vista son actualizables. Existe una cierta tendencia en el modelo relacional a que las vistas sean actualizables. En general son actualizables las vistas que: Incluyan todos los campos que constituyen la clave. Si montásemos una vista sin uno de los campos que constituye la clave al modificar los datos de la vista ese campo que es parte de la clave se rellenaría con un nulo y estaría violando una de las reglas de la integridad de clave primaria. Incluir todos los campos que tengan restricciones a nivel de esquema (no nulo, etc.) Nunca son actualizables consultas de totalización (agrupación). Vistas en que se incluyen más de una tabla: Se permitirán actualizaciones en 2 tablas con una relación 1:1 Se permitirán actualizaciones en el lado n de una relación 1:n Nota sobre las claves primarias y externas: Si se tienen dudas en una relación entre dos tablas de cuál es el lado n y cuál es el lado 1, el lado n está siempre en el la tabla que contiene la clave externa. Ejemplo en ACCESS: 1) Crear un formulario con el asistente de tipo columnas basada en la tabla Clientes y darle el nombre de FCli1. 2) cmdPorId cmdPorNombre 3) Crear la consulta ClientesPorId basada en al tabla Clientes con todos los campos y ordenada por IdCli. 16 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 4) Crear la consulta ClientesPorNombre basada en al tabla Clientes con todos los campos y ordenada por NomCli. 5) Abrir FCli1 en modo diseño, Menú - Ver - Código. Código que muestra la información ordenada por el campo IdCli. Código que muestra la información ordenada por el campo NomCli. Ej em p lo s de ut i l iz ac i ón d e l a s v i st a s c on A C CES S. 1) En la base de datos crear una tabla Provincias con la siguiente estructura: IdProv (Primary Key): campo de texto de 2 caracteres. NomPorv: campo texto de 20 caracteres. 2) En la tabla Clientes añadir el campo IdProv y asignar valores que existan. 3) Crear una vista basada las tablas Clientes y Provincias. 4) Crear con el asistente un formulario. 17 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Al entrar el código en la casilla de IdProv no aparecerá de manera automática la provincia en NomProv. Para evitar que se pueda modificar el contenido de la casilla NomProv en la propiedades del cuadro de texto, en el apartado Datos, seleccionaremos: Activado: NO Bloqueado: SI De esta manera ACCESS permite altas, bajas y modificaciones en la tabla ‘n’ y modificaciones en la tabla ‘1’. 3.4. Claves, dominios e integridad de claves pri marias y externas . De f in ic i o ne s d e in te gr i d ad . Definiciones almacenadas a nivel de esquema que controlan el conjunto de valores posibles para los campos. Estas definiciones las mantiene y las observa el DBMS. Existen 2 reglas muy importantes: 1) Re g l a d e i nt e gr i d a d d e e nt i d ad e s o i nt eg r id a d de c l a ve p r i m ar i a . Clave primaria, clave, identificador o primary key Campo/s de una tabla que identifican de manera unívoca un registro de una tabla. Simples: un solo campo. Compuestas: varios campos. Claves candidatas Campo/s que pueden ser claves primarias. Claves alternas o alternativas Aquellas claves candidatas que no se ha elegido como clave principal. Criterios para escoger claves: Universalidad, minimalidad (corta), Sencillez. Reglas de integridad de claves primarias: Ningún componente de la clave primaria puede aceptar nulos. La clave primaria siempre es única (no acepta duplicados). 2) Re g l a d e i nt e gr i d a d d e c l av e s ex te r n a s. I nt eg r id a d re f er e nc i a l. Clave externa, ajena, foránea o foreign key Campo/s de una tabla en que los valores deben concordar con los datos de la clave primaria de la otra tabla. Todos los valores de la clave externa deben existir en la tabla en que son clave principal. ¿Se aceptan nulos? Integridad referencial. Menú - Ver - Relaciones. 18 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Formas de mantenimiento: 1) Rechazo: No borrar provincias que tengan clientes. 2) Propagación: Borrados / actualizaciones en cascada 3) Anulación: Posibilidad o no de tener nulos en los campos. 3. 5. Á lg e br a r el a c i on a l . O pe r a ci o ne s en tr e e s tr uc tu r a s. Se basan en el ‘Álgebra relacional’ considerando las tablas (las relaciones) como conjuntos. Inicialmente se definen 8 operaciones de Álgebra relacional: Sean las relaciones R y S: 1) UNIÓN: RS R y S deben de ser del mismo grado. El resultado es una relación con todas las filas de R y S con una única concurrencia si hay repeticiones. R S R S A D C B A B C T D RS B D G A A T A D C B B A B G C T D A En una consulta de unión se ve el resultado pero no se almacena en ninguna tabla al contrario que en una consulta de datos añadidos que si que se guardan los cambios en otra tabla. 2) DIFERENCIA: R-S R y S deben de ser de igual grado. El resultado incluye todas las filas de R que no están en S. R S R S A B C R-S B G A A B C 19 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta D C A B T D D A T C B D En SQL no existe una palabra específica para esta relación, se tiene que montar con: NOT EXIST NOT IN 3) INTERSECCIÓN: R S El resultado son las filas que están en R y S. R S R S A D C B A B RS C T D B D G A A T D A T En SQL no existe una palabra específica para esta relación, se tiene que montar con: EXIST IN 4) PRODUCTO CARTESIANO: RS Devuelve el resultado de concatenar todas las filas de R con cada una de las filas de S. R S A C E RS B D F B D X Y A A C C E E Col = ColR + ColS Fil = FilR x FilS B B D D F F B D B D B D X Y X Y X Y En SQL: SELECT FROM R,S 5) PROYECCIÓN: Devuelve todas las filas de R con las columnas seleccionadas. R R1 R2 A C E B D F Rp (R1) A C E En SQL: SELECT R1 FROM R 20 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 6) SELECCIÓN (restricción): Devuelve todas las filas que cumplan una condición. R R1 R2 A C E G RS (R2 = “B”) B D F B A G B B Se aplican a los valores de una o más columnas. En SQL: SELECT FROM R WHERE R2 = R1 7) DIVISIÓN: (R binaria, S unitaria) Devuelve una relación formada por todos los valores de una columna de R que concuerdan con todos los valores de S. R S R/S A X X A A Y Z A Z B X C Y 8) REUNIÓN NATURAL (join, yunion): Devuelve un subconjunto sobre el producto cartesiano R x S en que los valores de una columna de R son iguales a los de una columna de S. Estas columnas se llaman columnas de composición. R S A C E B D F RS B D X Z A C B D X Z O tr a s o p er a c io n es re l ac i o n al e s. YUNCIÓN EXTERNA: a) Yunción externa izquierda: Devuelve además todas las filas de R aunque no tengan correspondencia en S. R S A C B D R* y S B D X Z A C B D X Z 21 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta E F E F b) Yunción externa derecha: Devuelve todas las filas de S aunque no tengan correspondencia en R. R S A C B D R y S* B D I X Z V A C B D I X Z V En SQL: LEFT JOIN RIGHT JOIN EXTEND: Posibilidad de obtener nuevas columnas a partir de alguna función o fórmula aplicada a otra. R R1 A B f (R1) X Z En SQL: SELECT IdFac, Importe, * 1,16 FROM Facturas SQL standard SI NO SELECT IdFac, IIF (Importe > 1000 ; Importe * 0,98 ;Access Importepermite ) utilizar expresiones i/o funciones FROM Facturas RESUMEN (totalización): Se agrupan filas según los valores de una o más columnas y se evalúa una función (SUMA, MÁXIMO, MÍNIMO, PROMEDIO, etc.). R R1 R2 A B A B 3 2 7 4 media (R agrupado por R1) 5 A B 5 3 En SQL: SELECT ... sum (R2), avg (R2) FROM R GROUP BY R1 Access permite agrupar por una función. Si nt ax i s : R S Unión R S Intersección R x S Producto Cartesiano 22 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta R R R R R DIVISIÓN JOIN JOIN* *JOIN R (Col1, Col2) R (Col1 = “aa”) S S S S S DIVISIÓN Entre R Y S Diferencia Join Join Derecha Join Izquierda Proyección de Col1, Col2 de la relación R Selección de filas de R en que Col1 = “aa” 3.6. Tablas del sistema (Metabase). Es un componente habitual de las arquitecturas de Bases de Datos, al menos todas las relacionales. Las tablas del Sistema es una Base de Datos creada y mantenida de manera automática por el propio DBMS que contiene información (descripciones) de los objetos del propio Sistema y de la estructura de la Base de Datos. “Es la Base de Datos de la Base de Datos”. Una estructura mínima del Catálogo del Sistema crea, para cada Base de Datos: SYSTABLES Tabla en que cada fila contiene la información de una tabla de la Base de Datos: Nombre, dueño, fecha de creación y actualización, etc. SYSCOLUMN Tabla en que cada fila contiene la información de cada columna de la S Base de Datos: Tipo, longitud, nulos, etc. SYSINDEX Tabla en que cada fila contiene un índice de la Base de Datos: Claves de indexación de las tablas asociadas. El Catálogo del Sistema acepta consultas (SELECT, ...), pero evidentemente no permite que se manipulen los datos que contienen. El C at á lo go de l Si s tem a e n AC CE SS : SYSTEM.MDA Es una Base de Datos que contiene. Usuarios, grupos, privilegios sobre acceso a objetos. Parámetros de entorno: idioma de ordenación, nº de reintentos en bloqueos aspectos iniciales de la pantalla, etc. Cada Base de Datos (MDB) contiene su propio Catálogo del Sistema. Menú - Herramientas - Opciones - Mostrar - Objetos del sistema. 23 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Falta el ejercicio de utilización de tablas del Sistema pero como no entrará práctica para el examen no lo he pasado todavía. 24 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta 4. El entorno de trabajo de Bases de Datos . 4. 1. T r an s a cc io n e s : co nc e pt os y u ti l iz ac i on e s. Una transacción es una unidad lógica de trabajo. Una serie de actualizaciones que dejan otra vez la Base de Datos en un estado coherente. Ejemplo1: Se inserta una fila en la tabla LineasAlquilerVideo que hace referencia a una cinta de vídeo: INSERT INTO LineasAlquilerVideo ... Se marca esa cinta de la tabla CintasVideo como alquilada y, por lo tanto, no disponible: UPDATE CintasVideo ... Alquilada = Yes Peliculas Clientes Cintas Lineas_Alquiler Alquileres Clientes Ejemplo2: Se elimina una línea de factura de una factura: DELETE ... LineaFactura ... Se actualiza el total de esa factura en la tabla Facturas: UPDATE ... Facturas ... Se incrementa el stock del artículo afectado: UPDATE ... Articulos ... El Sistema ha de considerar estas acciones como una sola de manera que, o se hacen todas de golpe o no se hace ninguna. El componente que se encarga de gestionar todo esto es el Manejador de transacciones. Ejemplo de código: BEGIN TRANS ‘Señala el inicio de una transacción. EXESQL “DELETE ... “ EXESQL “DELETE ... “ EXESQL “DELETE ... “ IF SQLERROR ‘Si se produjo un error ... ROLLBACK ‘Deshace la transacción. ELSE COMMIT ‘Se comprometa la transacción. No se graba físicamente todavía. ENDIF END TRANS Si ocurre un ROLLBACK debido a algún fallo en la transacción, el Sistema mantiene un archivo con el estado de la Base de Datos antes del inicio de la transacción. Este archivo se llama LOG.FILE y es una especie de histórico de transacciones. 25 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Para mayor protección de la Base de Datos este archivo se suele almacenar en otro dispositivo (en cinta, generalmente) por si se cae el Sistema (se rompe el disco duro que contiene la Base de Datos). De esta manera para recuperar toda la información de la Base de Datos bastará con echar mano de la última copia de seguridad y que se vuelvan a realizar todas las transacciones que están almacenadas el LOG.FILE. 4. 2. Ac ce s o co n c u r re nt e y b lo qu e os . El acceso concurrente puede provocar diferentes problemas: 1) Problema de transacción perdida: Se pierden las modificaciones que ha realizado un usuario. USUARIO A leer R t1 actualizar R t3 t2 leer R t4 actualizar R USUARIO B Resultado: B “chafa” la transacción de A. 2) Problema de la dependencia con una transacción no comprometida: Un usuario trabaja con datos de otra transacción no comprometida de la que puede hacerse un ROLLBACK. USUARIO A t1 actualizar R leer R t2 t3 ROLLBACK t4 USUARIO B Resultado: A está viendo un registro que nunca estará físicamente. 3) Problema de resultado inconsistente: USUARIO A leer V1 (40) actualización acumulado 40 acumulado 90 t1 leer V2 (50) acumulado 90 t2 t3 t4 t5 leer V1 (40) actualizar v1 50 USUARIO B Resultado: Una inconsistencia. Co nc e pto s so b re b lo q ue o s : Bloqueos: Cuando una transacción requiere la seguridad de que algunos datos no cambien adquiere un bloqueo sobre estos de manera que otras transacciones no puedan acceder. La 2ª transacción entra en estado de espera mientras que la transacción anterior no la libere. Granularidad del bloqueo: Es el tamaño o a lo que afecta el bloqueo. Puede afectar a varios niveles. Nivel de la Base de Datos Se abre de modo exclusivo generalmente para tareas de mantenimiento, regeneración de índices, compactación, etc.) Nivel de tabla o conjunto de registro (si hablamos de Access) Mantenimiento expreso de una tabla. Nivel de página Se bloquean todos los registros que forman parte de la página. Nivel de registro Nota: Todos los niveles de bloqueo marcados con un son posibles realizarlos en Access. 26 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Diferentes tipos de bloqueos: Bloqueo optimista Sólo se bloquea el registro en el momento de la actualización. Si otros usuarios han accedido al registro en el que queremos guardar los cambios recibirán una información de que otro usuario ha realizado modificaciones. USUARIO A leer R t1 t2 leer R actualizar R t3 t4 actualizar R recibir cambios del usuario A USUARIO B Bloqueo pesimista USUARIO A leer R bloquear R t1 actualizar R liberar R t2 t3 t4 leer R intentan fin espera actualizar R actualizar R esperar, esperar USUARIO B Bloqueo mutuo (abrazo mortal) Transacción A solicitar bloqueo de R1 solicita bloqueo de R2 esperar, esperar Tiempo t1 Transacción t2 solicitar bloqueo de R2 t3 t4 solicita bloqueo sobre R1 espera, espera En este tipo de bloque si el tiempo de espera es mayor al que se ha configurado el Sistema mata la transacción para que al menos pueda acabar una de las dos. Si el Sistema es bueno, incluso puede llegar a informar al usuario de que una de las transacciones no acabó con éxito. Co nf i g ur a r bl oq u e os e n A cc e ss . Bloqueo pesimista: MiTabla.LockEdits True ‘Se activa el bloqueo pesimista. MiTabla.Edit ‘Se activa el bloqueo del registro. MiTabla.Update ‘Se libera el registro. El bloqueo pesimista se activa en el momento de la edición. Bloqueo optimista: 27 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta MiTabla.LockEdits False ‘Se activa el bloqueo optimista. MiTabla.Edit MiTabla.Update ‘Se bloquea el registro para ser editado (sólo en ese momento). En el bloqueo optimista se mantiene Menos tiempo el bloqueo sobre el registro. Bloqueos en formularios con origen de datos: Sólo se bloquea el registro en el momento de la actualización (cuando se pasa al siguiente registro). A puede editar un registro que B está modificando. Cuando A quiera actualizar sus cambios recibirá información de que B lo ha modificado. Bloquea todos los registros en que se basa el formulario. G uí a p a r a t r ab a j a r e n mu lt i u su a r io c on Ac c es s . Primero de todo se ha de resolver la cuestión con el S.O.: grupos, permisos, etc. 1. Para compartir una Base de Datos (MDB) debe abrirse en modo compartido (por defecto se abre en modo exclusivo). 28 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Menú - Herramientas - Opciones - Avanzado. 2. Es conveniente dividir la Base de Datos en datos y aplicaciones y compartir los datos de manera que: datos.mdb apli.mdb apli.mdb apli.mdb Cada apli.mdb: informes, formularios, etc. 3. Conocer el puesto de trabajo: nombre de la computadora. Inicio - Configuración - Panel de control - Red. Ejemplo de trabajos en multiusuario con Access. Para la máquina que contenga la Base de Datos: Crear la Base de Datos con el nombre Datos.mdb y la tabla Clientes: IdCli: texto, 2 NomCli: texto, 16 DirCli: texto, 16 Compartir el directorio en donde se encuentre la Base de Datos. Para todos: Crear una Base de Datos con el nombre Apli.mdb: Menú - archivo - Adjuntar - Tabla - Clientes Crear un formulario con el asistente de columnas simples basado el la tabla Clientes. 29 INSTITUCION EDUCATIVA MANUEL GERMAN CUELLO GUTIERREZ TECNOLOGIA E INFORMATICA Profesor. Ing. Armando Vega Armenta Nota: Para que las demás máquinas puedan acceder a la Base de Datos que tenemos en nuestra máquina deberemos decirle a Windows que queremos compartir la carpeta: Lee la tabla. cmdActualizar Sub cmdActualizar_Click () Me!Requery End Sub Nota: Refrescar Actualizar Lee el registro. cmdRefrescar Sub cmdRefrescar_Click () Me!Refresh End Sub En Access se refresca al navegar por el formulario. Y por parte de los demás, desde sus puestos de trabajo y para que puedan acceder a la Base de Datos: 30