10

Click here to load reader

Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

Embed Size (px)

Citation preview

Page 1: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

Universidad de San Carlos de Guatemala

Laboratorio: Sistemas de Administraciónde Bases de Datos 1.

Aux.: Christoper Santisteban.

Sección: “A+”

Nombre: Carnet:

Walter Roberto Herrera Gutiérrez. 2003-12758

Andrea Adriana Grimaldi Santos. 2006-11206

Oscar Eduardo Vásquez Requena. 2009-15252

Guatemala #/08/2012

Page 2: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

BasesdeDatos(ACID,ReglasdeCodd

eIntegridaddedatos)

ACID: Por sus siglas en ingles Atomicity Consistency Isolation Durability, que traducido al español

es Atomicidad, Consistencia, Aislamiento y Durabilidad; es un conjunto de características

necesarias para que un conjunto de instrucciones puedan ser consideradas como una transacción1

y por ende está pueda ser fiable. A continuación se da una breve definición de cada una de estas

cuatro propiedades:

1. Atomicidad:

Cualquier cambio de estado que produce una transacción es atómico, es decir, ocurren

todos o no ocurre ninguno. En otras palabras, esta propiedad asegura que todas las

acciones de la transacción se realizan o ninguna de ellas se lleva a cabo; la atomicidad

requiere que si una transacción se interrumpe por una falla, sus resultados parciales deben

ser deshechos.

2. Consistencia:

Esta propiedad establece que solo los valores o datos válidos serán escritos en la base de

datos; si por algún motivo una transacción que es ejecutada viola esta propiedad, se

aplicara un roll back a toda la transacción dejando a la bases de datos en su estado de

consistencia anterior. En caso de que la transacción sea ejecutada con éxito, la base de

datos pasara de su estado de consistencia anterior a un nuevo estado de consistencia.

3. Aislamiento:

Está propiedad asegura que no sean afectadas entre sí las transacciones, en otras palabras

esto asegura que la realización de dos o mas transacciones sobre la misma información

sean independientes y no generen ningún tipo de error.

4. Durabilidad:

Es la propiedad de las transacciones que asegura que una vez finalizada su ejecución, sus

resultados son permanentes a pesar de otras consecuencias, como por ejemplo, si falla el

disco duro el sistema aún será capaz de recordar todas las transacciones que han sido

realizadas en el sistema.

Cumpliendo con estas 4 propiedades o requisitos un sistema gestor de bases de datos puede ser

considerado ACID Compliant.

1 En el contexto de bases de datos, una transacción es una única operación sobre los datos.

Page 3: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

REGLAS DE CODD: MODELO RELACIONAL En los años 80’s comenzaron a surgir numerosos Sistemas de Gestión de Bases de Datos

(en adelante SGBD) que se anunciaban como relacionales. Sin embargo estos sistemas carecían de

muchas características que se consideran importantes en un sistema relacional, perdiendo las

muchas ventajas del modelo relacional. Los sistemas relacionales eran simplemente sistemas que

utilizaban tablas para almacenar la información, no disponiendo de elementos como claves

primarias y foráneas que las definieran como tales.

En 1984 Edgar F. Codd, creador de del Modelo Relacional, publicó las 12 Reglas que un verdadero

Sistema Relacional de Bases de Datos debería cumplir. En la práctica algunas de estas reglas son

difíciles de implementar, así que un sistema podrá considerarse “más relacional” cuanto más siga

estas reglas.

o Regla 0:

Para que un sistema se denomine Sistema de Gestión de Bases de Datos Relacionales,

este sistema debe usar exclusivamente sus capacidades relacionales para gestionar la base

de datos.

o Regla 1 – Regla de la Información:

Toda la información en una base de datos relacional se representa explícitamente en el

nivel lógico mediante tablas y sólo mediante tablas.

• Por tanto los metadatos (diccionario, catálogo) se representan y se manipulan

exactamente igual que los datos de usuario, pudiéndose usar el mismo lenguaje

