INTEGRIDAD
Integridad de las Bases de Datos, la integridad en una base de datos es la corrección y exactitud de la información contenida. Además de conservar la seguridad en un sistema de bases de datos que permite el acceso a múltiples usuarios en tiempos paralelos.
Restricciones de Integridad:
Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos por los usuarios autorizados no provoquen la pérdida de la consistencia de los datos. Por tanto, las restricciones de integridad protegen a la base de datos contra los daños accidentales.
Estas restricciones eran de los tipos siguientes:
• Declaración de claves – la estipulación de que ciertos atributos pueden formar una clave
para un conjunto de entidades determinado.
• Forma de la relación – de varios a varios, de uno a varios, de uno a uno.
En general, la restricción de integridad puede ser un predicado arbitrario referente a la base de datos. Sin embargo, los predicados arbitrarios pueden resultar complicados de verificar. En consecuencia, lo habitual es limitarse a restricciones de integridad que puedan verificarse con una sobrecarga mínima. Existe otra forma de restricción de integridad, denominada «dependencia funcional», que se usa principalmente en el proceso del diseño de esquemas.
Restricciones de Dominio:
Las restricciones de los dominios especifican el conjunto de valores que se pueden asociar con un atributo.
Estas restricciones también pueden impedir el uso de valores nulos para atributos concretos.
Restricciones de Integridad Referencial:
Las restricciones de integridad referencial aseguran que un valor que aparece en una relación para un conjunto de atributos dado aparezca también para un conjunto de atributos concreto en otra relación.
Las restricciones de dominio y las de integridad referencial son relativamente sencillas de verificar. El uso
de restricciones más complejas puede provocar una sobrecarga considerable. Se han visto dos maneras de
expresar restricciones más generales. Los asertos son expresiones declarativas que manifiestan predicados
que deben ser siempre verdaderos.
Aserto:
Un aserto es un predicado que expresa una condición que se desea que la base de datos satisfaga siempre. Las restricciones de dominio y las de integridad referencial son formas especiales de los asertos. Se ha prestado una atención especial a estos tipos de asertos porque se pueden verificar con facilidad y se aplican a una gran variedad de aplicaciones de bases de datos. Sin embargo, hay muchas restricciones que no se pueden expresar utilizando únicamente estas formas especiales. Ejemplos de estas restricciones pueden ser
• La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de todos los saldos de las cuentas de esa sucursal.
• Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1.000 €.
Triggers:
Los triggers, que son instrucciones que el sistema ejecuta automáticamente como efecto colateral de una modificación de la base de datos. Los disparadores se usan para asegurar algunos tipos de integridad.
Además de la protección contra la introducción accidental de inconsistencia, puede ser necesario
proteger los datos almacenados en la base de datos frente a accesos no autorizados y destrucción
o alteración malintencionada.
CONCURRENCIA
La mayoría de los sistemas de gestión de base de datos son de múltiples usuarios. Es decir, permiten cualquier numero T accesando a la misma BD al mismo tiempo. En estos sistemas, se necesita algún mecanismo de control de concurrencia como, por ejemplo, el mecanismo de bloqueo o cierre, que es uno de los mas empleados en la practica.
Hay distintos casos en que puede haber problemas, es decir, en los que una T correctamente definida puede, no obstante, producir un resultado incorrecto debido a la interferencia de otra T (en el caso de que no haya un mecanismo de control adecuado)
Ejemplos:
- Actualizacion perdida:
Transacción A Tiempo Transacción B
___________ ___________
Recuperar R t1 ___________
___________ ___________
___________ t2 Recuperar R
___________ ___________
___________ ___________
Actualizar R t3 ___________
___________ ___________
___________ t4 Actualizar R
A recupera el articulo R en el tiempo t1 y B, el mismo articulo en el tiempo t2.
A actualiza R en t3 y B actualiza el mismo articulo en t4, de acuerdo al valor encontrado en t1.
Entonces, la actualizacion hecha por A se pierde en el tiempo t4, pues B sobreescribe articulos sin haberla considerado.
2. Cierre o bloqueo:
La idea básica de cierre es simple: cuando una T necesita que algún objeto(tipicamente un articulo)
no cambie de forma impredecible mientras que ella lo esta tratando, T adquiere un cierre sobre tal objeto. El efecto es que otras T quedan fuera que no se les permita accesar el articulo, y por tanto, se previene que este sea cambiado por esas T
3. Abrazo Fatal:
Version generalizada del abrazo fatal:
Version generalizada del abrazo fatal:
Transacción A Tiempo Transacción B
___________ ___________
solicita X/R1 t1 ___________
___________ ___________
___________ t2 solicita X/R2
___________ ___________
___________ ___________
solicita X/R2 t3 ___________
espera ___________
espera t4 solicita X/R1
espera espera
espera espera
El abrazo fatal es una situación en la que dos o mas T están simultáneamente en un estado de espera, cada una esperando que una de las otras libere un recurso que ella necesita para proseguir.
Si un lazo fatal ocurre, el sistema debe detectarlo y romperlo. Esto ultimo se realiza seleccionando unas de las T involucradas en el abrazo fatal como victima y deshaciendo lo realizado por ella, y por tanto, liberando sus cierres, lo que permite a otra T proseguir. Muchos sistemas reinician automáticamente dicha T, asumiendo que las condiciones causantes del abrazo falta no ocurrirán.
No obstante es preferible evitar la ocurrencia de un abrazo fatal que recuperarse de el. Lo mas usual para evitarlo es no permitir a una transaccion solicitar un recurso.
No hay comentarios:
Publicar un comentario