Universidad Nacional de Costa Rica – Diseño e Implementación de Bases de Datos Un enfoque formal a las Bases de Datos… Desde lo relacional hasta lo objeto relacional Capítulo 1 Principios de bases de datos SOBRE EL CONCEPTO DE LOS DATOS Y BASE DE DATOS Las personas utilizan la palabra “datos” diariamente, para expresar una unidad atómica de información, por ejemplo el número 4 representa un dato, el cual por sí mismo no significa absolutamente nada. Cuando al número 4 se le endosa una unidad entonces decimos que es información útil. Por ejemplo, para el humano decir 4 años tiene más sentido que decir tiene 4… ¿Qué? Las bases de datos son excelentes formas de almacenar datos (no información, pues la información supone conocimiento del tema). Se define una base de datos como “un conjunto de datos organizado que guardan relación entre ellos”. SOBRE LAS BASES DE DATOS Un Sistema Gestor de Bases de Datos, es en un sentido purista una aplicación que administra un conjunto de datos; sin embargo esa definición no es suficiente para explicar que es una base de datos. Como programador usted crear una base de datos desde cero, sin embargo es impráctico para los profesionales invertir grandes cantidades de recursos creando su propia base de datos, en vez de utilizar alguna opción libre. A estos programas que administran las bases de datos se les llaman Sistemas Gestores de Bases de Datos (SGBD). Para considerar que un SGBD es un buen gestor debe de tener las siguientes características: Atomicidad es la característica que describe las transacciones en donde se tiene que dar el “todo o nada”. Supongamos un programa para transferencias monetarias, ahora supongamos que dicho programa usa una base de datos para quitar dinero de una cuenta y ponerle dinero a otra cuenta. Si durante el proceso de quitarle dinero a la primera cuenta, la base de datos cae por determinada falla, es tarea del SGBD abortar todo proceso involucrado y deshacer los cambios. De esta forma se mantiene el todo y la parte. Si la transacción fuera exitosa entonces se dice que la base de datos está en un estado consistente1. Consistencia como producto de transacciones atómica, una base de datos deber estar siempre (o en algún momento en el tiempo, en el caso de las replicaciones) en un estado consistente. Es decir, todos los datos de la base tienen un estado apropiado. Además de las transacciones atómicas es posible llegar a la consistencia mediante reglas, constraints, cascades y triggers. Isolation (aislamiento) tiene relaciones a la teoría de bloqueos, una transacciones debe ser aislada en el sentido que su ejecución no afecte a otra transacción. Consistencia se refiere a que todas las transacciones de una base de datos, son transacciones completas y por lo tanto no hay información incorrecta entre los datos. 1 © 2013 Steven R. Brenes Chavarría p. 1 de 4 Universidad Nacional de Costa Rica – Diseño e Implementación de Bases de Datos Un enfoque formal a las Bases de Datos… Desde lo relacional hasta lo objeto relacional Supongamos que existen la transacción T1 y T2. Ahora T1 afecta los datos de salarios para leerlos, mientras la transacción T2 realiza una actualización aumentándole 5.000 colones a todos los empleados. Para lograr que ambas transacciones se ejecuten de forma adecuada, es necesario aplicar un bloqueo no exclusivo a la transacción T1 mientras que la transacción T2 deberá tener un bloqueo exclusivo¸ para que la información de lectura sea la correcta; mientras se aísla la transacción T2. Durabilidad una vez que una transacción se ejecuta, la misma deberá ser permanente. Es decir, no podría suceder que una transacción se deshaga sin motivo. Para ello los SGBD implementan logs de transacciones y escritura a los archivos físicos. El conjunto de estas cuatro características, típicamente se denotan por ACID. Poner las características ACID en ejecución no es tan sencillo, las transacciones en las bases de datos requieren pequeños cambios en los índices para actualizar algún estado, requiere consultar el diccionario de datos por citar algunos casos. Cada una de estas transacciones podrían fallas por diversas rezones, por ejemplo no tiene campo suficiente el disco duro, existe un bloqueo de archivos a nivel de sistema operativo (OS), el tiempo de CPU que el OS le dio al SGBD para realizar una transacción. ACID sugiere que la base de datos pueda realizar todas estas operaciones inmediatamente. De hecho esto es difícil de conseguir. Hay dos clases de técnicas populares: escribir a un registro antes de continuar y la paginación de la sombra. En ambos casos, los bloqueos se deben implantar antes que la información sea actualizada, y dependiendo de la técnica puesta en práctica, todos los datos se tienen que haber leído. En escribir a un registro antes de continuar, la atomicidad es garantizada asegurándose que toda la información esté escrita a un registro antes que se escriba a la base de datos. Eso permite que la base de datos vuelva a un estado anterior en caso de un desplome. En sombrear, las actualizaciones se aplican a una copia de la base de datos, y se activa la nueva copia cuando la transacción sea confiable. La copia refiere a partes sin cambios de la vieja versión de la base de datos, en vez de ser un duplicado entero. SOBRE LAS 12 REGLAS DE CODD Durante los años ochenta, comenzaron a aparecer numerosos Sistemas Gestores de Bases de Datos, sin embargo la gran mayoría eran sistemas que administraban archivos en forma de tablas pero carecían de muchas funciones deseables. En 1984 Edgar Codd, el creador del modelo relacional formuló 12 reglas de lo que debería ser un Sistema Gestor de Bases de Datos, alguna de estas reglas son difícil de implementar, por lo que algunos SDBD las implementan parcialmente, cuanto más reglas implemente un SGBD más relacional se puede considerar. Regla 1. Regla de la información. Toda la información en una base de datos se representa exclusivamente mediante tablas. Regla 2. Regla del acceso garantizado. Para todos y cada uno de los datos atómicos, de una base de datos relacional se garantiza que son accesibles a nivel lógico © 2013 Steven R. Brenes Chavarría p. 2 de 4 Universidad Nacional de Costa Rica – Diseño e Implementación de Bases de Datos Un enfoque formal a las Bases de Datos… Desde lo relacional hasta lo objeto relacional utilizando una combinación de nombre de tabla, valor de clave primaria y nombre de columna. Regla 3. Tratamiento sistemático de valores nulos. Se debe disponer de valores nulos (distintos a cadenas vacías, vacíos, 0) para representar información incompleta o no aplicable de manera que sea independiente del tipo de dato. Regla 4. Catálogo dinámico en línea basado en modelo relacional. Esto significa que los datos necesarios para que funcione la base de datos, como el diccionario de datos o el catálogo de la base de datos, es también una tabla y por lo tanto es posible de consultar su información de la misma forma que los demás datos. Regla 5. Regla del sublenguaje de datos completo. Todas las operaciones en las bases de datos, deben poder ser expresadas en un lenguaje de datos, que sea consistente con los modelos relacionales. Regla 6. Regla de actualización de vistas. Todas las vistas que son teóricamente actualizables por el programador, también deberán ser actualizables autónomamente por el sistema. Regla 7. Inserción, actualización y borrado de alto nivel. Todas las operaciones para mantener la base de datos con información, es debe de poder hacer mediante operaciones de alto nivel (teoría de conjuntos). Es decir, se pueden hacer actualizaciones masivas y no registro por registro. Regla 8. Independencia física de los datos. Los programas a tienen algún tipo de relación con las bases de datos, deben poder seguir funcionando sin modificación alguna, aunque la base de datos sufra un cambio en la ubicación de los archivos. Regla 9. Independencia lógica de los datos. Los programas a tienen algún tipo de relación con las bases de datos, deben poder seguir funcionando sin modificación alguna, aunque la base de datos sufra un cambio en la forma de las tablas, como agregar nuevas columnas. Regla 10. Independencia de integridad. Las reglas de integridad deben ser escritas en un sublenguaje compatible con la base de datos. Según el modelo relacional la base de datos debe tener las siguientes integridades: Integridad de dominio Integridad de entidad Integridad referencial Regla 11. Independencia de distribución. Las bases de datos deben ser transparente aunque sean sistemas distribuidos. Para cumplir con esta regla se debe cumplir las siguientes subreglas: Transparencia de localización. El usuario tiene la impresión de que trabaja con una base de datos local. Transparencia de Fragmentación. El usuario no se da cuenta que la relacion con la que trabaja, está separada. © 2013 Steven R. Brenes Chavarría p. 3 de 4 Universidad Nacional de Costa Rica – Diseño e Implementación de Bases de Datos Un enfoque formal a las Bases de Datos… Desde lo relacional hasta lo objeto relacional Transparencia de replicación. El usuario no se da cuenta de que existen copias de la información en diferentes bases de datos. Regla 12. Regla de la no subversión. Las bases de datos deben poder manipular registros uno por vez (a bajo nivel), y ello no implicar saltarse las reglas de integridad de la regla 10. © 2013 Steven R. Brenes Chavarría p. 4 de 4