Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
I
II
22
III
SQL
38
IV
Procesamiento de Consultas
43
Control de Concurrencia
52
VI
Tcnicas de Recuperacin
61
Parte I
Dato
tupla <nombre de objeto, propiedad de objeto, valor de la propiedad del objeto, instante>.
Dato elemental
Modelo de datos
herramienta intelectual que provee una interpretacin del mundo real. Es un dispositivo de abs-
traccin.
Ejemplos de modelos de representacin simblica de la informacin: lenguaje natural, frmulas matemticas, mapas,
partituras.
La pieza ms elemental de informacin es el
dato.
2 BDs y SGBDs
Sistema de Base de Datos
1. Hardware
2. Software
3. Datos
4. Personas
a)
Administradores: denen el
Usuarios
Tipo de usuario
Ingenuos
Descripcin
Consultan la base de datos
Sosticados
Programador de
aplicaciones
la base de datos
Application Development )
Especializados
Sistema formado por datos y los programas que acceden a los datos. Su objetivo es almacenar y permitir
consultas en formas convenientes y ecientes.
Est formado por tres capas, las
abstracciones:
1. Nivel exterior : vistas que ven los usuarios. Solo ven una parte de la base de datos, la que les interesa
2. Nivel lgico: cmo se agrupan lgicamente los datos, las entidades y sus relaciones. Ejemplo: tablas,
grafos.
3. Nivel fsico: como se organizan fsicamente los datos. Ejemplos: bitmaps, rboles.
(a) Los datos se almacenan en una base de datos, que es administrada por un (b) Estructura general de un sistema de base de datos
sistema de gestin de bases de datos
Figura 2: SGBD
descripcin de la base de datos. La base de datos fsica vara con el tiempo (porque
se producen altas, bajas y modicaciones), pero el esquema es jo (o se cambia en raras ocasiones).
Modelo conceptual: representacin de alto nivel, que concentra los requerimientos del cliente. Utiliza el
modelo Entidad-Relacin.
Modelo lgico: representacin de bajo nivel. Utiliza el modelo relacional.
SQL.
gua para organizar los datos de una base de datos. Formado por tres componentes:
potencia semntica
Transaccin
leer ( cuenta_a )
cuenta_a <- cuenta_a + 100
escribir ( cuenta_a )
leer ( cuenta_b )
cuenta_b <- cuenta_b - 100
escribir ( cuenta_b )
2.4.2 Restricciones
Tipos de restricciones sobre una base de datos:
restringen los posibles valores de los atributos. Ejemplo: la edad de una persona no puede ser
negativa.
De actualizacin:
restringen las posibles operaciones sobre los atributos. Ejemplo: no se puede disminuir la
De entidad: Ejemplo: no puede haber dos objetos iguales en la misma base de datos.
De integridad referencial: Ejemplo: no se puede referenciar a un objeto que no existe en la base de datos.
3.1 Entidades
El modelo entidad-interrelacin se basa en la idea de que el mundo real est compuesto por objetos (las entidades )
y las interrelaciones que hay entre las entidades.
Entidad
algo que existe, concreto o abstracto. Ejemplo: una persona Juan, la cuenta bancaria n 4500011.
des cliente abarca todas las personas que tienen cuenta en un banco.
Un conjunto de entidades
pertenece al conjunto.
E = {e/p(e)}
Los conjuntos de entidades no necesitan ser disjuntos. Ejemplo: animales y mamferos no son disjuntos.
Un tipo de entidad queda denido por:
1.
2.
otros tipos de
entidades
3.
Atributos:
caractersticas de todas las entidades de ese tipo. Ejemplo: para el conjunto de entidades
cliente, posibles atributos son nombre, DNI, calle, ciudad, etc. Cada atributo tiene un conjunto de
valores
producto cartesiano de dominios. Ejemplo: una entidad empleado est descrita por el conjunto {(nombre,
Juan), (apellido, Cancela), (DNI, 5.678.901)}.
Un atributo puede tener el valor
a) No aplica
b) Faltante
c ) Desconocido
Tipos de atributos:
a) Simple vs compuesto. Ejemplo: nombre puede descomponerse en primer nombre, segundo nombre, y
apellido.
b) Un valor vs Multivaluado: se repite varias veces en la entidad. Ejemplo: nmero de telfono.
c ) Derivable : su valor puede calcularse a partir de otros atributos. Debe evitarse. Ejemplo: si tengo el
atributo fecha de nacimiento, edad es un atributo derivable.
4.
Identicador: atributo o conjunto de atributos que permiten distinguir a cada entidad dentro del conjunto
de entidades del mismo tipo.
3.2 Interrelaciones
Interrelacin
E1 , E2 , . . . , En
R es un subconjunto del producto cartesiano
{(e1 , e2 , . . . , en ) /e1 E1 , e2 E2 , . . . , en En }
donde la tupla
(e1 , e2 , . . . , en )
es una interrelacin.
Un tipo de interrelacin puede tener atributos descriptivos. Ejemplo: la interrelacin tenencia puede tener un
atributo fecha ltimo movimiento.
Caractersticas:
funcin que desempea una entidad en una interrelacin. Normalmente no se especica porque est implcito.
Ejemplos: un cliente tiene una cuenta, un empleado es jefe de
empleados.
asociacin entre dos o ms entidades. Debe ser unvocamente identicable sin usar
de interrelaciones.
contexto de un banco, una persona puede ser especializada en un empleado o un cliente, o ambas, o ninguna
Generalizacin
= Generalizaciones superpuestas
No = Generalizaciones disjuntas
a) S
b)
= Generalizacin total
= Generalizacin parcial
Agregacin
3.3 Restricciones
3.3.1 Restricciones de participacin
Se dice que la participacin de un conjunto de entidades
entidad en
parcial.
cantidad mnima y mxima de entidades a las cuales puede asociarse una entidad
(1 : 1):
Una entidad en
B,
Figura 7:
B,
y una entidad en
A.
1:1
(1 : M ): Una entidad en A est asociada como mximo con cualquier cantidad de entidades
B est asociada como mximo a una entidad en A.
existe la restriccin muchos a uno (M : 1).
2. Uno a muchos
en
B,
y una entidad en
Tambin
1:M
Figura 8:
3. Muchos a muchos
entidades en
B,
(M : M ):
Una entidad en
y una entidad en
A.
Figura 9:
M :M
10
A, B
C,
N:N:N
N:N:1
Figura 11: Las fbricas le compran insumos a proveedores. Una fbrica no puede comprar el mismo insumo a ms de
un proveedor.
N:1:1
Figura 12: Las fbricas le compran insumos a proveedores. Una fbrica no puede comprar el mismo insumo a ms de
un proveedor. Un proveedor no puede venderle el mismo insumo a ms de una fabrica.
1:1:1
Figura 13: Las fbricas le compran insumos a proveedores. Una fbrica no puede comprar el mismo insumo a ms
de un proveedor. Un proveedor no puede venderle el mismo insumo a ms de una fabrica. Una fbrica no puede
comprarle ms de un insumo a cada proveedor.
Teorema:
en las relaciones ternarias, las restricciones de cardinalidad no imponen restricciones en las relaciones
insumos.
11
D,
es borrado, tambin
tiene
dependencia
es borrado. La entidad
es la
conjunto de uno o ms atributos que, tomados en conjunto, permiten identicar unvocamente una
Clave candidata
Sea
superclaves minimales; aquellas para las cuales ningn subconjunto propio es una superclave.
clave candidata de
A1 , . . . , A n .
El conjunto de atributos
es una
Ai ,
i [1, k].
Clave primaria
K = (A1 , . . . , Ak )
s y slo s satisface:
aquella clave candidata que es elegida por el diseador del modelo de datos para identicar entidades
dentro del conjunto de entidades. Esta clave no debera cambiar en el tiempo. Ejemplo: la direccin de un cliente
no es una buena clave primaria, porque se puede mudar
Clave fornea
atributo o conjunto de atributos que es clave primaria en otra relacin. Ejemplo: en una relacin
autos, puede haber una clave fornea DNI que es la clave primaria en otra relacin personas, y que indica
el dueo de ese auto
Entidad dbil
Entidad fuerte
El concepto de entidades fuertes y dbiles est relacionado con el concepto de dependencia de existencia. Una
entidad dbil es, por denicin, una entidad subordinada a la entidad dominante de la cual depende su identidad.
Toda dependencia de identidad es una dependencia de existencia, pero una dependencia de existencia no implica
necesariamente una dependencia de identidad.
Discriminador
atributo o conjunto de atributos de una entidad dbil que lo distingue de otras entidades dbiles que
12
Figura 15: Simbologa en los diagramas E-R para entidades fuertes (cuenta) y dbiles (transaccin). La clave primaria
de la entidad fuerte se identica con el atributo subrayado (nro. cuenta). La dependencia a la entidad fuerte se
identica con arcos dobles. El discriminador de la entidad dbil se identica con el atributo subrayado a medias (nro.
transaccin). El identicador de la entidad dbil es la suma de su discriminador y de la clave primaria de la entidad
fuerte (nro. cuenta + nro. transaccin)
Teorema
naria
interrelaciones binarias.
4. Localizacin de atributos de interrelaciones
a) Relaciones
1 : 1 = en
b) Relaciones
1 : N = en
la segunda entidad
c ) Relaciones
N : N = en
la interrelacin
13
(con
n > 2)
con un nmero de
E
el
con
columnas. Cada la de la tabla es una entidad. El conjunto de todas las posibles las de la tabla es
producto cartesiano
D1 . . . Dn
Representacin de conjuntos de entidades dbiles
Sea
depende
con
a1 , . . . , am .
Sea
E1 , . . . , E n
con atributos
r1 , . . . , rm .
Sean
a1 , . . . , an
el conjunto de atributos formado por la unin de las claves primarias de cada entidad participante. Se representa
a
a1 , . . . , an , r1 , . . . , rm .
no es necesaria, es
redundante.
Representacin de interrelaciones
Si la participacin de
unir las tablas de
1:N
A en R
R
entre entidades
R),
se pueden
x.
x.
que corresponde a
de las columnas son la clave primaria del conjunto de entidades o interrelacin del cual
y el resto
es un atributo.
Representacin de generalizacin
Hay dos mtodos:
1. Una tabla para la superclase + una tabla para cada subclase, que incluya una columna con la clave
primaria de la superclase
2. Si la generalizacin es disjunta y completa, no se crea una tabla para la superclase. Se crea una tabla para
cada subclase, que incluya todos los atributos de la superclase.
Representacin de agregacin
La tabla de la interrelacin
cada clave primaria de
R
A.
entre la agregacin
y el conjunto de entidades
4 Modelo Relacional
4.1 Estructura del modelo relacional
El modelo relacional es un ejemplo de modelo basado en registros. Usa un grupo de tablas para representar los datos
y las relaciones entre los datos. Cada tabla tiene mltiples columnas. Cada tabla contiene registros de un tipo en
particular. Cada registro tiene atributos (las columnas).
14
Dominio
nulo.
o atributo inexistente. Se puede prohibir, para un atributo, que este tenga el valor nulo, ya que puede causar
problemas al realizar consultas.
Esquema de relacin
Relacin
instancia de un esquema. Subconjunto del producto cartesiano de una lista de dominios. Sea el esquema
de relacin
Tabla
R,
denotamos a la instancia
mediante
r(R).
representacin de una relacin. Se pueden relacionar entre s al compartir atributos. Una tabla de
es un subconjunto de
Atributo
D1 D2 Dn .
atributos
Esquema de BD relacional
Tupla
en
de una relacin
en alguna tupla de
s,
s.
formal
procedural
15
a)
a1 , . . . , an
que pertenecen a
r,
{a1 , . . . , an }.
Seleccin (p (r)).
r0
p.
r,
1) Atmica: expresin lgica simple del tipo que utiliza un operador de comparacin
Atributo
Atributo
tal que
atributo
constante
R,
A1 , A2 , . . . , An .
2. Operaciones binarias:
a)
Unin (r
Sean
contiene
s).
s instancias homogneas 1 de las relaciones R
n tuplas. La unin se dene como:
[
respectivamente.
contiene
tuplas y
s = {x : x r x s}
Diferencia (r s).
Sean
r s = {x : x r x 6 s}
c)
s.
tiene
grados de
n tuplas
r y s.
tiene
tuplas,
rs
tendr
nm
tuplas. El grado de
rs
es la suma de los
Interseccin (r
s)
r1 y r2
r = {x : x r1 x r2 }
r
2.
s r (r s)
Junta (join ) (r ./ s)
La junta de dos relaciones
r s,
segn un predicado
al producto cartesiano
r ./p s p (r s)
a) Equi-join : dadas las relaciones
s,
r.Ai = s.Aj
1 Las relaciones homogneas tienen: (a) la misma cantidad de atributos, y (b) para todo i, el dominio del atributo i de r es el mismo
que el dominio del atributo i de s
16
c ) Natural join (r
r,
es el join de
1.Ai 2.Ai
donde
r.
s).
s,
y adems que
S 6= .
r s RS (r.c1 =s.c1 r.c2 =s.c2 r.ch =s.ch (r s))
(r s) t = r (s t).
3.
Divisin (r/s).
r R con n atributos y s S con m atributos, tal que m < n y S R. La divisin son
t tales que, multiplicadas por todas las las u de s, me dan las que estn en r. El esquema
es R S .
17
4.
Asignacin (r s)
r
s.
Fi
E.
Ai
Gi
Fi
Fi
Gi i [1, n]
Gi i [1, n]
(g1 , . . . , gn , a1 , . . . , am ) donde
Ai del grupo.
para cada i,
ai
es el resultado de
distinct
Ejemplo: con la misma relacin anterior, la siguiente expresin devuelve una relacin con un solo atributo (sin
nombre) y una sola la, que contiene la cantidad de sucursales:
grupos
grupo.
Ejemplo: con la misma relacin anterior, la siguiente expresin devuelve una relacin con dos atributos (sin
nombres), que contiene la suma de salarios de cada sucursal:
Join externo (outer join): es una extensin de la operacin de join que lidia con informacin faltante (null s).
a) Left outer join (r1
ninguna tupla de
./ r2 ): hace
r2 , les agrega
2 Un multiconjunto
r1 ,
r2 ):
r2 ,
r1 ,
18
r1
r2
./ r2 ):
r r E,
donde
es una relacin y
4.5.2 Insert
En lgebra relacional se expresa como
r r E,
donde
es una relacin y
4.5.3 Update
En lgebra relacional se expresa como
de
r,
r F1 ,...,Fn (r),
donde
r,
Fi
relacin que no es parte del modelo lgico de la base de datos, pero que es visible para el usuario como una
relacin virtual.
cumpla lo
siguiente:
Deben usar
anidada
SELECT.
Vista materializada
vista que se evala y se almacena fsicamente. Los cambios a estas vistas se realizan de forma
19
5 Clculo relacional
COMPLETAR
6 Lenguajes de consulta
Query
Procedurales:
el usuario indica una serie de operaciones a ejecutar sobre una base de datos para producir el
No procedurales:
7 Integridad y seguridad
En SQL, tenemos las siguientes restricciones:
NOT NULL:
UNIQUE:
asegura que para todas las tuplas, el valor del atributo es nico
PRIMARY KEY:
asegura que una o varias columnas tengan una identidad nica, no nula
FOREIGN KEY:
CHECK:
DEFAULT:
20
Medico:
Hospital,
al eliminar una tupla referenciada, las tuplas referenciantes son eliminadas. Al modicar la clave en
references,
relaciones nuevas.
Con la opcin
grafo de autorizacin,
REVOKE.
privilegios que el usuario le brind a otros. Para evitar este efecto cascada, se usa la opcin
RESTRICT.
8 Triggers
Trigger
comando que el sistema ejecuta automticamente si un evento satisface cierta condicin. Son un conjunto
de acciones; por ejemplo, enviar un e-mail, ejecutar el rollback de una transaccin, o crear una copia de la base
de datos.
21
Parte II
De actualizacin: podra darse el caso de que actualizamos una tupla y no actualizamos otra tupla con el
mismo dato
De insercin: no es posible insertar ciertos datos sin insertar otros (posiblemente no relacionados)
De eliminacin: podra darse el caso de que eliminamos una tupla y, sin querer, borramos un dato importante
R, S, R1 , . . . , Rn , S1 , . . . , Sn
Instancias de esquemas:
r, s, r1 , . . . rn , s1 , . . . , sn
Conjuntos de atributos:
, ,
Atributos:
Tuplas:
A, B, C
t1 , t2
sea el esquema
t1 , t2
Un conjunto
se cumple si
tal que
es superclave de
si
es clave candidata de
K R.
R
si
J R
y adems
6 J/ R.
Una dependencia funcional, a diferencia de una diferencia multivaluada o de junta, prohbe que ciertas tuplas
existan.
sea el esquema
F,
F+
de un conjunto
F.
1. Regla de reexividad
Si
es un conjunto de atributos y
entonces
( ) F +
2. Regla de augmentacin
Si
( ) F +
3. Regla de transitividad
Si
Propiedades deducidas:
22
( ) F +
1. Regla de unin
Si se cumplen
2. Regla de descomposicin
Si se cumple
3. Regla de pseudotransitividad
Si se cumplen
Teorema: R
XY
X(R XY ),
es decir, si
X Y
s y slo s
sea
R. F +
es el conjunto de depen-
F.
F + = { /F }
Algoritmo 1
Computar
Entrada: relacin
Salida:
1.
R,
F+
F+
F+ = F
F+
no vare:
en
F +:
f1 , f2
Si
f1 , f2
F+
en
F +:
F+
F+
Para un esquema
con
atributos, hay
2n+1
Algoritmo 2
Computar
Entrada: relacin
Salida:
1.
R,
+
F
a+ = a
a+
no vare:
B Y F:
Ba :
a+ = a+ Y
Si
3. Devolver
a+
a+ :
23
F,
atributo
1. Para determinar si
es una superclave de
R:
Algoritmo 3
F+
R,
+ .
F+
R
X Y F,
Vni =
3.
Voi =
4.
K = {}
CC =
b) Agregar a
c)
Entrada: relacin
a)
+ = R .
CC
un atributo de
Y)
K:
Vni
R
Voi
que no est en
ni
Vni
K = K CC
6. Devolver
atributo de una dependencia funcional que se puede quitar de la misma sin cambiar la clausura
A es extrneo en si,
( A)+
F ). Formalmente:
El atributo
(B
A , y
F implica
lgicamente a
y la dependencia funcional
cuando lo sacamos de
B es extrneo en
( B)) Formalmente:
B , y
El conjunto (F { }) { ( B)}
Cubrimiento minimal
F
Fmin
en
F.
(F { B}) {( A) }
El atributo
(
implica lgicamente a
El cubrimiento minimal
tales que
Fmin
24
en
Fmin
tales que
1 = 2 .
Algoritmo 4
Fmin
1. Usar el axioma de la descomposicin para dejar un solo atributo en el lado derecho de cada dependencia
funcional.
2. Eliminar los atributos extrneos de los lados izquierdos.
Sea
Y B
implica a
pero con
3. Eliminar las dependencias funcionales redundantes (es decir, que se deducen de los axiomas de Armstrong).
Fmin = {A B, A D, B C, B D, AC E}
2. Eliminar todos los atributos redundantes del lado izquierdo.
a) Hay que analizar solamente la dependencia que tiene lado izquierdo compuesto:
AC E .
+
+
b) C es redundante en AC E ? Hay que vericar si E est en AF . Como AF = ABCDE , entonces
es redundante en AC E y podemos reemplazar esta dependencia funcional por A E .
Fmin = {A B, A D, B C, B D, A E}
3. Eliminar las dependencias redundantes.
Hay que revisar una por una todas las dependencias de
elimina de
A
Fmin
Fmin .
es redundante en
Fc ?
Fmin .
+
est en A
Fc {AD}
Fmin {A D} = {A B, B C, B D, A E}
A+
Fmin {AD} = ABCDE
Como
D Fmin {A D}, A D
es redundante
Fmin = {A B, B C, B D, A E}
Puede comprobarse que el resto de las dependencias funcionales no es redundante.
R est en 1FN si los dominios de sus atributos son atmicos, y si no hay atributos similares
repetidos.
Autor 1
Autor 2
Autor 3
Avi Silberschatz
Henry Korth
S. Sudarshan
Applied Cryptography
Bruce Schneier
NULL
NULL
Ttulo Libro
Applied Cryptography
ID libro
Autor
Avi Silberschatz
Henry Korth
S. Sudarshan
Bruce Schneier
25
R.
El conjunto de esquemas
{R1 , R2 , . . . , Rn }
es una
si
R = R1 R2 Rn
Sea la relacin
de descomponer
r r1 ./ r2 ./ . . . ./ rn
Es decir,
es un subconjunto de la junta de la descomposicin (la junta podra tener tuplas que no estn en
r).
2.
Preservacin de dependencias
verica que
F 0+ = F +
F 0 = F1 F2 Fn
son
Algoritmo 5
R,
Entrada: relacin
relacin
Ri ,
Fi
1.
Fi = {}
Algoritmo 6
Ri :
XF+
Fi = Fi {X A},
3. Devolver
tal que
A XF+
A Ri
Fi
A B,
F
Ri (Fi )
F,
descomposicin
{R1 , . . . , Rn }
AB
Z=A
B Z:
incluya a
B:
h
i
+
Ri : Z = Z (Z Ri ) Ri
devolver verdadero
R.
R, y sea F
R. Sean R1
R2
una descompo-
Esta descomposicin es sin prdida de informacin (SPI) si al menos una de las siguientes dependencias
funcionales est en
F +:
R1 R2 R1 R2
26
R1 R2 R2 R1
R(A, B, C, D, E, F )
F = {A BD, B CD, AC E}?
Ejemplo: La descomposicin de
en
R1 = (A, D, E, F )
R2 = (B, C, D)
es SPI respecto de
R1 R2 = D
R1 R2 = AEF
R2 R1 = BC
Como
DF+ = {D},
R1 R2 R1 R2
ni
R1 R2 R2 R1 .
Por lo tanto,
El algoritmo
en
R1 , . . . , Rk (k > 2)
es SPI.
Es decir, si la proyeccin de un esquema restringido por dependencias en una descomposicin, puede recuperarse
haciendo el join de las proyecciones.
Algoritmo 7
R, conjunto de dependencias
{R1 , . . . , Rn } descompone SPI.
T (0)
Ri
funcionales
en las las (i
F,
descomposicin
{R1 , . . . , Rk }
= 1, . . . , k ) y los atributos Aj
(
mij =
2.
aj
bij
si
si
Aj R i
Aj 6 Ri
(variable distinguida)
(variable ligada)
i=1
3. Obtener
T (i) :
Si
tuplas
t1 , t2
tal que
X Y F:
t1 [X] = t2 [x],
t1 [Y ]
y en
t2 [Y ]
T (i) = T (i1)
6. Si no,
ii+1
y adems no hay una la slo con variables distinguidas, devolver falso.
y volver a 3.
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
Aplicamos
A B.
Como
a1
A
a1
a1
b31
B
b12
b22
a2
C
b13
a3
a3
D
a4
b24
a4
b12
segunda la.
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
b31
27
B
b12
b12
a2
C
b13
a3
a3
Sea la descomposicin
D
a4
b24
a4
b22
no, cambiamos
b22
por
b12
en la
Aplicamos
B C.
b12
pero no en
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
b31
c.
B
b12
b12
a2
Entonces, cambiamos
C
a3
a3
a3
b13
por
a3
en la la 1.
D
a4
b24
a4
Aplicamos
CD A. Las las 1 y 3 tienen mismo valor para c y d, pero distinto valor para a. Por lo tanto, cambiamos
b31
en la tercera la.
a1
por
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
a1
B
b12
b12
a2
aj .
C
a3
a3
a3
D
a4
b24
a4
atributo de
una relacin y
funcional
XY
que est en en
F +,
1.
XY
2.
es un atributo primo,
3.
es trivial
Ejemplo : la siguiente relacin no est en 2FN porque Direccin de local depende slo de ID de local, que no es una
clave.
ID de cliente
ID de local
Direccin de local
Los Angeles
San Francisco
Los Angeles
es trivial, el lado derecho no pertenece a una clave candidata, y el lado izquierdo es un subconjunto de la clave
candidata.
Para normalizarla, hay que dividirla en dos relaciones.
ID de cliente
ID de local
ID de local
Direccin de local
Los Angeles
San Francisco
F+
de la forma
donde
R
28
R,
Propiedades:
Cualquier relacin de dos atributos est en FNBC
Brinda eliminacin de anomalas
Brinda una descomposicin SPI
No garantiza que se preserven las dependencias funcionales
Para vericar si una dependencia funcional
o no incluya atributos de
Algoritmo 8
Ri ,
Ri
de
+ y ver si es R.
F no violan FNBC.
atributos de Ri , vericar
que
Ri .
Descomposicin FNBC
R,
+
F
= {R1 , . . . , Rn }
tal que
Ri
Fi
=R
XY
en dos relaciones:
R1 (XY )
R2 (X(R XY ))
c ) En
3. Devolver
reemplazar
por
R1
R2
dependencias funcionales en
F+
es un atributo primo
de la forma
donde
R,
no debe tener dependencias funcionales transitivas: todos los atributos que no son clave
= 3FN)
29
Algoritmo 9
Descomposicin 3FN
R,
un cubrimiento minimal
= {R1 , . . . , Rn }
Fmin
Ri
tal que
Fi
= {}
X Y Fmin :
= Ri (XY )
3. Si existen
Ri , Rj
Ri Rj :
tal que
= Ri
4. Si ninguna relacin es una superclave de
R,
=K
5. Devolver
Ejemplo : la siguiente relacin no est en 3FN porque Fecha de nacimiento del ganador depende slo de Ganador,
que depende de la clave candidata {Torneo, Ao}.
Torneo
Ao
Ganador
Indiana Invitational
1998
Al Fredrickson
21 Julio 1975
Cleveland Open
1999
Bob Albertson
28 Septiembre 1968
1999
Al Fredrickson
21 Julio 1975
Indiana Invitational
1999
Chip Masterson
14 Marzo 1977
F = {T orneo, A
no Ganador, Ganador F echa nacimiento ganador}.
es trivial, el lado derecho no pertenece a una clave candidata (no es atributo primo), y el lado izquierdo no es una
superclave.
Para normalizarla, hay que dividirla en dos relaciones.
Torneo
Ao
Ganador
Indiana Invitational
1998
Al Fredrickson
Cleveland Open
1999
Bob Albertson
1999
Al Fredrickson
Indiana Invitational
1999
Chip Masterson
Ganador
Fecha de nacimiento
Chip Masterson
14 Marzo 1977
Al Fredrickson
21 Julio 1975
Bob Albertson
28 Septiembre 1968
AB
indica que si
30
Ejemplo : sea
una relacin que indica una lista de cursos universitarios, los libros que se
Libro
Profesor
lgebra II
Acero
lgebra II
Acero
lgebra II
Piortrowsky
Algebra II
Piortrowsky
Dado que los profesores de un curso y los libros de un curso son independientes entre s, esta relacin tiene una DMV.
Si tuvisemos que agregar un nuevo libro al curso lgebra II, deberamos agregar una tupla para cada profesor del
curso. Es decir, formalmente, hay dos DMV en esta relacin:
{curso} {libro}
Esta
Dependencia multivaluada
no existen en el esquema original pero son satisfechas por la descomposicin del mismo.
es
trivial si si R = .
c,
entonces
c
interaccin3 : si
(
Z
Regla de aumentacin: si
y existe un
tal que
(
Z
=
, entonces
w .
entonces
R = {A1 , . . . , An , B1 , . . . , Bm },
Teorema:
c ,
c
c
c
entonces
c c
{A1 , . . . , An } {B1 , . . . , Bm }
entonces
R XY X
X Y,
donde
La relacin
Teorema: las nicas DFs implicadas por un conjunto de DMVs son las triviales.
Teorema: un conjunto de DFs de tipo xi yi slo implica DMVs de tipo xi yi .
Teorema: sea r una instancia del esquema de relacin R, X, Y subconjuntos de R, y Z = R XY .
satisface la DMV
3 Esta
Y X+
XY
s y solo s
R1 = XY
R2 = X Z
31
r.
Algoritmo 10
Vericar si
Entrada: relacin
r(R)
XY
1. Proyectar
2. Calcular
3. Si
en
R1 (XY )
se satisface
R2 (X, R XY )
R1 ./ R2
r = R1 ./ R2
Algoritmo 11
devolver verdadero
XY
Di
D+ ,
descomposicin
que se satisfacen en
{R1 , . . . , Rn }
Ri
Z = {}
D+
2. Agregar a
3. Agregar a
4. Devolver
A B Ri ,
donde
Ri
AB
est en
D+
A Ri
Una descomposicin de
respecto a un conjunto
que para cada
todo
i.
y es una particin de
1. Cada
Si
U {T1 , . . . , Tq }
{Y /M |= X Y }La
sea
Tj .
Base de dependencias:
es
tal que:
U = ABCDE .
Entonces la base de
es
base de dependencias de
con respecto a
R,
y sea
X R.
Sea
G =
es:
Ejemplo: sea
32
multivaluadas sobre
R(ABCDE).
Entonces
Algoritmo 12
vare:
V T
Y Z M tal que (V Y = )
V por {V Z} y {V Z}
Reemplazar
XY
pertenece a
Ejemplo: sea
M+
s y solo s
Z 6= )
La base de dependencias de
AC
Se cumple
AC BI
Bdep(X).
es:
T (0) = BDEI
a)
V = BDEI .
b)
V Z = EI
c)
V Z = BD
Entonces
A EI , Y = A, Z = EI
3.
y (V
Bdep(X) = T {A/A X}
2.
T =RX
Si
1.
conjunto de atributos
Bdep(X)
2. Mientras
3.
M,
V = EI , Y = A, Z = EI , V Z = EI , V Z = {}
b)
V = BD.
c)
V Z =B
d)
V Z =D
Entonces
C AB , Y = C , Z = AB
T (2) = {EI, B, D}
Bdep(AC) = {EI, B, D, A, C}
de componentes de Bdep(AC).
y entonces
AC BI
M+
de la forma
,
donde
R,
de las siguientes:
es trivial
Propiedades:
No tiene prdida de informacin
Una descomposicin 4FN no garantiza la preservacin de dependencias
N Vuelo
Dia de la semana
Tipo de avin
106
Lunes
B737
106
Martes
B737
106
Lunes
A380
106
Martes
A380
33
se cumple alguna
Dia de la semana
N Vuelo
Tipo de avin
106
Lunes
106
B737
106
Martes
106
A380
R2
R,
una descomposicin de
y sea
R.
R1 R2 R1 R2
2.
R1 R2 R2 R1
R.
Sean
R1
M +:
Ri
al conjunto
Algoritmo 13
M +.
Descomposicin 4FN
R,
= {R1 , . . . , Rn }
tal que
Ri
M+
Mi
=R
XY
en 2 relaciones:
R1 (XY )
R2 (X(R XY ))
c ) En
3. Devolver
reemplazar
por
R1 , R2
9 Dependencias de junta
Dependencia de junta
junta
(R1 , . . . , Rn )
y sea la descomposicin
R1 , . . . , Rn .
La dependencia de
R1 , . . . Rn
es una
R = R1 Rn ,
una relacin
r(R)
(R1 , . . . , Rn )
si
r = R1 (r) ./ ./ Rn (r)
(R1 , . . . , Rk ) se satisface para R si restringe los valores de toda instancia r(R) tal que,
t1 , . . . , tk que satisfacen ti [Ri Rj ] = tj [Ri Rj ], luego tambin existe en r otra tupla tk+1
tk+1 [Ri ] = ti [Ri ] para 1 i k .
La dependencia de junta
si existen
denida por
tuplas
Propiedades:
Si una de las
Ri
es
R,
(R1 , R2 )
34
R1 R2 R2 .
X(R XY ),
Teorema:
es decir, si
si una relacin
s y slo s
puede descomponerse SPI en 3 esquemas, pero no puede hacerlo sobre 2, esa relacin
R(A, B, C)
y la dependencia de junta
AC .
BC , |{z}
|{z}
AB , |{z}
R1
R2
para
R3
satisfacer la misma?
r
t1
t2
t3
t1 [R1 R2 ] = t2 [R1 R2 ] = 2
t1 [R1 R3 ] = t3 [R1 R3 ] = 1
t2 [R2 R3 ] = t3 [R2 R3 ] = 7
Entonces para que se satisfaga la dependencia de junta deber existir una tupla
t4
tal que:
(1, 2, 7).
si
S (r)
Un esquema de relacin
D+
de la forma
(R1 , . . . , Rn )
donde cada
Ri
D, si
R = R1 Rn ,
(R1 , . . . , Rn )
es una superclave de
es trivial
Propiedades:
Toda relacin que est en 5FN est en 4FN, y est en BCNF.
Una descomposicin 5FN no garantiza la preservacin de dependencias.
35
Ri R
Algoritmo 14
Descomposicin 5FN
R,
un conjunto de dependencias
= {R1 , . . . , Rn }
tal que
D+
Ri est
Di
=R
en
relaciones:
R1 (DJ1 )
Rk (DJk )
,
c ) En
3. Devolver
Ejemplo : sea
reemplazar
por
R1 , . . . , R k
A BCDE
BC AI
superclaves de
R1
{A, BC}.
no es trivial, y
CDE, BDI
no son
R.
La descomposicin
Para
R = ABCDEI .
R1 = ABCD
R = R2 = CDE
R3 = BDI
R2
Para
R3
36
R,
por
37
Parte III
SQL
Componentes:
1. DDL (Data Denition Language )
2. DML (Data Manipulation Language )
3. CL (Control Language )
<catalogo>.<esquema>.<relacin>
11 DDL
DDL
Lenguaje de denicin de datos para especicar el esquema de la base de datos, eliminar relaciones, modicar
esquemas, crear vistas, crear restricciones de integridad, especicar derechos de acceso, etc.
texto de longitud
varchar(n):
n
n
nvarchar(n):
caracteres
int
smallint
numeric(p,d): p
de los
blob(n):
bytes
bytes
Ai ,
Di
Ai .
los atributos
Aji ,
con
i [1, m]
check (P ):
foreign key:
38
P.
atr
rel.
Cascade:
Set null:
Set default:
assert:
rel:
DROP TABLE r
y el esquema de relacin
r.
ALTER TABLE r
ADD < Atributo > < Dominio >;
ALTER TABLE r
DROP < Atributo >;
Diccionario de datos
Contiene
metadatos
misma.
12 DML
DML
lgebra relacional
SQL
attr (r)
cond (r)
rs
La expresin
SELECT a1 , a2 , ... , an
FROM r1 , r2 , ... , rm
WHERE p ;
es equivalente a la expresin
SELECT DISTINCT.
puede
FROM.
SELECT *
El operador de renombre
El operador
like
max(count(*))
no es vlido.
39
where
%:
_:
El operador
Union
Intersect
Except
El operador
group by
permite agrupar tuplas en base a uno o ms atributos (las tuplas con el mismo valor
select,
para los atributos en esta clusula se ponen en un mismo grupo). Los atributos en la clusula
fuera de las funciones agregadas, deben estar en el operador
group by.
por
La sintaxis es:
having
having
group by
group by.
Nota: si se utilizan el operador where y el operador having, primero se aplica el where y luego se ltra por having.
select interno puede tener variables de tuplas denidas dentro del select, o en cualquier
select.
in
not in.
Ejemplo: encontrar los nombres de los clientes que tienen un prstamo y una cuenta en el banco.
some
en una clusula
where
de un
select
select
interna.
Ejemplo: encontrar los nombres de las sucursales del banco que tienen activos mayores que los de al menos una
sucursal en Brooklyn.
40
all
en una clusula
where
de un
verdadero si el valor
Ejemplo: encontrar los nombres de las sucursales del banco que tienen activos mayores que los todas las
sucursales en Brooklyn.
any
Ejemplo: encontrar los clientes que pidieron un prstamo de monto mayor a al menos los activos de una sucursal.
exists
Ejemplo: encontrar los clientes que tienen una cuenta y un prstamo en el banco.
unique
SQL no ofrece en forma nativa la posibilidad de ejecutar el operador divisin. Sin embargo, este se puede implementar
usando consultas anidadas.
Ejemplo: dados los siguientes esquemas relacionales
SELECT P . Pnombre
FROM Profesor P
WHERE NOT EXISTS ( SELECT C. Aula
FROM Curso C1
WHERE NOT EXISTS ( SELECT *
C2 . Pid = P . Pid ));
FROM Curso C2
WHERE C2 . Aula = c1 . Aula AND
12.2 Delete
Sintaxis para el borrado de tuplas de la relacin
es verdadera:
DELETE FROM r
WHERE P
Slo se borra de una relacin.
Slo se borran tuplas (no atributos de tuplas).
Primero se buscan todas las tuplas que satisfacen
P,
41
12.3 Insert
Sintaxis para la insercin de tuplas en la relacin
r:
select,
12.4 Update
Sintaxis para la actualizacin de un atributo de una tupla de
r:
UPDATE r
SET atributo = valor
WHERE condicion
UPDATE r
SET atributo = CASE
END
42
Parte IV
Procesamiento de Consultas
nr =
2.
lr =
3.
br =
br =
4.
fr =
r.
lr n r
tam bloque en bytes
nr
fr =
br
5.
V (A, r) =cantidad
6.
M IN (A, r) =mnimo
7.
M AX(A, r) =mximo
en la relacin
en la relacin
en la relacin
43
13 ndices
Ciertas consultas sobre algunos atributos son ms frecuentes que otras. Para acelerar estas consultas, se utilizan los
ndices. Podemos tener ms de un ndice sobre una relacin.
ndice
Estructura de datos (usualmente rbol B+) que permiten encontrar rpidamente las tuplas de una relacin
que tengan un valor especico para un atributo o atributos (el/los que el ndice almacena), con la desventaja
de que cada modicacin a la relacin requiere actualizar el ndice.
Un registro de un ndice tiene un valor de la clave de bsqueda, y punteros a uno o ms tuplas con esa clave
de bsqueda.
Clusterizado / primario: ndice cuya clave de bsqueda dene el orden secuencial del archivo de la tabla.
Slo puede haber uno de estos ndices para cada relacin
Clusterizado / secundario.
Denso:
tiene un registro para cada valor posible de la clave de bsqueda. Si es clusterizado, tiene un
puntero al primer registro con ese valor. Si es no clusterizado, tiene punteros a todos los registros con ese
valor.
Esparcido:
tiene registros para algunos valores de la clave de bsqueda. Solo se pueden usar si el archivo
Esparcido = P rimario
Secundario = Denso
ndice compuesto
ndice cuya clave de bsqueda est formada por ms de un atributo. Conviene que los atri-
butos de ms a la izquierda sean ms discriminantes que los de la derecha. Ejemplo: para una relacin
pelicula(nombre, a
no), es esperable que haya ms consultas
un ndice (nombre, a
no) sera mejor que (a
no, nombre).
ndice cubridor
sobre el
nombre
que sobre el
a
no.
Entonces,
Es un ndice que contiene todas las columnas de una consulta, y por ende no se necesita realizar
44
rbol B+
Tabla de hash
Ventajas
Desventajas
Operaciones ms costosas
14.1 Operadores
Scan
Index scan: se leen todos los bloques de la relacin en disco, utilizando un ndice.
R
R
a,
sobre un atributo
se lo usa.
entra en memoria, se la trae a memoria con table o index scan, y se la ordena en memoria
no entra en memoria, se la ordena externamente.
15 Algoritmos
15.1 Seleccin
A=a (r)
Bsqueda lineal sobre
r:
Si la relacin es clusterizada:
br
nr
a.
A:
br
V (A,r)
nr
Si el ndice no es clusterizado: costo
V (A,r)
45
15.2 Junta
R(X, Y ) ./ S(Y, Z),
donde
buers.
costo
ns nr
Costo
br
br + m1
bs (R
R,
br
m1 )
nr b s
V (Y,S)
nr ns
Si el ndice no es clusterizado: costo br +
V (Y,S)
del atributo
Y.
br +
Costo
bs + br + bs log(bs ) + br log(br )
h [0, M 1].
Costo:
2 (br + bs )
46
h.
entre en memoria.
TH = {} // en memoria
// fase constructiva
para cada bloque de R :
para cada tupla r del bloque :
calcular h ( r [ Y ])
guardar TH [ Y ] = r
// fase exploratoria
para cada bloque de S :
para cada tupla s del bloque :
calcular h ( s [ Y ])
agregar al resultado las tuplas de TH [ Y ] join " s "
Mtodo GRACE:
h : A [0, M 1],
de cada bloque de
h(t)
para saber a
cul particin enviar la tupla. Se enva cada tupla a esa particin (un archivo) en disco. Al nalizar la etapa,
se tienen
archivos.
S,
h2
de
para saber dnde guardarla en una tabla de hash en memoria. Luego, se calcula
particin
de
S.
h2
Este valor nos dir la posicin en la tabla de hash donde estn las tuplas de
con dicha tupla. De esta forma se obtienen las tuplas que hacen join, y se las graba en disco.
Costo:
3 (bs + br )
// particionamiento de R . Costo : 2* bR
para cada tupla r de R :
num buffer = calcular h1 ( r [ Y ])
guardar " r " en el buffer
si ( buffer completo )
guardarlo en disco Ri
// particionamiento de S . Costo : 2* bS
para cada tupla s de S :
num buffer = calcular h1 ( s [ Y ])
guardar " s " en el buffer
si ( buffer completo )
guardarlo en disco Si
// metodo simple de hash . Costo : bR + bS
para i desde 0 a M -1:
leer Ri
para cada tupla r en Ri :
calcular h2 ( r [Y ])
guardar TH [ r [ Y ]] = r
leer Si
para cada tupla s en Si :
calcular h2 ( s [Y ])
agregar al resultado las tuplas de TH [ r [ Y ]] join " s "
16 Evaluacin de expresiones
La forma obvia de evaluar una expresin que tiene varias operaciones es evaluar cada operacin en el orden indicado,
materializando en disco cada resultado intermedio como relaciones temporales.
Otra alternativa, ms eciente, es evaluar las operaciones en simultneo en un
operacin pasan a la prxima, y se elimina la necesidad de almacenar relaciones temporales. Esto se puede utilizar
para evaluar juntas mltiples:
R1 ./ R2 ./ ./ Rk .
Ventajas de pipeline:
47
17 Optimizacin de consultas
Plan de evaluacin
conjunto de operaciones de lgebra relacional a ejecutar, junto con las instrucciones para lle-
Optimizacin de consultas
teniendo en cuenta informacin estadstica de las relaciones. Lo que se busca minimizar es la cantidad de
transferencias de bloques del disco a la memoria y la cantidad de seeks que se hacen en el disco.
Para ello se tiene en cuenta:
1. Cul de la de las expresiones equivalentes a la consulta es ms eciente para resolver la misma?
2. Qu algoritmo se utilizar para implementar la operacin?
3. Cmo deberan las operaciones pasarse datos entre s? (Pipeline, buers de memoria, disco)
EXPLAIN consulta
2.
3.
a (r s) = a (r) a (s)
4.
5.
a (r ./ s) = a (r) ./ a (s)
6. Si
S : a (r s) = r a (s)
L (R S) = L (R) L (S)
2.
donde
r1 ./ r2 = r2 ./ r1
2.
(r1 ./ r2 ) ./ r3 = r1 ./ (r2 ./ r3 )
()
lo antes posible
()
lo antes posible
(./)
es importante
()
48
o en
selectividad
Se utiliza el concepto de
condicin
es
A.
Sea
si = V (i , r)
de una condicin
i .
La probabilidad de satisfacer
si
nr .
Seleccin
A=a (r)
nr
V (A,r)
Si
Av (r)
distribuye uniformemente:
con
Si
Si
a rango:
f reqrango (A,r)
cantrangos
conocido
A
A
A,
distribuye uniformemente y
distribuye uniformemente y
nr
vmin(A,r)
max(A,r)min(A,r)
abz (r)
donde hay
selectores:
abz (r)
donde hay
nr P (a) P (z) = nr
sa sb sz
(nr )x
sa
sz
nr [P (a) + + P (z)] = nr 1 1
1
nr
nr
a (r): nr V (a, r)
Junta natural
Si
R S = : nr ns
Si
R S = P KR : nS
Si
R S = P KS : nR
Si
R S = F KS : nS
Si
R S = F KR : nR
Si
#(R S) = 1:
Si
#(R S) = 2
ns nr
m
ax(V (S,RS),V (R,RS))
y el join es de tipo
ns nr
V (S,RS)
ns nr
V (R,RS)
nr ns
m
ax (V (R, A1 ), V (S, A2 ) max (V (R, B1 ), V (S, B2 ))
Proyeccin:
A (r) : V (A, r)
Agregacin A %f (r)
Unin
: V (A, r)
R S : nr + ns
Interseccin
Diferencia
R S : mn (nr , ns )
RS : r
(cota superior)
(cota superior)
Si
Si
a1 A
4 Se
49
V (R, A)
no es
muy grande, el histograma puede consistir de la cantidad de tuplas que tienen cada posible valor del atributo. Si
V (R, A)
es muy grande, entonces podra guardarse solamente los valores ms frecuentes, o agruparlos en rangos.
Igual ancho:
los rangos
2.
en
Valores ms frecuentes: se listan los valores ms frecuentes y la cantidad de tuplas que tienen esos valores.
Tambin se puede proporcionar la cantidad de tuplas que tienen otros valores.
R(A, B) ./ S(B, C). Sabemos que V (R, B) = 14 y que V (S, B) = 13. Tenemos los histogramas
R S = B.
R.B
S.B
Otros
150
100
200
100
80
70
Suponemos que cada valor que aparece en la relacin con menos valores de
en la otra relacin (en este caso,
R).
S)
tambin aparecen
R.B
S.B
150
200
100
80
550
11
= 50
Otros
100
250
10
70
= 25
250 (9 valores)
T [R ./ S]
11
10
= 15,000 + 16,000 + 3,500 + 2,500 + 9 1250
=
48,250
Enero(dia, temp)
Julio(dia, temp).
Sea la consulta
T1
Rango C
Enero
Julio
-17, -13
40
-13, -9
60
-8, -4
80
-3, 1
50
2, 6
10
7, 11
20
12, 16
50
17, 21
100
22, 26
60
27, 31
10
T2
50
V , entonces
En el ejemplo anterior, las nicas bandas que contribuyen al resultado son las de [2,6] y [7,11]. Entonces, el tamao
de la junta es:
T [R ./ S]
T R ./temp[2,6] S + T R ./temp[7,11] S
5 10 20 5
=
+
4
4
= 12, 5 + 25
=
37, 5
51
Parte V
Control de Concurrencia
tem de dato
elemento al que accede una transaccin. Puede ser un registro de una base de datos, un bloque de
disco, un campo de un registro, o incluso toda la base de datos. Cada tem tiene un nombre nico que lo
identica (por ejemplo, la direccin fsica de un bloque de disco).
perodo de tiempo.
Figura 24: El manejador de transacciones (a) le emite rdenes al manejador del log, (b) se asegura que transacciones
concurrentes no intereran entre ellas. El scheduler permite o bloquea transacciones
19 Transacciones
Transaccin
unidad lgica de procesamiento. Est formada por una o ms operaciones que acceden a la base de
Atomicity
Consistency
Isolation
Durability
ACID:
How transactions interact with the database. There are three address spaces that interact in important ways:
1. The space of disk blocks holding the database elements.
2. The virtual or main memory address space that is managed by the buer manager.
3. The local address space of the transaction.
Cada transaccin est formada por una o ms operaciones:
start
52
leer(X):
lee un item de dato de la base de datos a una variable local a la transaccin, que est en
memoria
escribir(X):
commit:
marca el n exitoso de una transaccin. Los cambios que introdujo son seguros para guardar en
la base de datos.
abort:
marca el n con errores de una transaccin. Los cambios que introdujo se deben revertir.
Partially committed : luego de que se ejecut la ltima instruccin pero antes de ejecutar el commit o
abort
punto de commit
grabaron todos sus registros de operaciones en el log. Luego de este punto, la transaccin est
y se debe almacenar permanentemente en la base de datos. Esto se marca agregando un registro
commiteada
[commit,T]
en el log.
1. Si ocurre una falla y la transaccin an no grab
[commit,T],
transaccin.
2. Si ocurre una falla y la transaccin ya haba grabado
esta transac-
cin.
El protocolo
WAL (Write-Ahead
20 Problemas de Concurrencia
1. The Lost Update Problem : una
2. The Dirty Read Problem : una
Escritura
Lectura
de un valor incorrecto.
Lectura
Lecturas
53
Nivel de isolation:
54
Nivel de
isolation
Escritura sucia (T
escribe el valor
Lectura Sucia (T
S
S
Lectura No
Repetible (T lee el
lee el valorX
lo
despus de una
transaccin
no
comiti ni abort)
valor
que
X,
luego
actualiza, luego
no comiti ni
lee
lo
y es un nuevo
abort)
Phantoms (T lee
valor)
cumplen una
condicin, luego
lee de nuevo,
encontrar un nuevo
dato que antes no
estaba)
READ
No
Si
Si
Si
No
No
Si
Si
No
No
No
Si
No
No
No
No
UNCOMMITTED
READ COMMITTED
REPEATABLE
READ
SERIALIZABLE
21 Schedules de Transacciones
distintas transacciones, pero las operaciones de una transaccin se deben ejecutar en forma secuencial.
Un schedule es
escrito por
Ti ,
Un schedule es
que
Tj
recuperable si, para cada par de transacciones Ti y Tj tal que Tj lee un tem de dato previamente
el
commit
de
Ti
commit
de
Tj .
sin cascada (avoids cascading rollback , AVR) si, para cada par de transacciones Ti y Tj
Ti ,
55
el
commit
de
Ti
read
de
Tj .
tal
estricto
exclusivos.
estricto
= sin
cascada
= recuperable
= serializable
estricto
Conicto
dos operaciones en un schedule entran en conicto cuando se cumplen todas las condiciones siguientes:
escribir(X)
Dicho de otra forma, estn en conicto cuando, si alteramos el orden de ejecucin, cambia el resultado nal
de
X.
Un schedule es
serial
Tn .
T1 ,
T2 ,
..., y
serializable cuando es equivalente a algn schedule serial con las mismas transacciones.
son conicto-equivalentes si el orden de las operaciones en conicto es la misma en ambos. Es decir,
Un schedule es
Dos schedules
si podemos transformar uno en el otro mediante una secuencia de swaps de acciones adyacentes que no estn en
conicto.
Figura 30: Convirtiendo un schedule conicto-serializable en uno serial mediante swaps de acciones adyacentes. A
cada paso estn subrayadas las acciones a punto de ser swappeadas
Un schedule es
serial.
{T1 , T2 , . . . , Tn }
es el conjunto de transacciones
Ti Tj .
G = (N, E):
S
56
Ti
debe preceder a
Tj
en cualquier
Algoritmo 15
Entrada : schedule S
Salida : " verdadero " si es conflicto serializable
para cada transaccion Ti en S :
crear un nodo Ti en el grafo de precedencia
para cada caso donde Ti ejecuta READ ( X ) y luego Tj ejecuta WRITE ( X ):
agregar una arista ( Ti -> Tj ) en el grafo de precedencia
para cada caso donde Ti ejecuta WRITE ( X ) y luego Tj ejecuta READ ( X ):
agregar una arista ( Ti -> Tj ) en el grafo de precedencia
para cada caso donde Ti ejecuta WRITE ( X ) y luego Tj ejecuta WRITE ( X ):
agregar una arista ( Ti -> Tj ) en el grafo de precedencia
si el grafo es aciclico :
devolver " verdadero "
si el gafo es ciclico :
devolver " falso "
Ti Tj , Ti
debe preceder a
Tj
orden topolgico
en el schedule serial.
En la prctica, los DBMS no utilizan este algoritmo para garantizar la serializabilidad (porque habra que vericarlo
para cada schedule ).
Lock variable que se asocia a un tem de dato. Describe el estado del tem con respecto a las posibles operaciones
que pueden aplicarse a el. Generalmente hay un lock por item de dato.
Tipos de locks :
1.
en el item de dato asociado, porque solo puede haber a lo sumo una transaccin con un lock para un
mismo dato.
El registro de este tipo de lock tiene la forma
Compartidos/Exclusivos (Lectura/Escritura):
varias transacciones que solo van a ejecutar
read-locked o write-locked.
con lock>
57
ejecutar ni
read_lock(X)
ni
e ) no se permite ejecutar
unlock(X)
si no se tiene un lock de
(compartido o exclusivo)
lock(B), A + B
entre
unlock(A)
sera incorrecto
2. Deadlock : ocurre cuando cada transaccin en un schedule est esperando que se libere un lock que fue
adquirido por otra transaccin del schedule.
Para detectar y/o prevenir un deadlock, el gestor de concurrencia puede mantener un
Cuando una transaccin
T S.
Cuando
grafo de espera.
Cuando ocurre un deadlock, el sistema debe ejecutar el rollback de alguna de las dos transacciones, y
liberar los locks que sta posea.
Tambin se pueden arreglar deadlocks especicando un timeout para cada transaccin. Si se ejecutan por
ms tiempo que este timeout, es abortada y sus locks se liberan.
3. Starvation : ocurre cuando una transaccin se queda esperando indenidamente a que se libere un lock.
Se puede evitar de la siguiente forma: cuando una transaccin
M,
Ti
en un modo
Lock de update
antes que
M.
Ti
X,
pero
no
R,
tal que ya se
C.
Exclusivo
Compartido
Exclusivo
No
No
Compartido
No
Si
Exclusivo
Compartido
Actualizacin
Exclusivo
No
No
No
Compartido
No
Si
Si
Actualizacin
No
No
No
Lock table tabla que utiliza el gestor de concurrencia para almacenar el estado de los locks activos.
Para cada tem de dato con locks activos, mantiene una lista de transacciones que solicitaron el lock, en el
orden en que llegaron los pedidos. Se registra qu transaccin es y qu modo de lock solicit. Tambin se
registra si el lock le fue concedido.
58
locking)
(2PL)
la creciente (donde se adquieren los locks ) y la decreciente (donde se liberan los locks ).
Si cada transaccin de un schedule cumple el protocolo 2PL, se garantiza que el schedule es serializable. De hecho,
las transacciones se pueden ordenar de acuerdo a sus lock points (el punto donde termina la fase creciente).
Este protocolo limita la cantidad de concurrencia que se permite, porque una transaccin no puede liberar un lock
hasta que haya adquirido un lock para todos los dems tems, y entonces puede haber muchas otras transacciones
esperando que se libere el primer lock. Adems, no se previene el deadlock, ni los rollbacks en cascada.
59
T5
Para prevenir el problema de deadlock, este protocolo puede ampliarse y exigir que las transacciones adquieran por
adelantado todos los locks que se necesitan; si un lock no se puede conseguir, no se adquiere ninguno. Esto limita
an ms la concurrencia.
Para prevenir el problema de rollbacks en cascada, existe el protocolo
lo mismo que 2PL, requiere que todos los locks exclusivos adquiridos por una transaccin se mantengan hasta que
la misma ejecute commit.
protocolo especializado para transacciones que acceden a datos en forma de rbol (ejemplo: un
ndice B). El protocolo viola 2PL, pero utiliza el hecho de que acceder a elementos debe ser hacia abajo para
garantizar serializabilidad.
Si una transaccin quiere insertar un registro, debera adquirir un lock exclusivo de la raz, ergo de todo el rbol, y
por ende estara bloqueando a todas las dems transacciones.
Puede aprovecharse la estructura de rbol del ndice de la siguiente forma:
Cuando se adquiere un read_lock en un nodo hijo, el lock del nodo padre puede liberarse porque no se usar
ms.
Cuando se adquiere un write_lock en un nodo hoja (para realizar una insercin), se debe adquirir un lock
exclusivo en el nodo hoja.
Utilizar la tcnica de index locking soluciona el problema de registros phantom.
El protocolo de rbol garantiza un orden serial en las transacciones. El orden de precedencia se dene as: si
adquieren un lock sobre
Algoritmo 16
Ti
Ti Tj .
Protocolo de rbol
1. El primer lock de una transaccin puede hacerse sobre cualquier nodo del rbol.
2. Los locks subsiguientes pueden otorgarse slo si se posee un lock sobre el nodo padre.
3. Se puede ejecutar unlock de un nodo en cualquier momento.
4. No se puede adquirir lock de un nodo 2 veces, incluso cuando se tiene un lock sobre el nodo padre.
60
Ti
Tj
Parte VI
Tcnicas de Recuperacin
23 Necesidad de Recuperacin
Tipos de fallas que pueden ocurrir:
1. Fallas de la computadora: por ejemplo, una desconexin en la red
2. Fallas de transacciones: por ejemplo, una transaccin que intenta dividir por cero
3. Errores locales: por ejemplo, una transaccin que no encuentra datos
4. Aplicacin de procedimientos de control de concurrencia: por ejemplo, una transaccin abortada porque viola
la serializabilidad o para resolver un estado de deadlock
5. Fallas del disco
6. Catstrofes
Los algoritmos de recuperacin tienen dos partes:
1. Acciones que se toman durante el procesamiento normal de transacciones, para asegurar que, en caso de falla,
se dispone de suciente informacin para recuperar
2. Acciones que se toman despus de una falla para devolver la base de datos a un estado consistente.
Idealmente, la base de datos en disco debera contener, para cada tem de dato, el ltimo valor escrito por una
transaccin que ejecut commit.
En la prctica, la base de datos podra:
Contener valores escritos por transacciones no commiteadas
No contener valores escritos por transacciones commiteadas
24 Archivo de Log
La base de datos se almacena en disco. ste est formado por bloques. Como todos los bloques no caben en memoria
principal, se necesita una forma de trabajar con la base de datos en memoria. Por ende, se necesita una forma de
organizar los bloques en memoria y luego copiarlos en el disco (ush).
Para alcanzar el objetivo de transacciones atmicas, primero se debe guardar en disco informacin sobre las modicaciones, sin modicar la base de datos en s. Para eso se utiliza un archivo de log. Este archivo permite:
61
Deshacer (undo) cambios hechos por transacciones que deben ser abortadas
Rehacer (redo) cambios hechos por transacciones que ejecutaron commit pero cuyos cambios no fueron almacenados en la base de datos en disco.
Log
Redo debe hacerse en el orden en el que los cambios fueron hechos originalmente.
Undo escribe registros especiales llamados redo-only, que no tienen el valor viejo del item de dato. Al nalizar
las escrituras, se escribe un registro
<abort,T>
24.1 Checkpoints
Cuando se produce una cada del sistema, hay que consultar el log para determinar aquellas transacciones que deben
rehacerse o deshacerse. En principio, habra que buscar en todo el log para determinar esta informacin. Hay dos
grandes dicultades con este enfoque:
1. El proceso de bsqueda lleva mucho tiempo.
2. La mayor parte de las transacciones ya han escrito sus actualizaciones en la base de datos.
Para reducir este tipo de gastos generales, se usan los checkpoints . La periodicidad con que se ejecutan checkpoints
la decide el administrador de base de datos.
Algoritmo 17
COMMIT
or
ABORT
record on the
log.
3. Flush the log to disk.
4. Write a log record
<CHECKPOINT> ,
transactions (i.e., transactions that have not yet committed and written their changes to disk).
2. Flush the log.
from starting.
Algoritmo 19
<END CHECKPOINT> .
62
Algoritmo 20
<END CHECKPOINT> .
25 Protocolos de Recuperacin
Para fallas de tipo 5 y 6, se necesita haber grabado con anterioridad un backup de la base de datos y reconstruir
la misma con el archivo de log hasta el momento de la falla.
Para fallas de tipo 1 a 4, existen dos tcnicas de recuperacin:
Deferred update
Las transacciones y el manejador de buers obedecen 1 regla:
Write-Ahead Logging (WAL): se deben grabar en disco todos los registros de log sobre las actualizacin (incluyendo <UPDATE T,X,Nuevo_valor> y <COMMIT T>), y luego actualizar X en disco.
Tipos de registros:
<START T>
<COMMIT T>
<ABORT T>
<UPDATE T,X,Valor_Nuevo>
Algoritmo 21
Procedimiento de recuperacin
REDO
sin checkpoints
transacciones_commiteadas = identificarlas
transacciones_incompletas = identificarlas
desde el comienzo del log hasta el fin :
si hay un registro < UPDATE <T ,X , Valor_Nuevo >:
si T est en " transacciones_commiteadas " :
escribir " Valor_Nuevo " en X
si no :
no hacer nada
para cada T en " transacciones_incompletas " :
escribir < ABORT T >
flush_log ()
63
Algoritmo 22
Procedimiento de recuperacin
REDO
transacciones_commiteadas = identificarlas
transacciones_incompletas = identificarlas
El algoritmo anterior puede ser ms eciente si se ejecuta, para cada item de dato, slo el ltimo REDO
existente (porque todos los anteriores seran sobrescritos por ste).
Este mecanismo garantiza:
Que no se deban hacer rollbacks de transacciones (porque las mismas slo escriben en la base de
datos luego de ejecutar commit)
Que no se deban hacer rollbacks en cascada (porque los tems tienen locks que no permiten leerlos
antes de que una transaccin que los escribi no ejecute commit)
Si la transaccin
Tipos de registros:
Algoritmo 23
<START T>
<COMMIT T>
<ABORT T>
<UPDATE T,X,Valor_Viejo,Valor_Nuevo>
Procedimiento de recuperacin
UNDO/REDO
2.
X,
el registro de log
<UPDATE T,X,Valor_Viejo>
b)
64
<COMMIT T>
debe ser
Tipos de registros:
Algoritmo 24
<START T>
<COMMIT T>
<ABORT T>
<UPDATE T,X,Valor_Viejo>
Procedimiento de recuperacin
UNDO
transacciones_completas = {}
transacciones_incompletas = {}
desde el fin del log hasta el comienzo : // o hasta que se encuentre un registro < CHECKPOINT >
si hay un registro < COMMIT T > o < ABORT T >:
transacciones_completas += T
si hay un registro < UPDATE <T ,X , Valor_Viejo >:
si T est en " transacciones_completas " :
no hacer nada
sino :
transacciones_incompletas += T
escribir " Valor_Viejo " en " X "
para cada T en " transacciones_incompletas " :
escribir < ABORT T >
flush_log ()
Algoritmo 25
Procedimiento de recuperacin
UNDO
transacciones_completas = {}
transacciones_incompletas = {}
desde el fin del log :
si hay un registro < COMMIT T > o < ABORT T >:
transacciones_completas += T
si hay un registro < UPDATE <T ,X , Valor_Viejo >:
si T est en " transacciones_completas " :
no hacer nada
sino :
transacciones_incompletas += T
escribir " Valor_Viejo " en " X "
si hay un registro < END CHECKPOINT >:
// se debe mirar el log hasta el < START CHECKPOINT > correspondiente
si hay un registro < START CHECKPOINT T1 ,... , TK > pero no un < END CHECKPOINT >:
// la caida se produjo durante el checkpointing
// se debe mirar el log hasta el comienzo de la primera transaccin incompleta
para cada T en " transacciones_incompletas " :
escribir < ABORT T >
flush_log ()
idempotentes:
a ejecutarlas muchas veces. De hecho, todo el proceso de recuperacin debe ser idempotente para garantizar que si
existe una falla durante la recuperacin de una falla, la misma se pueda recuperar tambin.
Es necesario que el DBMS mantenga:
Lista de transacciones activas
Lista de transacciones que ejecutaron commit
Lista de transacciones abortadas desde el ltimo checkpoint
65
UNDO
Logs X = Bd X = Commit al log
REDO
Logs X & Commit al log = Bd X
UNDO/REDO
Log X = Bd X
Immediate update
Deferred update
Immediate update
66