jueves, 17 de noviembre de 2011

Transacciones Sintesis

 Una transacción es una unidad de la ejecución de un programa que accede y posiblemente actualiza varios elementos de datos. La transacción consiste en todas las operaciones que se ejecutan entre inicio transacción y el fin transacción. Para asegurar la integridad de la información se tienen que cumplir con cuatro factores:

Atomicidad
Consistencia
Aislamiento
Durabilidad

Atomicidad. O todas las operaciones de la transacción se realizan adecuadamente en la base de
datos o ninguna de ellas.

Consistencia. La ejecución aislada de la transacción (es decir, sin otra transacción que se ejecute
concurrentemente) conserva la consistencia de la base de datos.

Aislamiento. Aunque se ejecuten varias transacciones concurrentemente, el sistema garantiza que
para cada par de transacciones Ti y Tj, se cumple que para los efectos de Ti, o bien Tj ha terminado
su ejecución antes de que comience Ti , o bien que Tj ha comenzado su ejecución después de que Ti
termine. De este modo, cada transacción ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema.


Durabilidad. Tras la finalización con éxito de una transacción, los cambios realizados en la base de
datos permanecen, incluso si hay fallos en el sistema.

Cuando no hay fallas, las transacciones se ejecutan de manera exitosa. Si una transacción no se ejecuta correctamente se le llama transacción abortada. Las transacciones que se ejecutan con éxito se les dice transacciones comprometidas. Las transacciones compensadoras son usadas para deshacer cambios realizados por otras transacciones.

Es necesario precisar qué se entiende por terminación con éxito de una transacción. Se establece por tanto un modelo simple abstracto de transacción. Una transacción debe estar en uno de los estados siguientes:
• Activa, el estado inicial; la transacción permanece en este estado durante su ejecución.
• Parcialmente comprometida, después de ejecutarse la última instrucción.
• Fallida, tras descubrir que no puede continuar la ejecución normal.
• Abortada, después de haber retrocedido la transacción y restablecido la base de datos a su estado
anterior al comienzo de la transacción.
• Comprometida, tras completarse con éxito.

jueves, 13 de octubre de 2011

Resumen Normalización


Normalización
La normalización son una serie de reglas que se aplican al modelo relacional para evitar problemas como redundancia, ambigüedades, pérdida de restricciones de integridad, anomalías de operaciones de modificación de datos.
n  Redundancia. Se llama así a los datos que se repiten continua e innecesariamente por las tablas de las bases de datos.
n   Ambigüedades. Datos que no clarifican suficientemente el registro al que representan.
n   Pérdida de restricciones de integridad.
n   Anomalías en operaciones de modificación de datos. El hecho de que al insertar un solo elemento haya que repetir tuplas en una tabla para variar unos pocos datos. O que eliminar un elemento suponga eliminar varias tuplas.

Formas normales
Las formas normales se corresponden a una teoría de normalización. Codd definió en 1970 la primera forma normal, desde ese momento aparecieron la segunda, tercera, la Boyce-Codd, la cuarta y la quinta forma normal.
Una tabla puede encontrarse en primera forma normal y no en segunda forma normal, pero no al contrario. Es decir los números altos de formas normales son más restrictivos (la quinta forma normal cumple todas las anteriores).
Primera forma normal
Un esquema cumple con la primera forma normal si cualquier atributo de la tabla pueda tomar más de un valor.

Como puede observarse en la tabla anterior, el atributo Departamento guarda dos valores en la segunda tupla, por esta razón no se encuentra la tabla en la primera forma normal. La siguiente tabla si cumple con la primera forma normal.
Dependencia funcional
Se dice que un conjunto de atributos (Y) depende funcionalmente de otro conjunto de atributos (X) si para cada valor de X hay un único valor posible para Y. Simbólicamente se denota por X→Y.
Por ejemplo el nombre de una persona depende funcionalmente del DNI, para un DNI concreto sólo hay un nombre posible. En la tabla ejemplo anterior, el departamento no tiene dependencia funcional, ya que para un mismo DNI puede haber más de un departamento posible.
Al conjunto X del que depende funcionalmente el conjunto Y se le llama determinante. Al conjunto Y se le llama implicado.
Dependencia funcional completa
Un conjunto de atributos (Y) tiene una dependencia funcional completa sobre otro conjunto de atributos (X) si Y tiene dependencia funcional de X y además no se puede obtener de X un conjunto de atributos más pequeño que consiga una dependencia funcional de Y.
Por ejemplo en una tabla de clientes, el conjunto de atributos formado por el nombre y el DNI producen una dependencia funcional sobre el atributo apellidos. Pero no es plena ya que el DNI sólo también produce una dependencia funcional sobre apellidos. El DNI sí produce una dependencia funcional completa sobre el campo apellidos.
Una dependencia funcional completa se denota como X=>Y
Dependencia funcional elemental
Se produce cuando X e Y forman una dependencia funcional completa y además Y es un único atributo.
Es más compleja de explicar, pero tiene también utilidad.



