1 Capítulo 1 Introducción a bases de datos 1 Introducción a bases de datos 1.1 ¿Qué es una base de datos? Una base de datos es una colección de datos organizados con el propósito de modelar algún tipo de organización o proceso organizacional. No importa si los datos están contenidos en hojas de papel o en una computadora. Mientras se agreguen datos de una manera organizada para un propósito específico se tiene una base de datos. 1.2 Tipos de bases de datos Se considera que hay dos tipos de bases de datos: operacionales y analíticas. Las bases de datos operacionales se usan principalmente para el proceso de transacciones en línea, en situaciones donde es necesario coleccionar, modificar y mantener datos diariamente. Los datos almacenados en este tipo de bases son dinámicos, o sea que cambian constantemente y siempre reflejan información actualizada al instante. Organizaciones tales como bancos, tiendas departamentales, compañías manufactureras, hospitales, supermercados, etc., utilizan bases de datos operacionales debido a que su información está en un estado constante de cambio. En contraste las bases de datos analíticas se usan principalmente en escenarios de procesos analíticos, donde se almacenan datos estadísticos o históricos. Por ejemplo una compañía puede almacenar información sobre record de ventas en los últimos diez años para analizar el comportamiento del mercado y definir estrategias para lograr mejores resultados. En este tipo de base se almacenan datos estáticos, llamados así porque nunca o muy raramente son modificados. Entre las organizaciones que utilizan este tipo de base están los laboratorios químicos y farmacéuticos, compañías geológicas y las que realizan análisis de mercados así como las que hacen estudios demográficos. 1.3 Modelos de bases de datos Además de diferenciar las bases de datos de acuerdo a su función, también se pueden diferencias de acuerdo a cómo modelan los datos. ¿Qué es un modelo de datos? Esencialmente un modelo de datos es una “descripción” de un contenedor y una metodología para almacenar y recuperar datos de ese contenedor. Los Bases de datos I Arturo Ruvalcaba 2 Capítulo 1 Introducción a bases de datos modelos de datos son abstracciones que consisten en conceptos y algoritmos matemáticos. El análisis y diseño de los modelos de datos han sido la piedra angular en la evolución de las bases de datos. Conforme han avanzado los modelos de datos, así lo ha hecho la eficiencia en las bases de datos. Antes de 1980, los modelos de base de datos más ampliamente usados eran los sistemas en red y jerárquicos. 1.3.1 Modelo de base de datos jerárquica Los datos en este tipo de base de datos, se estructuran jerárquicamente y su diagrama es el de un árbol invertido. Una tabla actúa como la “raíz” del árbol invertido y otras tablas actúan como “ramas” que brotan de la raíz. Si se considera una base de datos representando una relación cliente-cuenta en un sistema bancario. Se tienen dos tipos de registros cliente y cuenta. Se puede definir un registro cliente con una notación similar a la de Pascal: type cliente record cliente_nombre: string; cliente_calle: string; cliente_ciudad: string; end El registro tipo cuenta se puede definir como type cuenta record cuenta_número: string; cuenta_saldo: integer; end La figura 1.1 muestra el diagrama de la estructura de una base de datos jerárquica. Una relación en una base de datos jerárquica está representada por el término padre/hijo. En este tipo de relación una tabla padre puede estar asociada con una o más tablas hijo, pero una tabla hijo sólo puede estar asociada con una tabla padre. Estas tablas están explícitamente enlazadas vía apuntadores o por un arreglo físico de registros dentro de las tablas. En este modelo un usuario accede a los datos empezando por la tabla raíz y recorriendo el árbol hasta el dato buscado. Ésta método de acceso requiere que el usuario esté muy familiarizado con la estructura de la base de datos. Una ventaja de esta base de datos es que el un usuario puede recuperar datos muy rápidamente debido a que hay enlaces explícitos entre las tablas. Otra ventaja es que la integridad referencial está automáticamente reforzada, esto asegura que un registro en una tabla hijo debe estar enlazado a un registro existente en una tabla padre, y que un registro que se elimine en una tabla padre causará que todos los registros asociados en la(s) tabla(s) hijo(s) también será(n) eliminado(s). Bases de datos I Arturo Ruvalcaba 3 Capítulo 1 Introducción a bases de datos Figura 1.1. Estructura de una base de datos jerárquica Este tipo de base de datos no soporta relaciones complejas por lo que existen con frecuencia problemas de datos redundantes. La redundancia ocurre debido a que la base de datos tipo jerárquico maneja las relaciones uno a muchos bien, pero no así las relaciones muchos a muchos. Esto es porque un hijo sólo puede tener un padre, sin embargo, en muchos casos se requerirá tener un hijo relacionado a más de un padre. Por ejemplo si una cuenta bancaria puede ser usada por más de un cliente, hay que replicar el registro de la cuenta para cada cliente que la utilice. No se puede modelar directamente esta relación en la base de datos jerárquica. 1.3.2 Modelo de base de datos en red El modelo de base de datos en red se desarrolló como un intento de solucionar los problemas que presenta el modelo jerárquico. Este modelo es muy similar al modelo jerárquico, se puede considerar a este último como un subconjunto del modelo de base de datos en red. Sin embargo, en vez de utilizar el árbol jerárquico de un solo padre, el modelo en red proporciona una jerarquía similar al árbol con la excepción de que una tabla hijo puede tener más de un padre. Esto permite tener relaciones muchos a muchos. La figura 1.2 muestra una base de datos en red, representando una relación cliente-cuenta en un sistema, igual que en el modelo jerárquico. En la base de datos en red el usuario puede acceder a los datos iniciando la búsqueda por cualquiera de los nodos para recorrer la base en cualquier dirección hacia el dato buscado. Una ventaja de este modelo es que proporciona rápido acceso a los datos y que permite crear relaciones más complejas que las que ofrece el modelo jerárquico. La principal desventaja es que el usuario debe conocer muy bien la estructura de la base para almacenar y recuperar información, ya que este modelo es difícil de implementar y mantener. La mayoría de las implementaciones de este modelo fueron usadas por programadores en lugar de los usuarios finales. Otra desventaja es que no es fácil cambiar la estructura de la base sin afectar los programas de aplicación que interactúan con ella Bases de datos I Arturo Ruvalcaba 4 Capítulo 1 Introducción a bases de datos Figura 1.2 Estructura de una base de datos en red 1.3.3 Modelo de base de datos relacional A base de datos relacional fue concebida en 1969 por el Dr. Edgar F. Codd, quien basó este modelo en dos ramas de la matemática: la teoría de conjuntos y la lógica de predicado de primer orden. El nombre del modelo se deriva del término relación, el cual es parte de la teoría de conjuntos. Una base de datos relacional almacena datos en relaciones, las cuales el usuario percibe como tablas. Cada relación se compone de tuplas (o sea registros) y atributos (o sea campos). El orden físico de los registros y de los campos no tiene importancia. Cada tabla se puede identificar por un nombre único y cada registro en la tabla se identifica por un campo que contiene un valor único. Estas son las dos características de una base de datos relacional que permiten que los datos existan independientemente del modo en que están almacenados físicamente en la computadora. Para tener acceso a la información de una tabla, el usuario sólo necesita conocer el nombre de la tabla y de los campos que forman los registros. Por ejemplo, si se desea recuperar un registro de una tabla, se puede lograr comparando el valor almacenado en un campo de ese registro con algún criterio de búsqueda. Sería algo así como: “Dame todos los registros de la tabla ‘ESTUDIANTES’ en los que el valor del campo ‘NOMBRE’ es ‘María’.” Esta metodología de acceso a los datos hace al modelo relacional muy diferente de y mejor que los modelos de base de datos anteriores porque es un modelo mucho más simple de entender. Otro beneficio de un sistema relacional es que proporciona herramientas extremadamente útiles para la administración de las bases de datos. Esencialmente, las tablas no solo pueden almacenar los datos sino que también se pueden usar para generar meta-datos (datos sobre la tabla y nombres de campos los cuales forman la estructura de la base de datos, derechos de acceso a la base de datos, reglas de integridad y validación de datos, etc.) Bases de datos I Arturo Ruvalcaba 5 Capítulo 1 Introducción a bases de datos 1.4 Terminología El diseño de bases de datos relacionales tiene su propio conjunto de términos, así como sucede en cualquier otra profesión o disciplina. Hay algunas buenas razones por las cuales es importante conocer éstos términos: a) Se utilizan para expresar y definir las ideas y conceptos especiales del modelo relacional. b) Se utilizan para expresar y definir el proceso mismo del diseño de la base de datos. c) Se utilizan cuando se hace referencia a una base de datos relacional o a un sistema de gestión de base de datos relacional. 1.4.1 Términos relacionados al valor Datos Los valores que se almacenan en una base de datos son datos. Los datos son estáticos en el sentido que permanecen en el mismo estado hasta que se modifican por algún proceso manual o automático. Redundancia de datos Se dice que hay redundancia de datos cuando la misma información es almacenada varias veces en la misma base de datos. Esto es siempre algo a evitar, la redundancia dificulta la tarea de modificación de datos, y es el motivo más frecuente de inconsistencia de datos. Además requiere un mayor espacio de almacenamiento, que influye en mayor coste y mayor tiempo de acceso a los datos. Inconsistencia de datos Sólo se produce cuando existe redundancia de datos. La inconsistencia consiste en que no todas las copias redundantes contienen la misma información. Así, si existen diferentes modos de obtener la misma información, y esas formas pueden conducir a datos almacenados en distintos sitios. El problema surge al modificar esa información, si lo sólo cambiamos esos valores en algunos de los lugares en que se guardan, las consultas que hagamos más tarde podrán dar como resultado respuestas inconsistentes (es decir, diferentes). Puede darse el caso de que dos aplicaciones diferentes proporcionen resultados distintos para el mismo dato. Información Información son los datos que se procesan de una manera tal que los hace significativos y útiles al trabajar con ellos. La información es dinámica en el sentido de los constantes cambios a los datos de la base, y también en el sentido de que se pueden procesar y presentar en un número ilimitado de modos. El punto es que los datos se pueden procesar de una manera que se conviertan en información significativa. Es muy importante que se entienda la diferencia entre datos e información. Una base de datos está diseñada para proporcionar información significativa a alguien dentro de la empresa u organización. Esta información se puede proporcionar solo si los datos apropiados existen en la base de datos y ésta está estructurada de tal modo que soporta esa información. Para no olvidar la diferencia entre datos e información, hay que recordar el siguiente axioma: Bases de datos I Arturo Ruvalcaba 6 Capítulo 1 Introducción a bases de datos Datos son los que se almacenan; información es lo que se consulta Nulo Un valor nulo representa un valor desconocido o inexistente. Un valor nulo no representa un cero o uno o más espacios en blanco. La principal desventaja con los valores nulos es que causan un efecto adverso en operaciones matemáticas. Una operación que involucre un nulo dará como resultado otro nulo. Esto es lógicamente razonable, ya que si un número es desconocido entonces el resultado de la operación es necesariamente desconocido. Por ejemplo: (25 x 3) + 4 = 79 (nulo x 3 ) + 4 = nulo (25 x nulo) + 4 = nulo (25 x 3) + nulo = nulo 1.4.2 Términos relacionados a la estructura Tabla De acuerdo al modelo relacional, los datos en una base de datos relacional se almacenan en relaciones, las cuales el usuario percibe como tablas. Cada relación está compuesta de tuplas (registros) y atributos (campos). El orden lógico de los registros y campos no tiene importancia, y cada tabla contiene al menos un campo (conocido como llave primaria) que identifica unívocamente cada uno de los registros. Una tabla que almacena datos que se usan para proporcionar información es llamada tabla de datos, y es el tipo más común que se usa en las bases de datos. Estos datos se dice que son dinámicos porque están en constante cambio. Una tabla de validación (también conocida como tabla de búsqueda) almacena datos que se usan específicamente para implementar la integridad de los datos. Una tabla de validación usualmente contiene datos tales como nombres de ciudades, códigos de productos, etc. Este tipo de datos se considera estático porque raras veces cambian. Campo Un campo (conocido como atributo en las bases de datos relacionales) es la estructura más pequeña en la base de datos y representa una característica de los datos que contiene la tabla a la cual pertenece. Registro Un registro (conocido como tupla) se compone del conjunto completo de campos que tiene una tabla. De acuerdo a la manera en que una tabla está definida, cada registro se identifica en la base de datos por un valor único en el campo que es la llave primaria del registro. Bases de datos I Arturo Ruvalcaba 7 Capítulo 1 Introducción a bases de datos Vista Una vista es una tabla “virtual” compuesta de campos de una o más tablas en la base de datos. Las tablas que conforman la vista se conocen como tablas base. El modelo relacional se refiere a una vista como “virtual” debido a que toma datos de las tablas base y no tiene datos propios. De hecho, la única información sobre una vista que se almacena en la base es su estructura. Llaves (claves) Las llaves son campos especiales que tienen un papel específico en una tabla, y el tipo de llave determina su propósito dentro de la tabla. Los tipos de llave más significativos son la llave primaria y la llave foránea. Una llave primaria es un campo o grupo de campos que identifica unívocamente cada registro dentro de la tabla. Si una llave primaria se compone de dos o más campos, se conoce como llave primaria compuesta. Un valor de una llave primaria identifica un registro específico en toda la base de datos. Un campo de una llave primaria identifica una tabla dada en toda la base de datos. La llave primaria refuerza la integridad a nivel de tabla y ayuda a establecer la asociación o interrelación con otras tablas Índice Un índice es una estructura que un sistema de gestión de base de datos (SGBD) proporciona para mejorar el procesamiento de los datos. Un índice no tiene absolutamente que ver con la estructura lógica de la base de datos. Los términos de índice y llave son confundidos con frecuencia en los temas de base de datos. Una manera fácil de recordar la diferencia entre llave e índice, es tener en cuenta que las llaves son estructuras lógicas que se usan para identificar registros dentro de una tabla, y que los índices son estructuras físicas que se usan para optimizar el procesamiento de los datos. 1.4.3 Términos relacionados con las interrelaciones Interrelaciones (relaciones) Existe una interrelación entre dos tablas cuando se pueden asociar de alguna manera los registros de la primera tabla con los registros de la segunda. Se puede establecer una interrelación mediante un conjunto de llaves primarias y foráneas o a través de una tercer tabla conocida como tabla de enlace (también llamada tabla asociativa). Se puede caracterizar toda interrelación de tres modos: por el tipo de interrelación que existe entre las tablas; por el modo en que cada tabla participa en la interrelación; y por el grado con el que cada tabla participa. Tipos de relaciones Hay tres tipos específicos de relaciones (conocidos como cardinalidad) que pueden existir entre un par de tablas; uno a uno, uno a muchos y muchos a muchos. Bases de datos I Arturo Ruvalcaba 8 Capítulo 1 Introducción a bases de datos Relación uno a uno Un par de tablas tienen una relación uno a uno cuando un registro de la primera tabla esta relacionado a solo un registro de la segunda tabla, y un registro de la segunda tabla está relacionado a un solo registro de la primera tabla. En este tipo de relación, una tabla funciona como la tabla “padre” y la otra tabla funciona como la tabla “hijo”. La relación se establece tomando una copia de la llave primaria de la tabla padre y se incorpora en la estructura de la tabla hijo donde se convierte en una llave foránea. Relación uno a muchos Existe una relación uno a muchos entre un par de tablas cuando un registro de la primer tabla puede estar relacionado a muchos registros de la segunda tabla, pero un registro de la segunda tabla puede estar relacionado a un solo registro de la primera tabla. En este tipo de relación también es aplicable el modelo padre/hijo. La relación se establece tomando una copia de la llave primaria de la tabla padre y se incorpora en la estructura de la tabla hijo donde se convierte en una llave foránea. Relación muchos a muchos Un par de tablas tienen una relación muchos a muchos cuando un registro de la primer tabla puede estar relacionado con muchos registros de la segunda tabla, y un registro de la segunda tabla puede estar relacionado con muchos registros de la primera tabla. Este tipo de relación se establece con una tabla de enlace. Con las llaves primarias de cada tabla se define la estructura de la tabla de enlace. Éstos campos tienen dos papeles distintos: juntos forman la llave primaria compuesta de la tabla de enlace; en forma separada cada uno actúa como llave foránea. Tipos de participación La participación de una tabla en una relación puede ser obligatoria u opcional. Digamos que existe una relación entre dos tablas llamadas TABLA_A y TABLA_B La participación de la TABLA_A es obligatoria si se debe insertar al menos un registro en la TABLA_A antes de insertar un registro en la TABLA_B. La participación de la TABLA_A es opcional si no se requiere insertar algún registro en la TABLA_A antes de insertar registros en la TABLA_B. Grado de participación El grado de participación determina el número mínimo de registros que una tabla dada debe tener asociados con un registro de la tabla con la que se relaciona, y el número máximo de registros que una tabla dada debe tener asociados con un registro de la tabla con la que se relaciona. Considérese una relación entre dos tablas llamadas TABLA_A y TABLA_B. Se establece el grado de participación para la TABLA_B indicando un número mínimo y máximo de registros en la TABLA_B que pueden estar relacionados con un solo registro de la TABLA_A. Si un registro de la TABLA_A puede estar relacionado a no menos que un registro pero no más de diez registros de la TABLA_B, entonces el grado de participación para la TABLA_B es 1, 10. Bases de datos I Arturo Ruvalcaba 9 Capítulo 1 Introducción a bases de datos 1.4.4 Términos relacionados con la integridad Especificaciones de campo Una especificación de campo (tradicionalmente conocida como dominio) representa todos los elementos de un campo. Cada especificación de campo incorpora tres tipos de elementos: general, físico y lógico. Los elementos de tipo general constituyen la información más fundamental acerca de un campo e incluyen datos tales como nombre del campo, descripción y tabla padre. Los elementos de tipo físico determinan como está constituido un campo y como se representa a la persona que lo usa. Esta categoría incluye datos tales como tipo de dato, longitud y formato de despliegue. Los elementos de tipo lógico describen los valores almacenados en un campo e incluyen datos como valor requerido, rango de valores y el valor por omisión. Integridad de datos La integridad de datos se refiere a la validez, consistencia y exactitud de los datos en la base de datos. Es uno de los aspectos más importantes en el proceso de diseño de la base y no se debe subestimar. Existen cuatro tipos de integridad de datos que se implementan durante el proceso de diseño de la base. Tres tipos de integridad de datos están basados en varios aspectos en la estructura de la base de datos y se etiquetan de acuerdo al área (nivel) en el cual operan. El cuarto tipo de integridad se basa en el modo que una organización percibe y usa los datos. A continuación se da una descripción de cada tipo. 1. Integridad a nivel de tabla (conocida tradicionalmente como integridad de entidad), asegura que no existen registros duplicados dentro de la tabla y que el campo que identifica cada registro en la tabla es único y nunca nulo. 2. Integridad a nivel de campo (conocida tradicionalmente como integridad de dominio), asegura que la estructura de cada campo es correcta: que los valores de cada campo son válidos, consistentes y exactos; y que los campos del mismo tipo están consistentemente definidos en toda la base. 3. Integridad a nivel de relación (conocida tradicionalmente como integridad referencial), asegura que las relaciones entre un par de tablas es correcta y que los registros en las tablas están sincronizados siempre que un dato se inserta, se actualiza o se elimina de una tabla. 4. Reglas de negocio imponen restricciones o limitaciones en ciertos aspectos de la base de datos en los modos que una organización percibe y usa sus datos. Estas restricciones pueden afectar aspectos del diseño de la base de datos tales como el rango y tipo de los valores almacenados en un campo, el tipo y grado de participación de cada tabla dentro de una relación y el tipo de sincronización usada para la integridad a nivel de relación en ciertas interrelaciones. Bases de datos I Arturo Ruvalcaba Capítulo 1 Introducción a bases de datos 10 1.5 Propósito de los sistemas de base de datos Considérese parte de una empresa bancaria que, entre otros datos, mantiene información acerca de todos los clientes y cuentas de ahorros. Una manera de mantener la información en una computadora es almacenarla en archivos del sistema operativo. Para permitir a los usuarios manipular la información, el sistema tiene un número de programas de aplicación que manipula los archivos, incluyendo: Un programa para efectuar cargos o abonos en una cuenta. Un programa para añadir una cuenta nueva. Un programa para calcular el saldo de una cuenta. Un programa para generar las operaciones mensuales. Estos programas de aplicación se han escrito por programadores de sistemas en respuesta a las necesidades de la organización bancaria. Si las necesidades se incrementan, se añaden nuevos programas de aplicación al sistema. Por ejemplo, supóngase que la empresa bancaria decide ofrecer a sus clientes cuentas de cheques. Como resultado se crean nuevos archivos permanentes que contengan información acerca de todas las cuentas de cheques mantenidas por el banco, y puede ser necesario escribir nuevos programas de aplicación para tratar situaciones que no existían en las cuentas de ahorro, tales como sobregiros. Así, sobre la marcha, se añaden más archivos y programas de aplicación al sistema. Este sistema de procesamiento de archivos típico que se acaba de describir se mantiene mediante un sistema operativo convencional. Los registros permanentes son almacenados en varios archivos y se escriben diferentes programas de aplicación para extraer registros y para añadir registros a los archivos adecuados. Antes de la llegada de los sistemas de gestión de bases de datos (SGBDs), las organizaciones normalmente han almacenado la información usando tales sistemas. Mantener información de la organización en un sistema de procesamiento de archivos tiene una serie de inconvenientes importantes: Redundancia e inconsistencia de datos. Debido a que los archivos y programas de aplicación son creados por diferentes programadores en un largo período de tiempo, los diversos archivos tienen probablemente diferentes formatos y los programas pueden estar escritos en diferentes lenguajes. Más aún, la misma información puede estar duplicada en diferentes lugares (archivos). Por ejemplo, la dirección y número de teléfono de un cliente particular puede aparecer en un archivo que contenga registros de cuentas de ahorros y en un archivo que contenga registros de una cuenta de cheques. Esta redundancia conduce a un almacenamiento y coste de acceso más altos. Además, puede conducir a inconsistencia de datos; es decir, las diversas copias de los mismos datos pueden no coincidir. Por ejemplo, un cambio en la dirección del cliente puede estar reflejado en los registros de las cuentas de ahorro pero no estarlo en el resto del sistema. Dificultad en el acceso a los datos. Supóngase que uno de los empleados del banco necesita averiguar los nombres de todos los clientes que viven en el distrito postal 28733 de la ciudad. El empleado pide al departamento de procesamiento de datos que genere dicha lista. Debido a que esta petición no fue prevista cuando el Bases de datos I Arturo Ruvalcaba Capítulo 1 Introducción a bases de datos 11 sistema original fue diseñado, no hay un programa de aplicación a mano para satisfacerla. Hay, sin embargo, un programa de aplicación que genera la lista de todos los clientes. El empleado del banco tiene ahora dos opciones: bien obtener la lista de todos los clientes y obtener la información que necesita manualmente, o bien pedir al departamento de procesamiento de datos que haga que un programador de sistemas escriba el programa de aplicación necesario. Ambas alternativas son obviamente insatisfactorias. Supóngase que se escribe tal programa y que, varios días más tarde, el mismo empleado necesita arreglar esa lista para incluir sólo aquellos clientes que tienen una cuenta con saldo de 10.000 € o más. Como se puede esperar, un programa para generar tal lista no existe. De nuevo, el empleado tiene que elegir entre dos opciones, ninguna de las cuales es satisfactoria. La cuestión aquí es que el entorno de procesamiento de archivos convencional no permite que los datos necesarios sean obtenidos de una forma práctica y eficiente. Se deben desarrollar sistemas de recuperación de datos más interesantes para un uso general. Aislamiento de datos. Debido a que los datos están dispersos en varios archivos, y los archivos pueden estar en diferentes formatos, es difícil escribir nuevos programas de aplicación para recuperar los datos apropiados. Problemas de integridad. Los valores de los datos almacenados en la base de datos deben satisfacer ciertos tipos de restricciones de consistencia. Por ejemplo, el saldo de una cuenta bancaria no puede nunca ser más bajo de una cantidad predeterminada (por ejemplo 25 €). Los desarrolladores hacen cumplir esas restricciones en el sistema añadiendo el código apropiado en los diversos programas de aplicación. Sin embargo, cuando se añaden nuevas restricciones, es difícil cambiar los programas para hacer que se cumplan. El problema es complicado cuando las restricciones implican diferentes elementos de datos de diferentes archivos. Problemas de atomicidad. Un sistema de una computadora, como cualquier otro dispositivo mecánico o eléctrico, está sujeto a fallo. En muchas aplicaciones es crucial asegurar que, una vez que un fallo ha ocurrido y se ha detectado, los datos se restauran al estado de consistencia que existía antes del fallo. Consideremos un programa para transferir 50 € desde la cuenta A a la B. Si ocurre un fallo del sistema durante la ejecución del programa, es posible que los 50 € fueron eliminados de la cuenta A pero no abonados a la cuenta B, resultando un estado de la base de datos inconsistente. Claramente, es esencial para la consistencia de la base de datos que ambos, el abono y el cargo tengan lugar, o que ninguno tenga lugar. Es decir, la transferencia de fondos debe ser atómica: ésta debe ocurrir en ellos por completo o no ocurrir en absoluto. Es difícil asegurar esta propiedad en un sistema de procesamiento de archivos convencional. Anomalías en el acceso concurrente. Conforme se ha ido mejorando el conjunto de ejecución de los sistemas y ha sido posible una respuesta en tiempo más rápida, muchos sistemas han ido permitiendo a múltiples usuarios actualizar los datos simultáneamente. En tales sistemas un entorno de interacción de actualizaciones concurrentes puede dar lugar a datos inconsistentes. Considérese una cuenta bancaria A, que contiene 500 €. Si dos clientes retiran fondos (por ejemplo 50 € y 100 € respectivamente) de la cuenta A en aproximadamente el mismo tiempo, el resultado de las ejecuciones concurrentes puede dejar la cuenta en un estado incorrecto (o inconsistente). Supongamos que los programas se ejecutan para cada retirada y escriben el resultado después. Si los dos programas funcionan concurrentemente, Bases de datos I Arturo Ruvalcaba Capítulo 1 Introducción a bases de datos 12 pueden leer ambos el valor 500 €, y escribir después 450 € y 400 €, respectivamente. Dependiendo de cuál escriba el último valor, la cuenta puede contener bien 450 € o bien 400 €, en lugar del valor correcto, 350 €. Para protegerse contra esta posibilidad, el sistema debe mantener alguna forma de supervisión. Sin embargo, ya que se puede acceder a los datos desde muchos programas de aplicación diferentes que no han sido previamente coordinados, la supervisión es difícil de proporcionar. Problemas de seguridad. No todos los usuarios de un sistema de bases de datos deberían poder acceder a todos los datos. Por ejemplo, en un sistema bancario, el personal de nóminas necesita ver sólo esa parte de la base de datos que tiene información acerca de varios empleados del banco. No necesitan acceder a la información acerca de las cuentas de clientes. Como los programas de aplicación se añaden al sistema de una forma ad hoc, es difícil garantizar tales restricciones de seguridad. Estas dificultades, entre otras, han motivado el desarrollo de los sistemas de bases de datos. Bases de datos I Arturo Ruvalcaba