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, 17 de noviembre de 2011
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:
Suscribirse a:
Entradas (Atom)