(por ejemplo, SQL.

• Un valor posible es el valor nulo, con sus dos interpretaciones:

o Valor desconocido (ej. dirección desconocida)

o Valor no aplicable (ej. empleado soltero no tiene esposa).

o Regla 2 – Regla del Acceso Garantizado:

Para todos y cada uno de los datos (valores atómicos) de una Base de Datos Relacional (en

adelante BDR) se garantiza que son accesibles a nivel lógico utilizando una combinación de

nombre de tabla, valor de clave primaria y nombre de columna.

• Cualquier dato almacenado en una BDR tiene que poder ser direccionado

unívocamente. Para ello hay que indicar en qué tabla está, cuál es la columna y

cuál es la fila, mediante la clave primaria.

• Por tanto se necesita el concepto de clave primaria, que no es soportado en

muchas implementaciones. En estos casos, para lograr un efecto similar se puede

hacer lo siguiente:

o Hacer que los atributos clave primaria no puedan ser nulos (NOT NULL).

o Crear un índice único sobre la clave primaria.

Page 4: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

o No eliminar nunca el índice.

o Regla - Tratamientos Sistemáticos de Valores Nulos:

Los valores nulos (que son distintos de la cadena vacía, blancos, 0,...) se soportan en los

SGBD totalmente relacionales para representar información desconocida o no aplicable de

manera sistemática, independientemente del tipo de datos.

• Se reconoce la necesidad de la existencia de valores nulos, para un tratamiento

sistemático de los mismos.

• Hay problemas para soportar los valores nulos en las operaciones relacionales,

especialmente en las operaciones lógicas.

o Lógica trivaluada. Es una posible solución. Existen tres (no dos) valores

de verdad: Verdadero, Falso y Desconocido (null). Se crean tablas de

verdad para las operaciones lógicas:

NULL AND NULL = NULL

TRUE AND NULL = NULL

FALSE AND NULL = FALSE

TRUE OR NULL = TRUE

Un inconveniente es que, del lado del usuario, el manejo de los lenguajes relacionales se

complica debido a que es más difícil de entender. Catálogo Dinámico en Línea basado en el

Modelo Relacional

o Regla 4 – Catálogo Dinámico en Línea Basado en el Modelo Relacional:

La descripción de la base de datos se representa a nivel lógico de la misma manera que los

datos normales, de modo que los usuarios autorizados pueden aplicar el mismo lenguaje

relacional a su consulta, igual que lo aplican a los datos normales.

• Es una consecuencia de la regla 1 que se destaca por su importancia. Los

metadatos se almacenan usando el modelo relacional, con todas las

consecuencias. Regla del sublenguaje de datos completo

o Regla 5 - Regla del Sub-leguaje de Datos Completo

Un sistema relacional debe soportar varios lenguajes y varios modos de uso de terminal

(ejemplo: rellenar formularios). Sin embargo, debe existir al menos un lenguaje cuyas

sentencias sean expresables, mediante una sintaxis bien definida, como cadenas de

caracteres y que sea completo, soportando:

Page 5: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

• Definición de datos

• Definición de vistas

• Manipulación de datos (interactiva y por programa)

• Restricciones de integridad

• Restricciones de transacciones (begin, commit, rollback)

Además de poder tener interfaces más amigables para hacer consultas, entre otras cosas,

siempre debe haber una manera de hacerlo todo de manera textual, que es tanto como

decir que pueda ser incorporada en un programa tradicional. Un lenguaje que cumple esto

en gran medida es SQL.

o Regla 6 – Regla de Actualización de Vistas:

Todas las vistas que son teóricamente actualizables se pueden actualizar también por el

sistema.

• El problema es determinar cuáles son las vistas teóricamente actualizables, ya que

no está muy claro.

• Cada sistema puede hacer unas suposiciones particulares sobre las vistas que son

actualizables.

o Regla 7 – Inserción, Actualización y Borrado de Alto Nivel:

La capacidad de manejar una relación base o derivada como un solo operando se aplica no

sólo a la recuperación de los datos (consultas), sino también a la inserción, actualización y

borrado de datos.

• El lenguaje de manejo de datos también debe ser de alto nivel (de conjuntos).

Algunas bases de datos inicialmente sólo podían modificar las tuplas de la base de

datos de una en una (un registro de cada vez).

o Regla 8 – Independencia Física de Datos:

Los programas de aplicación y actividades del terminal permanecen inalterados a nivel

lógico cualesquiera sean los cambios efectuados, tanto en la representación del

almacenamiento, como en los métodos de acceso.

• El modelo relacional es un modelo lógico de datos, y oculta las características de

su representación física.

o Regla 9 – Independencia Lógica de Datos:

Los programas de aplicación y actividades del terminal permanecen inalterados a nivel

lógico cuando quiera que se realicen cambios a las tablas base que preserven la

información.

• Cuando se modifica el esquema lógico preservando información (no valdría p.ej.

eliminar un atributo) no es necesario modificar nada en niveles superiores.

• Ejemplos de cambios que preservan la información:

Page 6: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

o Añadir un atributo a una tabla base.

o Sustituir dos tablas base por la unión de las mismas. Usando vistas de la

unión es posible recrear las tablas anteriores.

o Regla 10 – Independencia de Integridad:

Las restricciones de integridad específicas para una determinada base de datos relacional

deben poder ser definidos en el sub-lenguaje de datos relacional, y almacenables en el

catálogo, no en los programas de aplicación.

• El objetivo de las bases de datos no es sólo almacenar los datos, sino también sus

relaciones y evitar que estas restricciones se codifiquen en los programas. Por

tanto en una base de datos relacional se deben poder definir restricciones de

integridad.

• Cada vez se van ampliando más los tipos de restricciones de integridad que se

pueden utilizar en los Sistemas de Gestión de Bases de Datos Relacionales, aunque

hasta hace poco eran muy escasos.

• Como parte de las restricciones inherentes al modelo relacional (forman parte de

su definición) están:

o Integridad de Entidad: Toda tabla debe tener una clave primaria.

o Integridad de Dominio: Toda columna de una tabla contendrá valores

exclusivamente de un determinado dominio (conjunto de valores válidos)

o Integridad Referencial: Toda clave foránea no nula debe existir en la

relación donde es clave primaria

o Regla 11 – Independencia de Distribución:

Una BDR tiene independencia de distribución.

• Las mismas órdenes y programas se ejecutan igual en una BD centralizada que en

una distribuida.

• Las BDR son fácilmente distribuibles:

o Se parten las tablas en fragmentos que se distribuyen.

o Cuando se necesitan las tablas completas se recombinan usando

operaciones relacionales con los fragmentos.

o Sin embargo se complica más la gestión interna de la integridad, etc.

• Esta regla es responsable de tres tipos de transparencia de distribución:

o Transparencia de localización. El usuario tiene la impresión de que trabaja

con una BD local. (aspecto de la regla de independencia física).

o Transparencia de fragmentación. El usuario no se da cuenta de que la

relación con que trabaja está fragmentada. (aspecto de la regla de

independencia lógica de datos).

Page 7: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

o Transparencia de replicación. El usuario no se da cuenta de que pueden

existir copias (réplicas) de una misma relación en diferentes lugares.

o Regla 12 – Regla de la No Sub-Versión:

Si un sistema relacional tiene un lenguaje de bajo nivel (un registro de cada vez), ese bajo

nivel no puede ser usado para saltarse (subvertir) las reglas de integridad y los limitantes

expresados en los lenguajes relacionales de más alto nivel (una relación -conjunto de

registros- de cada vez)

• Algunos problemas no se pueden solucionar directamente con el lenguaje de alto

nivel.

• Normalmente se usa SQL inmerso en un lenguaje anfitrión para solucionar estos

problemas. Se utiliza el concepto de cursor para tratar individualmente las tuplas

de una relación. En cualquier caso no debe ser posible saltarse los limitantes de

integridad impuestos al tratar las tuplas a ese nivel.

Integridad de Datos La integridad de datos es el conjunto de reglas y restricciones, que garantizan que los

datos sean precisos y coherentes.

Existen dos pasos importantes para el diseño de tablas en una base de datos:

1. La identificación de los valores válidos de una columna.

2. La determinación de como forzar la integridad de los datos en la columna.

A continuación, se describen las categorías en las que se divide la integridad de datos:

• Integridad de entidad:

La integridad de entidad pretende que todas las filas de una tabla cuenten con un único

identificador, el cual se el conoce como clave principal. Está regla de integridad, resuelve

los problemas de redundancia de datos.

Carnet Nombre E-mail

200915252 Oscar [email protected]

200915252 Oscar [email protected]

123 xxx [email protected]

124 yyy [email protected]

123 xxx [email protected]

• Integridad de dominio:

La integridad de dominio pretende validar el conjunto de valores posibles permitidos en

una columna específica dentro de una tabla. Está se define mediante los tipos de datos

que se le asignan a los campos, también se define mediante los siguientes constraints:

Page 8: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

o NULL

o NOT NULL

o CHECK

o FOREIGN KEY

o DEFAULT

Codigo Nombre Sueldo

123 Oscar 7000.5

321 xxx 5000

Donde:

o Código – Se define con el tipo de dato ENTERO y el constraint NOT NULL.

o Nombre – Se define con el tipo de dato VARCHAR y el constraint NOT NULL.

o Sueldo – Se define con el tipo de dato DECIMAL y el constraint CHECK > 0, NOT

NULL.

• Integridad referencial:

La integridad referencial es aquella que se da específicamente con las llaves extranjeras; La

llave foránea (o extranjera) es como tal, si y solo si, dicha llave en la tabla hija existe como

llave primaria en la tabla padre y si no existe está es null.

La integridad referencial se da entre dos tablas o más; o en la misma tabla como una

referencia circular.

Ejemplo:

• Integridad definida por el usuario:

Este tipo de integridad, son las definidas por el usuario; permite definir reglas que no se

encuentran en ninguna de las tres categorías anteriores.

Page 9: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

Ejemplo: En un banco, cuando el cuentahabiente no tenga segundo nombre, la base de

datos le coloque por default N/A.

Mejores prácticas en el análisis, diseño e implementación de bases

de datos.

Análisis y diseño

1. Estandarización de términos

• Problema que resuelve: Confusión y pérdida de semántica de los objetos a crear.

• Beneficio: Mantenimiento de sistemas mas rápido.

2. Análisis de requerimientos y utilización de índices

• Problema que resuelve: Acceso secuencial en lugar de acceso por índices.

• Beneficio: Mejora el tiempo de respuesta al obtener información.

3. Normalización y rendimiento

• Problema que resuelve: Incongruencia entre el esquema de la base de datos y el

modelo de datos.

• Beneficio: Mejor tiempo de respuesta y congruencia del modelo físico.

4. Uso de diccionarios de datos

• Problema que resuelve: problemas de integridad e inconsistencia.

• Beneficio: Optimización y estandarización del dominio de datos al utilizarse en los

atributos.

5. Manejo de textos y BLOB

• Problema que resuelve: tiempo de acceso inaceptable y limitada o nula

manipulación de datos.

• Beneficio: Reducción de tiempo de respuesta.

6. Manejo de valores nulos

• Problema que resuelve: información incompleta, malinterpretación de la

información ausente, tiempo de acceso al convertir un campo inexistente a nulo al

desplegarse.

• Beneficio: Captura mas completa de la información.

Implementación

1. Documentación de objetos SQL

• Problema que resuelve: dada la ilegibilidad de programas, se presenta lentitud y

confusión en el mantenimiento de programas.

• Beneficio: tiempo de mantenimiento reducido.

2. Detalle de atributos en la inserción, consulta o actualización

• Problema que resuelve: contención en disco.

• Beneficio: reducción de acceso a disco, mejor tiempo de respuesta.

3. Uso de cursores como simulación de programación estructurada

Page 10: Bases de Datos (ACID, Reglas de Codd e Integridad de datos)

• Problema que resuelve: el optimizador realiza búsqueda secuencial a nivel

exponencial, provocando problemas de concurrencia y tiempos de respuesta muy

lentos.

• Beneficio: se aprovecha el manejo de conjuntos en el manejador y por tanto el

optimizador puede proporcionar vías de acceso con menor costo.

4. Uso de constraints para chequeo de integridad referencial

• Problema que resuelve: la programación por triggers envuelve procedimiento

procedural, por tanto es más lenta su respuesta.

• Beneficio: mejora de rendimiento al usar teoría de conjuntos.

5. Manejo de transacciones

• Problema que resuelve: bloqueo de recursos por tiempo prolongado, afectando

los demás procesos que utilizan esos recursos

• Beneficio: mayor concurrencia

6. Centralización de tareas sencillas en el front-end

• Problema que resuelve: poca concurrencia.

• Beneficio: liberación de carga innecesaria al manejador de bases de datos.