Dependencia funcional transitiva
Se produce cuando tenemos tres conjuntos de atributos X, Y y Z. Y depende funcionalmente de X (X→Y), Z depende funcionalmente de Y (Y→Z). Además X no depende funcionalmente de Y. Entonces ocurre que X produce una dependencia funcional transitiva sobre Z.
Esto se denota como: (X-→Z)
Por ejemplo si X es el atributo Número de Clase de un instituto, e Y es el atributo Código Tutor. Entonces X→Y (el tutor depende funcionalmente del número de clase). Si Z representa el Código del departamento, entonces Y→Z (el código del departamento depende funcionalmente del código tutor, cada tutor sólo puede estar en un departamento). Como no ocurre que Y→X (el código de la clase no depende funcionalmente del código tutor, un código tutor se puede corresponder con varios códigos de clase).
Entonces X-→Z (el código del departamento depende transitivamente del código de la clase).
Segunda forma normal
Ocurre si una tabla está en primera forma normal y además cada atributo que no sea clave, depende de forma funcional completa respecto de cualquiera de las claves. Toda la clave principal debe hacer dependientes al resto de atributos, si hay atributos que depende sólo de parte de la clave, entonces esa parte de la clave y esos atributos formarán otra tabla.
La tabla anterior no se encuentra en segunda forma normal, porque nombre y apellido1 no tienen dependencia funcional completa, la solución sería:

Tercera forma normal
Ocurre cuando una tabla está en 2FN y además ningún atributo que no sea clave depende transitivamente de las claves de la tabla. Es decir no ocurre cuando algún atributo depende funcionalmente de atributos que no son clave.
La tabla anterior no se encuentra en tercera forma normal porque el atributo provincia depende funcionalmente del atributo cod provincia. La solución sería la siguiente descomposición:

Forma normal de boyce codd
Ocurre si una tabla está en tercera forma normal y además todo determinante es una clave candidata.
Esa tabla está en tercera forma normal (no hay dependencias transitivas), pero no en forma de Boyce - Codd, ya que (DNI, Asignatura) →Tutor y Tutor→Asignatura. En este caso la redundancia ocurre por mala selección de clave. La redundancia de la asignatura es completamente evitable. La solución sería:
Dependencia multivaluada
Para el resto de formas normales (las diseñadas por Fagin, mucho más complejas), es importante definir este tipo de dependencia, que es distinta de las funcionales. Si las funcionales eran la base de la segunda y tercera forma normal (y de la de Boyce-Codd), éstas son la base de la cuarta forma normal.
Una dependencia multivaluada de una tabla con atributos X, Y, Z de X sobre Z (es decir X->>Z) ocurre cuando los posibles valores de Y sobre cualquier par de valores X y Z dependen sólo del valor de X y son independientes de Z.
Cuarta forma normal
Ocurre esta forma normal cuando una tabla está en forma normal de Boyce Codd y toda dependencia multivaluada es una dependencia funcional.
Un teorema de Fagin indica cuando hay tres pares de conjuntos de atributos X, Y y Z si ocurre X->>Y|Z (Y y Z tienen dependencia multivaluada sobre X), entonces las tablas X,Y y X,Z reproducen sin perder información lo que poseía la tabla original. Este teorema marca la forma de dividir las tablas hacia una 4FN
Quinta forma normal
Es la más compleja y polémica de todas. Polémica pues no está claro en muchas ocasiones que sea una solución mejor que el no llegar a este nivel de normalización. Fue definida también por Fagin.
Es raro encontrarse este tipo de problemas cuando la normalización llega a 4FN. Se deben a restricciones muy concretas.



Ejemplo:
Indican códigos de material suministrado por un proveedor y utilizado en un determinado proyecto.
Si ocurre una restricción especial como por ejemplo: Cuando un proveedor nos ha suministrado alguna vez un determinado material, si ese material aparece en otro proyecto, haremos que el proveedor nos suministre también ese material para ese proyecto.

Eso ocurre en los datos como el proveedor número 1 nos suministró el material número 1 para el proyecto 2 y en el proyecto 1 utilizamos el material 1, aparecerá la tupla proveedor 1, material 1 y proyecto 1.
La dependencia que produce esta restricción es lejana y se la llama de reunión. Para esa restricción esta división en tablas sería válida: