Resumen - Base de Datos
Resumen - Base de Datos
Resumen - Base de Datos
05)
Resumen
fiuba-apuntes.github.io
LICENCIA
Este es un resumen (y no un sustituto) de la licencia. Este resumen destaca slo algunas de las
caractersticas clave y los trminos de la licencia real. No es una licencia y no tiene valor legal. Usted
debe revisar cuidadosamente todos los trminos y condiciones de la licencia actual antes de usar el
material licenciado.
NoComercial Usted no puede hacer uso del material con fines comerciales.
CompartirIgual Si usted mezcla, transforma o crea nuevo material a partir de esta obra,
usted podr distribuir su contribucin siempre que utilice la misma licencia que la obra original.
No hay restricciones adicionales Usted no puede aplicar trminos legales ni medidas tecnolgicas que
restrinjan legalmente a otros hacer cualquier uso permitido por la licencia.
Aviso:
Usted no tiene que cumplir con la licencia para los materiales en el dominio pblico o cuando su uso est
permitido por una excepcin o limitacin aplicable.
No se entregan garantas. La licencia podra no entregarle todos los permisos que necesita para el uso que
tenga previsto. Por ejemplo, otros derechos como relativos a publicidad, privacidad, o derechos morales pueden
limitar la forma en que utilice el material.
NDICE
ndice
Acerca del proyecto
1. Modelo de datos
2. BDs y SGBDs
2.1. Base de datos . . . . . . . . . . . . . . . . .
2.2. Por qu una base de datos y no un sistema
2.3. Diseo de una base de datos . . . . . . . . .
2.4. Modelos de datos . . . . . . . . . . . . . . .
2.4.1. Operaciones en una base de datos .
2.4.2. Restricciones . . . . . . . . . . . . .
2.5. Modelos de bases de datos . . . . . . . . . .
. . . . . . .
de archivo?
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
7
7
8
8
9
9
9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10
10
10
12
13
13
13
15
15
16
16
17
4. Modelo Relacional
4.1. Estructura del modelo relacional . . . . .
4.2. Restricciones del modelo relacional . . . .
4.3. Operaciones del modelo relacional: lgebra
4.3.1. Operadores bsicos . . . . . . . . .
4.3.2. Operadores secundarios . . . . . .
4.4. Operadores extendidos . . . . . . . . . . .
4.5. Actualizaciones a bases de datos . . . . .
4.5.1. Delete . . . . . . . . . . . . . . . .
4.5.2. Insert . . . . . . . . . . . . . . . .
4.5.3. Update . . . . . . . . . . . . . . .
4.6. Vistas (views) . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
18
19
19
20
22
23
23
23
23
23
. . . . . .
. . . . . .
relacional
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Clculo relacional
24
6. Lenguajes de consulta
24
7. Integridad y seguridad
7.1. Restricciones de dominio . . . . . . . .
7.2. Restricciones de integridad referencial
7.2.1. Acciones referenciales . . . . .
7.3. Seguridad y autorizaciones . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
25
25
8. Triggers
25
II
26
Pgina 1 de 74
NDICE
9. Dependencias funcionales
26
9.1. Axiomas de Armstrong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
9.2. Clausura y superclaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9.3. Cubrimiento minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10.Primera forma normal (1FN)
29
33
33
34
15.Dependencias multivaluadas
15.1. Propiedades de las DMVs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.2. Preservacin de dependencias multivaluadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.3. Base minimal de Dependencias e Implicacin de DMVs . . . . . . . . . . . . . . . . . . . . . . . .
35
36
37
37
III
SQL
43
19.DDL
19.1. Tipos de dominios
19.2. Create table . . . .
19.3. Drop table . . . . .
19.4. Alter table . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
43
43
44
44
20.DML
20.1. Consultas anidadas
20.2. Delete . . . . . . .
20.3. Insert . . . . . . .
20.4. Update . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
45
47
47
47
IV
Procesamiento de Consultas
48
21.ndices
49
21.1. Estructuras de ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
22.Formas de realizar consultas
50
22.1. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
23.Algoritmos
51
23.1. Seleccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
23.2. Junta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Base de Datos (75.15 - 95.05) - Resumen
Pgina 2 de 74
NDICE
24.Evaluacin de expresiones
53
25.Optimizacin de consultas
53
25.1. Reglas de equivalencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
25.2. Heursticas de optimizacin de consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
26.Estimacin de tamao de consultas
54
26.1. Clculo de juntas con histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Control de Concurrencia
57
27.Transacciones
57
28.Problemas de concurrencia
58
28.1. Atributos de una transaccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
29.Schedules de transacciones
60
VI
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tcnicas de Recuperacin
61
62
62
62
63
63
64
64
65
66
31.Necesidad de Recuperacin
66
32.Archivo de Log
66
32.1. Checkpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
32.1.1. Checkpoints bloqueantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
32.1.2. Checkpoints no bloqueantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
33.Protocolos de Recuperacin
33.1. Deferred update . . . . . . .
33.2. Immediate update . . . . . .
33.2.1. UNDO/REDO . . .
33.2.2. UNDO . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
68
68
69
69
70
Colaboradores
73
Historial de cambios
74
Pgina 3 de 74
Pgina 4 de 74
Parte I
Modelo de datos
Un fenmeno o idea usualmente refiere a un objeto y a algn aspecto del objeto, el cual captura un determinado valor en un cierto momento.
Dato tupla <nombre de objeto, propiedad de objeto, valor de la propiedad del objeto, instante>.
Dato elemental terna <nombre de objeto, propiedad de objeto, valor de la propiedad del objeto>.
Modelo de datos herramienta intelectual que provee una interpretacin del mundo real. Es un dispositivo de
abstraccin.
2.
BDs y SGBDs
2 BDs y SGBDs
Tipo de usuario
Ingenuos
Descripcin
Consultan la base de datos
Sofisticados
Programador de
aplicaciones
Especializados
Sistema de Gestin de Base de Datos (SGBD) Ejemplos: Oracle, MySQL, SQL Sever, DB2, Access, PosgreSQL. Sistema formado por datos y los programas que acceden a los datos. Su objetivo es almacenar y
permitir consultas en formas convenientes y eficientes.
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.
Gestin de Base de Datos est formada por las siguientes herramientas:
1. Compiladores: proveen el lenguaje de consulta.
2. Catlogo: provee informacin de la base de datos; por ejemplo, para sacar estadsticas de consultas.
3. Optimizador de consultas
4. Manejador de transacciones: asegura que una transaccin se ejecute completamente o permita una
vuelta atrs.
5. Manejador de concurrencia: asegura la integridad de la base de datos ante usuarios concurrentes.
6. Manejador de seguridad :
a) Contra hechos no intencionales. Ejemplo: fallas de energa.
b) Contra hechos intencionales. Ejemplo: ataques de terceros para robar informacin.
Figura 2: SGBD
Base de Datos (75.15 - 95.05) - Resumen
Pgina 6 de 74
2.1
Base de datos
2.1.
Base de datos
2.2.
2.3
2.3.
2.4.
Modelos de datos
Modelo de datos gua para organizar los datos de una base de datos. Formado por tres componentes:
1. la estructura de los datos (tablas, rboles, redes, etc.),
2. las operaciones sobre las estructuras, y
3. las restricciones sobre las estructuras o sobre las operaciones (para que los datos mantengan su
integridad semntica).
La potencia semntica de un modelo de datos est determinada por su capacidad de representar, adems
de la estructura de los datos, el significado de los mismos y sus interrelaciones.
Base de Datos (75.15 - 95.05) - Resumen
Pgina 8 de 74
2.5
2.4.1.
Estado de una BD valor de todos los atributos de todos los objetos de la base de datos.
Operadores los hay de dos tipos:
1. De consulta (no modifican el estado de la base de datos)
2. De actualizacin (modifican el estado de la base de datos)
Transaccin conjunto de operaciones elementales. Ejemplo: la transferencia a una cuenta.
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
2.5.
Pgina 9 de 74
3.
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 n4500011.
Conjunto de entidades / tipo de entidad conjunto de entidades del mismo tipo. Ejemplo: el conjunto de
entidades cliente abarca todas las personas que tienen cuenta en un banco.
Un conjunto de entidades E tiene un predicado asociado p para probar si una entidad e 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 definido por:
1. Nombre: en singular o frase simple en singular. Ejemplos: cliente, cuenta corriente
2. Significado: texto preciso, conciso y claro. Debe indicar, si existieran, dependencias con 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 permitidos, denominado el dominio del atributo. Ejemplo: el DNI debe ser un nmero positivo.
Los atributos deben ser atmicos (es decir, que no se pueden descomponer), y no pueden estar repetidos.
Formalmente, un atributo es una funcin que hace corresponder un conjunto de entidades a un dominio o
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 nulo, por varias razones:
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. Identificador: atributo o conjunto de atributos que permiten distinguir a cada entidad dentro del conjunto
de entidades del mismo tipo.
3.2.
Interrelaciones
Pgina 10 de 74
3.2
Interrelaciones
Un tipo de interrelacin puede tener atributos descriptivos. Ejemplo: la interrelacin tenencia puede
tener un atributo fecha ltimo movimiento.
Caractersticas:
Grado de una interrelacin cantidad de tipos de entidades que participan en la relacin.
3.2
3.2.1.
Interrelaciones
Tipos de interrelaciones
Especializacin un conjunto de entidades se divide en grupos de entidades que son distintivas. Ejemplo: en
el contexto de un banco, una persona puede ser especializada en un empleado o un cliente, o ambas, o
ninguna
Generalizacin la inversa de especializacin. Existe una superclase y una o ms subclases.
Puede haber restricciones de pertenencia:
1. Qu tipos de entidades pueden ser miembros de una subclase?
a) Definido por condicin: existe una condicin o predicado explcito que decide la pertenencia o
no pertenencia.
b) Definido por el usuario: el usuario de la BD asigna entidades a una subclase.
2. Las entidades pueden pertenecer a ms de una subclase dentro de una superclase?
a) S = Generalizaciones superpuestas
b) No = Generalizaciones disjuntas
3. Una entidad en la superclase debe pertenecer a al menos una entidad en la subclase?
a) S = Generalizacin total
b) No = Generalizacin parcial
En la especializacin y en la generalizacin, las subclases heredan atributos de la superclase.
Agregacin abstraccin mediante la cual un conjunto de interrelacin es tratado como una superclase.
Base de Datos (75.15 - 95.05) - Resumen
Pgina 12 de 74
3.3
Restricciones
3.3.
Restricciones
3.3.1.
Restricciones de participacin
Cardinalidad de correspondencia cantidad mnima y mxima de entidades a las cuales puede asociarse una
entidad a travs de un tipo de interrelacin.
Para una interrelacin binaria R entre dos tipos de entidades A y B, la cardinalidad puede ser:
1. Uno a uno (1 : 1): Una entidad en A est asociada como mximo a una entidad en B, y una entidad en
B est asociada como mximo a una entidad en A.
Figura 7: Cardinalidad 1 : 1
2. Uno a muchos (1 : M ): Una entidad en A est asociada como mximo con cualquier cantidad de entidades
en B, y una entidad en B est asociada como mximo a una entidad en A.
Tambin existe la restriccin muchos a uno (M : 1).
Figura 8: Cardinalidad 1 : M
3. Muchos a muchos (M : M ): Una entidad en A est asociada como mximo con cualquier cantidad de
entidades en B, y una entidad en B est asociada como mximo con cualquier cantidad de entidades en
A.
Figura 9: Cardinalidad M : M
Para una interrelacin ternaria R entre tres tipos de entidades A, B y C, la cardinalidad puede ser:
Pgina 13 de 74
3.3
Restricciones
N:N:N
Figura 11: Las fbricas le compran insumos a proveedores. Una fbrica no puede comprar el mismo insumo a
ms de un proveedor.
Claves candidatas de Compra: {idf abrica , idinsumo }
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.
Claves candidatas de Compra: {idf abrica , idinsumo } ; {idproveedor , idinsumo }
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.
Base de Datos (75.15 - 95.05) - Resumen
Pgina 14 de 74
3.3
Restricciones
Claves candidatas de Compra: {idf abrica , idinsumo } ; {idproveedor , idinsumo } ; {idf abrica , idproveedor }
Teorema: en las relaciones ternarias, las restricciones de cardinalidad no imponen restricciones en las
relaciones binarias. En el ejemplo anterior, una fbrica puede comprar N insumos. Una fbrica puede comprarle
a N proveedores. Un proveedor puede proveer N insumos.
3.3.3.
3.3.4.
Restricciones de identificacin
Superclave conjunto de uno o ms atributos que, tomados en conjunto, permiten identificar unvocamente
una entidad o una interrelacin en el conjunto de entidades o interrelaciones del mismo tipo.
Si K es una superclave, cualquier superconjunto de K tambin es una superclave.
Clave candidata superclaves minimales; aquellas para las cuales ningn subconjunto propio es una superclave.
Sea R un esquema de relacin con atributos A1 , . . . , An . El conjunto de atributos K = (A1 , . . . , Ak ) es
una clave candidata de R s y slo s satisface:
1. Unicidad : en todo momento, no existen dos tuplas distintas de R que tengan el mismo valor para
Ai , donde i [1, k].
2. Minimalidad : ningn atributo de K puede ser eliminado sin que se pierda la propiedad de unicidad.
Clave primaria aquella clave candidata que es elegida por el diseador del modelo de datos para identificar
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 que tiene dependencia de identificacin, porque no es identificable por sus propios
atributos. Est subordinada a otro tipo de entidad, la entidad fuerte.
Entidad fuerte entidad que tiene una clave primaria propia.
El concepto de entidades fuertes y dbiles est relacionado con el concepto de dependencia de existencia.
Una entidad dbil es, por definicin, 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 dependen de la misma entidad fuerte.
Para una entidad dbil, su clave primaria est formada por su identificador ms la clave primaria de la
entidad fuerte de la cual depende.
Pgina 15 de 74
3.4
3.4.
Diagramas E-R
Diagramas E-R
Figura 15: Simbologa en los diagramas E-R para entidades fuertes (cuenta) y dbiles (transaccin). La clave
primaria de la entidad fuerte se identifica con el atributo subrayado (nro. cuenta). La dependencia a
la entidad fuerte se identifica con arcos dobles. El discriminador de la entidad dbil se identifica con
el atributo subrayado a medias (nro. transaccin). El identificador de la entidad dbil es la suma
de su discriminador y de la clave primaria de la entidad fuerte (nro. cuenta + nro. transaccin)
3.5.
Cuestiones de diseo
Pgina 16 de 74
3.6
3.6.
Para cada entidad y para cada interrelacin, se construye una nica tabla. Cada tabla contiene mltiples
columnas.
Representacin de conjuntos de entidades fuertes
Sea E un conjunto de entidad fuerte con atributos a1 , . . . , an . Se representa a la misma con una tabla
llamada E con n columnas. Cada fila de la tabla es una entidad. El conjunto de todas las posibles filas de
la tabla es el producto cartesiano entre los dominios de cada atributo:
D1 . . . Dn
Representacin de conjuntos de entidades dbiles
Sea A un conjunto de entidad dbil con atributos a1 , . . . , am . Sea B el conjunto de entidad fuerte del cual
depende A. La clave primaria de B est formada por los atributos b1 , . . . , bn . Se representa a A con una
tabla con m + n columnas a1 , . . . , am , b1 , . . . , bn .
Representacin de conjuntos de interrelaciones
Sea R un conjunto de interrelaciones entre las entidades E1 , . . . , En 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 R con una tabla con columnas a1 , . . . , an , r1 , . . . , rm .
Si la interrelacin relaciona un conjunto de entidades dbil y otro fuerte, la tabla de R no es necesaria,
es redundante.
Representacin de interrelaciones 1 : N entre entidades A y B
Si la participacin de A en R es total (i.e. cada entidad en A debe participar en la relacin R), se pueden
unir las tablas de A y R.
Representacin de atributos compuestos
Sea el atributo compuesto x formado por x1 , . . . , xn . Se debe generar una columna para cada x1 , . . . , xn ,
pero no para x.
Representacin de atributos multivaluados
Sea el atributo multivaluado x. Se debe crear una tabla T con una columna C que corresponde a x y
el resto de las columnas son la clave primaria del conjunto de entidades o interrelacin del cual x 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 R entre la agregacin A y el conjunto de entidades B incluye una columna
por cada clave primaria de B y A.
Pgina 17 de 74
4 Modelo Relacional
4.
4.1.
Modelo Relacional
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).
4.2.
Pgina 18 de 74
4.3
4.3.
Es un lenguaje formal y procedural que permite realizar consultas sobre un conjunto de relaciones, y
produce relaciones como resultado.
4.3.1.
Operadores bsicos
Los siguientes operadores son linealmente independientes. Se utilizan para filtrar, cortar y combinar relaciones.
Operaciones unarias
Proyeccin
Proyeccin: a1 ,...,an (r)
Dados los atributos a1 , . . . , an que pertenecen a r, devuelve una relacin de esquema {a1 , . . . , an }.
Se eliminan las tuplas repetidas.
Seleccin
Seleccin: p (r)
Devuelve una relacin r0 con el mismo esquema que r, en la que las tuplas son aquellas pertenecientes
a r que satisfacen la condicin o el predicado p. La condicin puede ser de dos estilos:
1. Atmica: expresin lgica simple del tipo que utiliza un operador de comparacin , tal que
{=, 6=, <, >, , }. Se permiten dos tipos de expresiones:
a) Atributo atributo
b) Atributo constante
2. Compuesta: utiliza conectores and, or, not.
Renombre
Renombre: R(A1 ,A2 ,...,An ) (E)
Cambia el nombre de la relacin E a R, y tambin cambia el nombre de sus atributos a A1 , A2 , . . . , An .
Pgina 19 de 74
4.3
Operaciones binarias
Unin
Unin: r
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
Diferencia
Diferencia: r s
Sean r y s instancias homogneas de las relaciones R y S respectivamente. La diferencia se define
como:
r s = {x : x r x 6 s}
Producto cartesiano
Producto cartesiano: r s
Sean r y s instancias de las relaciones R y S respectivamente. El producto cartesiano es el conjunto
de tuplas que resulta de concatenar cada tupla de r con cada tupla de s.
r s = {(r1 , s1 ) ; . . . ; (r1 , sm ) ; . . . ; (rn , s1 ) . . . , (rn , sm )}
Si r tiene n tuplas y s tiene m tuplas, r s tendr n m tuplas. El grado de r s es la suma de los
grados de r y s.
4.3.2.
Operadores secundarios
Pgina 20 de 74
4.3
c) Natural
T join (r s). Requiere que haya atributos compartidos entre las relaciones r y s, y adems
que R S 6= .
r s RS (r.c1 =s.c1 r.c2 =s.c2 r.ch =s.ch (r s))
El join natural es una operacin asociativa, por lo tanto, (r s) t = r (s t).
4.4
4.4.
Operadores extendidos
Operadores extendidos
donde E una expresin de lgebra relacional; Gi es un atributo para formar grupos, Fi es una funcin
agregada, y Ai es un atributo. Las tuplas de la relacin resultado de E se particionan en grupos de tal
forma que
a) Todas las tuplas en un grupo tienen el mismo valor para Gi i [1, n]
b) Tuplas en distintos grupos tienen distinto valor para Gi i [1, n]
Para cada grupo, la relacin tendr una tupla (g1 , . . . , gn , a1 , . . . , am ) donde para cada i, ai es el resultado
de aplicar la funcin Fi en el multiconjunto, para el atributo Ai del grupo.
Ejemplo: dada la relacin EmpleadosPartTime(nombre,sucursal,salario), la siguiente expresin devuelve
una relacin con un solo atributo (sin nombre) y una sola fila, que contiene el valor de la suma de todos
los salarios:
Gsum(salario) EmpleadosP artT ime
Se puede usar el operador distinct para eliminar mltiples ocurrencias de un valor.
Ejemplo: con la misma relacin anterior, la siguiente expresin devuelve una relacin con un solo atributo
(sin nombre) y una sola fila, que contiene la cantidad de sucursales:
Gcountdistinct(sucursal) EmpleadosP artT ime
Se puede usar el operador de grupos para particionar una relacin y computar una funcin agregada a
cada 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:
sucursal Gsum(salario) EmpleadosP artT ime
3. Join externo (outer join): es una extensin de la operacin de join que lidia con informacin faltante
(null s).
a) Left outer join (r1 ./ r2 ): hace un join natural, y toma todas las tuplas de r1 que no matchearon con
ninguna tupla de r2 , les agrega valores null a los atributos de r2 , y los agrega al resultado.
b) Right outer join (r1 ./ r2 ): hace un join natural, y toma todas las tuplas de r2 que no matchearon
con ninguna tupla de r1 , les agrega valores null a los atributos de r1 , y los agrega al resultado.
1 Un
Pgina 22 de 74
4.5
4.5.
4.5.1.
Delete
En lgebra relacional se expresa como r r E, donde r es una relacin y E es una expresin de consulta.
Solo se pueden borrar tuplas completas, no valores de atributos.
4.5.2.
Insert
En lgebra relacional se expresa como r r E, donde r es una relacin y E es una expresin de consulta,
o una relacin constante con una sola tupla.
4.5.3.
Update
En lgebra relacional se expresa como r F1 ,...,Fn (r), donde r es una relacin y cada Fi es, o el atributo
i-simo de r, o una expresin que involucra solo constantes y el nuevo valor de r, que da el nuevo valor del
atributo i-simo.
4.6.
Vistas (views)
Vista relacin que no es parte del modelo lgico de la base de datos, pero que es visible para el usuario como
una relacin virtual.
1
Limitaciones:
No se pueden ejecutar operaciones de update sobre una vista, salvo que la vista sobre la relacin R cumpla
lo siguiente:
Deben usar SELECT, y no SELECT DISTINCT
La clusula WHERE no debe incluir a R en una consulta anidada
La clusula WHERE no debe incluir a otra relacin
Los atributos del SELECT deben ser NOT NULL
El update solo se ejecutar sobre los atributos del SELECT.
A las operaciones de delete sobre una vista se les pasa la clusula WHERE de la vista (para borrar solo las
tuplas que se pueden ver en la vista).
Si las relaciones subyacentes son modificadas, la vista queda desactualizada. Por eso, en los motores, en
una expresin que involucra una vista, la relacin de la vista se recalcula al evaluar la expresin.
Vista materializada vista que se evala y se almacena fsicamente. Los cambios a estas vistas se realizan de
forma incremental (no se reconstruye toda la vista desde cero)
Pgina 23 de 74
5 Clculo relacional
5.
Clculo relacional
COMPLETAR
6.
Lenguajes de consulta
7.
Integridad y seguridad
En SQL, tenemos las siguientes restricciones:
NOT NULL: indica que un atributo no puede tener el valor 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: asegura la integridad referencial de una tabla
CHECK: asegura que el valor de un atributo satisface una condicin especificada
DEFAULT: especifica un valor por defecto cuando no se especifique ninguo
7.1.
1
2
3
Restricciones de dominio
CREATE DOMAIN color AS VARCHAR (10)
DEFAULT SinColor
CHECK ( value IN ( SinColor , Azul , Rojo ) ) ;
4
5
6
7
8
9
7.2.
Ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Pgina 24 de 74
7.3
Seguridad y autorizaciones
7.2.1.
Acciones referenciales
Son llamadas SQL que se ejecutan de forma automtica ante la eliminacin o actualizacin de una restriccin
de integridad referencial, para mantener la misma.
1
2
3
4
5
De esta forma, cuando se elimine o actualice una fila en la tabla Hospital, el sistema de base de datos
ejecutar la accin especificada en la tabla Medico:
SET DEFAULT / SET NULL: se fija el valor predeterminado o nulo en la fila referenciante.
CASCADE: al eliminar una tupla referenciada, las tuplas referenciantes son eliminadas. Al modificar la clave
en la tabla referenciada, el correspondiente valor de la clave fornea es actualizado.
7.3.
Seguridad y autorizaciones
Para brindar autorizaciones, se brindan privilegios. Los privilegios son tipos de autorizaciones para leer,
insertar, actualizar o borrar datos. Tambin existe el privilegio references, que permite declarar claves forneas
al crear relaciones nuevas.
Con la opcin WITH GRANT OPTION se permite que el usuario que recibe el permiso se lo conceda a alguien
ms. El pase de autorizaciones de un usuario a otro se representa con un grafo de autorizacin, donde cada
nodo es un usuario (la raz es el DBA), y las aristas representan autorizaciones concedidas.
Un usuario tiene autorizacin s y solo s existe un camino desde la raz del grafo hacia el nodo usuario.
1
2
3
4
Para eliminar autorizaciones se usa el comando REVOKE. Por defecto, este comando tiene el efecto de revocar
los privilegios que el usuario le brind a otros. Para evitar este efecto cascada, se usa la opcin RESTRICT.
1
2
3
4
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.
1
2
3
4
5
6
Pgina 25 de 74
Parte II
Notacin
Nombre de esquemas: R, S, R1 , . . . , Rn , S1 , . . . , Sn
Instancias de esquemas: r, s, r1 , . . . rn , s1 , . . . , sn
Conjuntos de atributos: , ,
Atributos: A, B, C
Tuplas: t1 , t2
9.
Dependencias funcionales
9.1.
Axiomas de Armstrong
Pgina 26 de 74
9.2
Clausura y superclaves
Axiomas de Armstrong
1. Regla de reflexividad
Si es un conjunto de atributos y , entonces ( ) F +
2. Regla de augmentacin
Si es una dependencia funcional y es un conjunto de atributos, entonces ( )
F+
3. Regla de transitividad
Si es una dependencia funcional y es otra dependencia funcional, entonces
( ) F +
Teorema: R satisface la dependencia funcional X Y s y slo s R descompone sin prdida sobre los
esquemas XY y X(R XY ), es decir, si R satisface la dependencia de junta (XY, X(R XY ))
9.2.
Clausura y superclaves
9.3
Cubrimiento minimal
Algoritmo 2 Computar +
Entrada: relacin R, conjunto de dependencias funcionales F , atributo
+
Salida: F
1. a+ = a
2. Repetir hasta que a+ no vare:
a) Para cada dependencia funcional B Y F :
Si B a+ : a+ = a+ Y
3. Devolver a+
Usos del algoritmo de clculo de la clausura de a+
1. Para determinar si es una superclave de R: debe cumplirse que + = R.
2. Para determinar si la dependencia funcional F + : debe cumplirse que + .
3. Es una forma alternativa de calcular F +
Algoritmo 3 Clculo de claves candidatas mediante un grafo
Entrada: relacin R, conjunto de dependencias funcionales F
Salida: claves candidatas de R
1. Dibujar el grafo de dependencias funcionales (si X Y F , dibujar una arista entre X e Y )
2. Vni = atributos sin aristas entrantes
3. Voi = atributos que solo tienen aristas entrantes
4. K = {}
5. Repetir hasta que no se pueda agregar nada a K:
a) CC = todos los atributos de Vni
b) Agregar a CC un atributo de R que no est en Voi ni Vni
c) K = K CC
6. Devolver K
9.3.
Cubrimiento minimal
Atributo extrneo atributo de una dependencia funcional que se puede quitar de la misma sin cambiar la
clausura del conjunto de dependencias funcionales.
Sea el conjunto de dependencias funcionales F y la dependencia funcional en F .
El atributo A es extrneo en si, cuando lo sacamos de , la dependencia funcional se sigue cumpliendo (B ( A)+
F ). Formalmente:
A , y
F implica lgicamente a (F { B}) {( A) }
El atributo B es extrneo en si, cuando lo sacamos de , la dependencia funcional se sigue cumpliendo ( ( B)) Formalmente:
Base de Datos (75.15 - 95.05) - Resumen
Pgina 28 de 74
B , y
El conjunto (F { }) { ( B)} implica lgicamente a F
Cubrimiento minimal: El cubrimiento minimal Fmin para F es un conjunto de dependencias funcionales
tales que F implica todas las dependencias en Fmin , y Fmin implica todas las dependencias en F .
Fmin debe tener las propiedades siguientes:
Ninguna dependencia funcional en Fmin contiene un atributo extrneo
No existen dos dependencias funcionales 1 y 2 en Fmin tales que 1 = 2 . Es decir, los
lados izquierdos deben ser nicos
Algoritmo 4 Clculo de cubrimiento minimal
Entrada: conjunto de dependencias funcionales F
Salida: cubrimiento minimal 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 una dependencia funcional en F , con al menos dos atributos en Y . Sea Z igual a Y pero con
algn atributo de menos. Si F implica a Z B, entonces reemplazar Y B con Z B.
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, A E}
3. Eliminar las dependencias redundantes.
Hay que revisar una por una todas las dependencias de Fmin . En caso de que una sea redundante, se
la elimina de Fmin y se sigue analizando el resto tomando como referencia el nuevo Fmin .
A D es redundante en Fc ? Hay que verificar si D 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.
10.
Autor 1
Avi Silberschatz
Bruce Schneier
Autor 2
Henry Korth
NULL
Autor 3
S. Sudarshan
NULL
11.
ID libro
1
1
1
2
Ttulo Libro
Database System Concepts
Applied Cryptography
Autor
Avi Silberschatz
Henry Korth
S. Sudarshan
Bruce Schneier
Pgina 30 de 74
11.1
11.1.
Sea el esquema relacional R, y sea F el conjunto de dependencias funcionales sobre R. Sean R1 y R2 una
descomposicin de R. Esta descomposicin es sin prdida de informacin (SPI) si al menos una de las siguientes
dependencias funcionales est en F + :
R1 R2 R1 R2
R1 R2 R2 R1
Ejemplo: La descomposicin de R(A, B, C, D, E, F ) en R1 = (A, D, E, F ) y R2 = (B, C, D) es SPI respecto
de F = {A BD, B CD, AC E}?
R1 R2 = D
R1 R2 = AEF
R2 R1 = BC
Como DF+ = {D}, vemos que no se cumplen ni R1 R2 R1 R2 ni R1 R2 R2 R1 . Por lo tanto,
esta descomposicin no es SPI.
11.2.
11.2
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
b31
B
b12
b22
a2
C
b13
a3
a3
D
a4
b24
a4
Aplicamos A B. Como a1 es igual en las primeras dos filas, pero b12 y b22 no, cambiamos b22 por b12 en
la segunda fila.
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
b31
B
b12
b12
a2
C
b13
a3
a3
D
a4
b24
a4
Aplicamos B C. Las filas 1 y 2 coinciden en b12 pero no en c. Entonces, cambiamos b13 por a3 en la fila 1.
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
b31
B
b12
b12
a2
C
a3
a3
a3
D
a4
b24
a4
Aplicamos CD A. Las filas 1 y 3 tienen mismo valor para c y d, pero distinto valor para a. Por lo tanto,
cambiamos b31 por a1 en la tercera fila.
R1 (A, D)
R2 (A, C)
R3 (B, C, D)
A
a1
a1
a1
B
b12
b12
a2
C
a3
a3
a3
D
a4
b24
a4
En este punto notamos que la fila 3 tiene valores de la forma aj . Como son todas variables distinguidas, la
descomposicin es sin prdida de informacin.
Base de Datos (75.15 - 95.05) - Resumen
Pgina 32 de 74
12.
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
1
1
2
ID de local
1
3
1
Direccin de local
Los Angeles
San Francisco
Los Angeles
13.
ID de local
1
3
1
ID de local
1
3
Direccin de local
Los Angeles
San Francisco
Pgina 33 de 74
Para verificar si una dependencia funcional viola FNBC, alcanza con computar + y ver si es R.
Para verificar si una relacin R est en FNBC, alcanza con ver si las dependencias de F no violan FNBC.
Para verificar si una descomposicin Ri est en FNBC, para cada subconjunto de atributos de Ri , verificar
+
que F
o no incluya atributos de Ri , o incluya todos los atributos de Ri .
Algoritmo 8 Descomposicin FNBC
Entrada: una relacin R, un conjunto de dependencias funcionales F
Salida: una descomposicin = {R1 , . . . , Rn } tal que Ri est en FNBC con respecto a Fi
1. = R
2. Repetir hasta que no haya esquemas en que violen FNBC
a) Elegir una dependencia funcional X Y que viole FNBC sobre i
b) Descomponer i en dos relaciones:
R1 (XY )
R2 (X(R XY ))
c) En , reemplazar i por R1 y R2
3. Devolver
14.
Pgina 34 de 74
15 Dependencias multivaluadas
Ao
1998
1999
1999
1999
Ganador
Al Fredrickson
Bob Albertson
Al Fredrickson
Chip Masterson
F = {T orneo, A
no Ganador, Ganador F echa nacimiento ganador}. La segunda dependencia funcional no 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
Indiana Invitational
Cleveland Open
Des Moines Masters
Indiana Invitational
15.
Ao
1998
1999
1999
1999
Ganador
Al Fredrickson
Bob Albertson
Al Fredrickson
Chip Masterson
Ganador
Chip Masterson
Al Fredrickson
Bob Albertson
Fecha de nacimiento
14 Marzo 1977
21 Julio 1975
28 Septiembre 1968
Dependencias multivaluadas
Una dependencia multivaluada expresa que dos conjuntos de atributos en un esquema son mutuamente
independientes.
Sean los conjuntos de atributos disjuntos A y B de la relacin R(A, B, U A B). Sean las tuplas t1 y t2 .
La dependencia multivaluada A B indica que si t1 [A] = t2 [A], entonces podemos encontrar tuplas t3 y t4
tales que:
t1 [A] = t2 [A] = t3 [A] = t4 [A]
Pgina 35 de 74
15.1
t3 [B] = t1 [B]
t3 [U A B] = t2 [U A B]
t4 [B] = t2 [B]
t4 [U A B] = t1 [U A B]
Libro
David Lay - Algebra Lineal
Strang - Algebra Lineal
David Lay - Algebra Lineal
Strang - Algebra Lineal
Profesor
Acero
Acero
Piortrowsky
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} y
{curso} {prof esor}. Esta relacin exhibe redundancia.
Dependencia multivaluada: no existen en el esquema original pero son satisfechas por la descomposicin
del mismo.
15.1.
es trivial si si R = .
Una dependencia multivaluada garantiza que ciertas tuplas existan.
Regla de transitividad multivaluada: Si y c, entonces c
Regla de replicacin: si , entonces . La inversa no es cierta.
(
(
Z
Regla de interaccin 2 : si
y existe un tal que
, entonces Z
Z
=
Regla de aumentacin: si entonces w .
Regla del complemento: si , entonces R
Regla de unin: si , y c, entonces c
c
Regla de descomposicin: si , y c, entonces c
c
2 Esta
Pgina 36 de 74
15.2
15.2.
Una descomposicin de R en los esquemas R1 , . . . , Rn es una descomposicin que preserva las dependencias con respecto a un conjunto D de dependencias funcionales y multivaluadas si, para cada relacin
r1 (R1 ), . . . , rn (Rn ) tal que para cada i, ri satisface Di , entonces existe una relacin r(R) que satisface D y para
el cual ri = Ri (r) para todo i.
15.3.
16.
Pgina 38 de 74
16.1
Ejemplo: la siguiente relacin no est en 4FN. La clave es {N V uelo, Dia de la semana, T ipo de avi
on}.
N Vuelo
106
106
106
106
Dia de la semana
Lunes
Martes
Lunes
Martes
Tipo de avin
B737
B737
A380
A380
16.1.
Dia de la semana
Lunes
Martes
N Vuelo
106
106
Tipo de avin
B737
A380
Sea el esquema relacional R, y sea M el conjunto de dependencias funcionales y multivaluadas sobre R. Sean
R1 y R2 una descomposicin de R. Esta descomposicin es sin prdida de informacin (SPI) si al menos una
de las siguientes dependencias multivaluadas est en M + :
1. R1 R2 R1 R2
2. R1 R2 R2 R1
16.2.
Pgina 39 de 74
17 Dependencias de junta
17.
Dependencias de junta
A
1
4
4
1
B
2
5
2
8
R2
R3
C
3
6
7
7
17.1.
Un esquema de relacin r(R) satisface la dependencia de junta embebida DJE (R1 , . . . , Rp ) si S (r)
satisface la dependencia de junta (R1 , . . . , Rp ), donde S = R1 R2 . . . Rp .
Notar que r puede no satisfacer la DJE.
Base de Datos (75.15 - 95.05) - Resumen
Pgina 40 de 74
18.
A BCDE
BC AI
Las clave candidata de R son, por las dependencias funcionales, {A, BC}.
R no est en 5FN porque la dependencia de junta (ABCD, CDE, BDI) no es trivial, y CDE, BDI no
son superclaves de R.
R1 = ABCD
La descomposicin R = R2 = CDE s est en 5FN porque:
R3 = BDI
Para R1 aplica la dependencia de junta (AB, BCD, AD), y todos los miembros son superclaves de R,
por lo tanto est en 5FN.
Para R2 solo aplican dependencias de junta triviales.
Para R3 solo aplican dependencias de junta triviales.
Pgina 41 de 74
18.1
18.1.
Implicacin de dependencias
Implicacin de dependencias
Pgina 42 de 74
Parte III
SQL
Componentes:
1. DDL (Data Definition Language)
2. DML (Data Manipulation Language)
3. CL (Control Language)
Para identificar unvocamente a una relacin, se utiliza el formato <catalogo>.<esquema>.<relacin>
19.
DDL
DDL: Lenguaje de definicin de datos para especificar el esquema de la base de datos, eliminar relaciones,
modificar esquemas, crear vistas, crear restricciones de integridad, especificar derechos de acceso, etc.
19.1.
Tipos de dominios
19.2.
1
2
3
4
Create table
La instruccin anterior crea una tabla llamada r con atributos Ai , y Di es el dominio del atributo Ai .
Las restricciones de integridad pueden ser:
primary key (Aj1 , Aj2 , . . . , Ajm ): los atributos Aji , con i [1, m] forman la clave primaria de cada tupla.
No pueden ser null, y deben ser nicos.
check (P ): todas las tuplas de r deben satisfacer el predicado P .
foreign key:
Pgina 43 de 74
19.3
1
2
Drop table
Se establece que el atributo atr es una clave primaria en la relacin rel. Se puede especificar lo que sucede
si se produce una actualizacin o un borrado de dicho valor en la relacin rel:
Cascade: se actualiza/elimina la tupla en esta relacin
Set null: la clave fornea se establece en null
Set default: la clave fornea se establece en su valor por default
assert: define una restriccin aplicable a varias tablas.
1
2
19.3.
Drop table
La instruccin DROP TABLE r elimina todas las tuplas de la tabla r y el esquema de relacin r.
19.4.
Alter table
La instruccin puede utilizarse para agregar atributos nuevos (con valor null ) o para eliminarlos.
1
2
3
4
ALTER TABLE r
ADD < Atributo > < Dominio >;
ALTER TABLE r
DROP < Atributo >;
Diccionario de datos: contiene metadatos (informacin sobre los datos), en particular, sobre el esquema
de la misma.
20.
DML
DML: lenguaje de manipulacin de datos para expresar las consultas a la base de datos.
Operaciones CRUD (Create, Read, Update, Delete)
lgebra relacional
attr (r)
cond (r)
rs
SQL
SELECT attr FROM r
SELECT * FROM r WHERE cond
SELECT * FROM r,s
La expresin
1
2
3
SELECT a1 , a2 , ... , an
FROM r1 , r2 , ... , rm
WHERE p ;
Pgina 44 de 74
20.1
Consultas anidadas
Ejemplo: encontrar el promedio del saldo de las cuentas en cada sucursal de un banco.
1
2
3
El operador having permite seleccionar a grupos formados con group by que cumplan una condicin.
Cualquier atributo que est presente en la clusula having sin agregar, debe aparecer en el operador group
by.
1
2
3
4
5
Ejemplo: encontrar los nombres de las sucursales del banco que tengan un promedio general de saldo mayor
a $1200.
1
2
3
4
Nota: si se utilizan el operador where y el operador having, primero se aplica el where y luego se filtra por
having.
20.1.
Consultas anidadas
En una consulta anidada, el select interno puede tener variables de tuplas definidas dentro del select, o
en cualquier consulta que incluya a sta.
El conector in permite verificar la pertenencia de un valor a un conjunto que es resultado de una clusula
select. De forma equivalente, existe el conector not in.
Ejemplo: encontrar los nombres de los clientes que tienen un prstamo y una cuenta en el banco.
1
2
3
4
Pgina 45 de 74
20.1
Consultas anidadas
El operador de comparacin some en una clusula where de un select externo devuelve verdadero si el
valor del atributo en cuestin es mayor o menor que al menos un valor de la clusula select interna.
Ejemplo: encontrar los nombres de las sucursales del banco que tienen activos mayores que los de al menos
una sucursal en Brooklyn.
1
2
3
4
5
El operador de comparacin all en una clusula where de un select externo devuelve verdadero si el
valor del atributo en cuestin es mayor a todos los valores de la clusula select interna.
Ejemplo: encontrar los nombres de las sucursales del banco que tienen activos mayores que los todas las
sucursales en Brooklyn.
1
2
3
4
5
Hallar los nombres de todos los profesores que ensean en todas las aulas en las que se dicta algn curso.
1
2
3
4
5
6
7
8
SELECT P . Pnombre
FROM Profesor P
WHERE NOT EXISTS ( SELECT C . Aula
FROM Curso C1
WHERE NOT EXISTS ( SELECT *
FROM Curso C2
WHERE C2 . Aula = c1 . Aula
AND C2 . Pid = P . Pid ) ) ;
Pgina 46 de 74
20.2
Delete
20.2.
Delete
DELETE FROM r
WHERE P
20.3.
Insert
Primero se buscan todas las tuplas que satisfacen el select, y luego se insertan todas ellas.
20.4.
Update
UPDATE r
SET atributo = valor
WHERE condicion
UPDATE r
SET atributo = CASE
WHEN condicion1 THEN valor1
WHEN condicion2 THEN valor2
ELSE valor3
END
Pgina 47 de 74
Parte IV
Procesamiento de Consultas
lr n r
tam bloque en bytes
nr
fr =
br
Pgina 48 de 74
21 ndices
21.
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 especifico para un atributo o atributos (el/los que el ndice almacena), con
la desventaja de que cada modificacin 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.
1
2
3
4
Tipos de ndices:
Segn la clave:
Clusterizado / primario: ndice cuya clave de bsqueda define el orden secuencial del archivo de
la tabla. Slo puede haber uno de estos ndices para cada relacin
Clusterizado / secundario.
El orden fsico de las tuplas no es igual al orden del ndice
Las columnas que se indexan son, tpicamente, atributos no claves
Siempre son densos
Segn la cantidad de registros que tiene:
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 de datos est ordenado por la clave de bsqueda.
Esparcido = P rimario
Secundario = Denso
Pgina 49 de 74
21.1
Estructuras de ndices
21.1.
Estructuras de ndices
rbol B+
Tabla de hash
rbol B+
Tabla de hash
22.
Ventajas
Desventajas
Operaciones ms costosas
No soporta bsquedas por rango.
22.1.
Operadores
Scan
Table scan: se leen todos los bloques de la relacin en disco.
Index scan: se leen todos los bloques de la relacin en disco, utilizando un ndice.
Sort scan: ordena una relacin R sobre un atributo a.
Si hay un ndice sobre a, se lo usa.
Si R entra en memoria, se la trae a memoria con table o index scan, y se la ordena en memoria
Si R no entra en memoria, se la ordena externamente.
Base de Datos (75.15 - 95.05) - Resumen
Pgina 50 de 74
23 Algoritmos
23.
Algoritmos
23.1.
Seleccin
A=a (r)
Bsqueda lineal sobre r:
Si la relacin es clusterizada: br
Si la relacin no est clusterizada: nr
Bsqueda con ndice sobre los atributos de A:
Si el ndice es clusterizado: costo
Si el ndice no es clusterizado:
23.2.
br
V (A,r)
nr
costo V (A,r)
Junta
R(X, Y ) ./ S(Y, Z), donde R es la relacin ms pequea. Suponemos que la memoria est formada por M
buffers.
Iteracin ingenua (tuple based nested-loop join):
costo ns nr
1
2
3
4
br
m1
bs (R se lee una vez, S se lee por cada pedazo de R, cada pedazo es de tamao
Indexed nested-loop join: suponer que se tiene un ndice sobre S del atributo Y .
Si el ndice es clusterizado: costo br +
Si el ndice no es clusterizado: costo
nr b s
V (Y,S)
r ns
br + Vn(Y,S)
23.2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Junta
Mtodo Simple de Junta Hash: utiliza una funcin de hash h. Requiere que la relacin R entre en memoria.
h [0, M 1].
Costo: 2 (br + bs )
1
TH = {} // en memoria
2
3
4
5
6
7
// fase constructiva
para cada bloque de R :
para cada tupla r del bloque :
calcular h ( r [ Y ])
guardar TH [ Y ] = r
8
9
10
11
12
13
// 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:
El mtodo de junta Hash versin GRACE se usa para calcular la junta R ./R.A=S.A S cuando ninguna
de las tablas entran en memoria. Lo que se hace es generar 2 conjuntos de M particiones. Se utilizan dos
funciones de hash: una para generar las particiones h : A [0, M 1], y otra para calcular qu tuplas
hacen join.
En una primera etapa, por cada tupla t de cada bloque de R se aplica la funcin de hashing h(t) para
saber a cul particin enviar la tupla. Se enva cada tupla a esa particin (un archivo) en disco. Al finalizar
la etapa, se tienen M archivos.
En una segunda etapa, se hace lo mismo con S, pero con otros M archivos. La clave est en que si dos
tuplas hacen join, entonces necesariamente deben estar en el mismo nmero de particin.
Finalmente, se leen las i particiones. A cada tupla leda de la particin i de R se le aplica la funcin de
hash h2 para saber dnde guardarla en una tabla de hash en memoria. Luego, se calcula h2 para cada
tupla de la particin i de S. Este valor nos dir la posicin en la tabla de hash donde estn las tuplas de
R que hacen join con dicha tupla. De esta forma se obtienen las tuplas que hacen join, y se las graba en
disco.
Costo: 3 (bs + br )
1
2
3
4
5
6
7
8
// 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 :
Pgina 52 de 74
24 Evaluacin de expresiones
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24.
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 eficiente, es evaluar las operaciones en simultneo en un pipeline, donde los resultados
de una 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:
1. Elimina el costo de leer y escribir relaciones temporales.
2. Puede empezar a generar resultados inmediatamente.
Uso de pipelining:
Sort: no se puede aplicar. El resultado del sort no se puede mostrar hasta que no se hayan procesado
todas las tuplas.
Join: el mtodo GRACE no se puede aplicar porque requiere leer y particionar todas las tuplas antes
de que pueda producirse un resultado. Sin embargo, el mtodo indexed nested-loop puede aprovechar del
pipelining. Si las relaciones estn ordenadas por los atributos de join, merge join tambin puede aprovechar
del pipelining.
25.
Optimizacin de consultas
Plan de evaluacin conjunto de operaciones de lgebra relacional a ejecutar, junto con las instrucciones para
llevarlas a cabo (por ejemplo, los ndices a usar).
Optimizacin de consultas proceso de seleccionar el mejor plan de evaluacin. El costo de cada plan se evala
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 eficiente para resolver la misma?
2. Qu algoritmo se utilizar para implementar la operacin?
3. Cmo deberan las operaciones pasarse datos entre s? (Pipeline, buffers de memoria, disco)
1
EXPLAIN consulta
Pgina 53 de 74
25.1
25.1.
Reglas de equivalencia
Reglas de equivalencia
25.2.
26.
nr
V (A,r)
f reqrango (A,r)
cantrangos
vmin(A,r)
max(A,r)min(A,r)
sa sb sz
(nr )x
Pgina 54 de 74
26.1
Si R S = : nr ns
Si R S = P KR : nS (porque podra haber nulls)
Si R S = P KS : nR (porque podra haber nulls)
Si R S = F KS : nS
Si R S = F KR : nR
Si #(R S) = 1:
ns nr
m
ax(V (S,RS),V (R,RS))
ns nr
V (S,RS)
ns nr
V (R,RS)
26.1.
Un sistema de bases de datos puede computar un histograma de valores para un atributo dado. Si 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.
Los tipos de histogramas ms frecuentes son:
1. Igual ancho: se escoge un ancho w y una constante v0 . Se almacena la cantidad de tuplas con valores v
en los rangosv0 v < v0 + w, v0 + w v < v0 + 2w, etctera.
2. 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.
Ejemplo: sea la junta R(A, B) ./ S(B, C). Sabemos que V (R, B) = 14 y que V (S, B) = 13. Tenemos los
histogramas de valores ms frecuentes para R S = B.
R.B
S.B
0
150
100
1
200
80
2
?
70
5
100
?
Otros
550 (11 valores)
250 (10 valores)
Suponemos que cada valor que aparece en la relacin con menos valores de B (en este caso, S) tambin
aparecen en la otra relacin (en este caso, R). Tambin suponemos que la distribucin de los valores dentro de
Otros es uniforme, y estimamos la frecuencia de los datos desconocidos:
R.B
S.B
0
150
100
1
200
80
2
= 50
70
550
11
5
100
250
10 = 25
Otros
550 (10 valores)
250 (9 valores)
1. Si R(X, Y ) y S(Y, Z), y V (R, Y ) V (S, Y ) entonces cada valor de Y en R ser un valor de Y en S.
2. Si A es un atributo de R pero no de S, V (R ./ S, A) = v (R, A)
Pgina 55 de 74
26.1
11
10
= 15,000 + 16,000 + 3,500 + 2,500 + 9 1250
=
48,250
Ejemplo: sean las relaciones Enero(dia, temp) y Julio(dia, temp). Sea la consulta
1
2
3
Enero
0
0
0
0
5
20
50
100
60
10
Julio
40
60
80
50
10
5
0
0
0
0
Sabemos que si dos bandas tienen T1 y T2 tuplas respectivamente, y la cantidad de valores de la banda es V ,
entonces la estimacin del tamao de la junta es T1VT2 .
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
Pgina 56 de 74
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 identifica (por ejemplo, la direccin fsica de un bloque de disco).
Modelo de concurrencia intercalada la CPU ejecuta una transaccin a la vez, pero varias transacciones en
un perodo de tiempo.
Figura 24: El manejador de transacciones (a) le emite rdenes al manejador del log, (b) se asegura que transacciones concurrentes no interfieran entre ellas. El scheduler permite o bloquea transacciones
27.
Transacciones
Transaccin unidad lgica de procesamiento. Est formada por una o ms operaciones que acceden a la base
de datos. Tiene un identificador nico de transaccin.
Debe tener las siguientes propiedades ACID:
Atomicity
28 Problemas de concurrencia
28.
Problemas de concurrencia
Pgina 58 de 74
28.1
28.1.
Nivel de isolation:
Nivel de
isolation
READ UNCOMMITTED
READ
COMMITTED
REPEATABLE
READ
SERIALIZABLE
Lectura Sucia (T
lee el valorX
despus de una
transaccin S que
no comiti ni
abort)
Lectura No
Repetible (T lee
el valor X, luego S
lo actualiza, luego
T lee X y es un
nuevo valor)
No
Si
Si
Phantoms (T lee
varios datos que
cumplen una
condicin, luego S
agrega un dato que
tambin lo verifica. Si
T lee de nuevo,
encontrar un nuevo
dato que antes no
estaba)
Si
No
No
Si
Si
No
No
No
Si
No
No
No
No
29 Schedules de transacciones
29.
Schedules de transacciones
Pgina 60 de 74
Un schedule es serial cuando ejecuta primero todas las operaciones de T1 , luego todas las operaciones de
T2 , ..., y finalmente todas las operaciones de Tn . Cualquier esquema serial preserva la consistencia de la base de
datos.
Un schedule es serializable cuando es equivalente a algn schedule serial con las mismas transacciones.
Dos schedules son conflicto-equivalentes si el orden de las operaciones en conflicto es la misma en ambos.
Es decir, si podemos transformar uno en el otro mediante una secuencia de swaps de acciones adyacentes que
no estn en conflicto.
Figura 29: Convirtiendo un schedule conflicto-serializable en uno serial mediante swaps de acciones adyacentes.
A cada paso estn subrayadas las acciones a punto de ser swappeadas
Un schedule es conflicto-serializable si es conflicto-equivalente a algn schedule serial.
Conf licto serializable = Serializable
Para verificar si un schedule S es conflicto-serializable se utiliza un grafo dirigido G = (N, E):
N es el conjunto de transacciones {T1 , T2 , . . . , Tn } que forman el schedule
E es el conjunto de aristas de la forma Ti Tj . Cada arista significa que Ti debe preceder a Tj en
cualquier schedule serial equivalente a S
Algoritmo 15 Verificacin de serializabilidad de un schedule
1
2
Entrada : schedule S
Salida : " verdadero " si es conflicto serializable
3
4
5
6
7
8
9
10
11
12
13
14
15
16
si el grafo es aciclico :
devolver " verdadero "
si el gafo es ciclico :
devolver " falso "
Si el grafo de precedencia es acclico, el schedule serial equivalente puede construirse utilizando un orden
topolgico de la siguiente forma: siempre que exista una arista Ti Tj , Ti debe preceder a Tj en el schedule
serial.
En la prctica, los DBMS no utilizan este algoritmo para garantizar la serializabilidad (porque habra que
verificarlo para cada schedule).
30.
Una forma de garantizar el aislamiento de transacciones y prevenir comportamiento no serializable es mediante el uso de locks. Notar que este mecanismo no funciona bien cuando los locks se mantienen durante das,
Pgina 61 de 74
30.1 Lock
30.1.
Lock
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.
30.1.1.
Tipos de locks
1. Binarios: pueden tener dos valores: locked (1) o unlocked (0). Un lock binario impone la exclusin mutua
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 <Item de dato, LOCK, Transaccin con lock>
Reglas que deben aplicarse a cada transaccin:
a) lock(X) antes de cualquier leer(X) o escribir(X)
b) unlock(X) despus de todos los leer(X) y escribir(X)
c) no se permite ejecutar lock(X) si ya se tiene un lock de X
d ) no se permite ejecutar unlock(X) si no se tiene el lock de X
2. Compartidos/Exclusivos (Lectura/Escritura): es ms laxo que los locks binarios porque permite que
varias transacciones que solo van a ejecutar leer(X) tengan acceso a X. El lock puede tener dos valores:
read-locked o write-locked.
Lock exclusivo: puede leer y escribir el dato X.
Lock compartido: puede leer pero no puede escribir X.
El registro este tipo de lock tiene la forma <Item de dato, LOCK, # de lecturas, Transaccion(es)
con lock>
Reglas que deben aplicarse a cada transaccin:
a) read_lock(X) o write_lock(X) antes de cualquier leer(X)
b) write_lock(X) antes de cualquier escribir(X)
c) luego de todos los leer(X) y escribir(X), ejecutar unlock(X)
d ) si ya tiene un lock (compartido o exclusivo) de X, no se puede ejecutar ni read_lock(X) ni write_lock(X)
e) no se permite ejecutar unlock(X) si no se tiene un lock de X (compartido o exclusivo)
30.1.2.
Figura 30: El uso de locks no garantiza la serializabilidad. Si se produce una actualizacin a A entre unlock(A)
y lock(B), A + B sera incorrecto
Base de Datos (75.15 - 95.05) - Resumen
Pgina 62 de 74
30.2
Lock de update
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 grafo de espera.
Cuando una transaccin T est esperando a que la transaccin S libere un lock, se dibuja una arista
T S. Cuando S libera el lock, la arista se borra. El deadlock se detecta cuando el grafo es cclico.
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 especificando 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 indefinidamente a que se libere un lock.
Se puede evitar de la siguiente forma: cuando una transaccin Ti solicita un lock sobre X en un modo M ,
el gestor de concurrencia se lo provee si se verifica que:
a) No hay otra transaccin con un lock sobre X en un modo que conflicte con M .
b) No hay otra transaccin esperando obtener un lock sobre X antes que Ti
30.2.
Lock de update
Lock de update un lock de update le da a una transaccin el privilegio para leer X, pero no para escribirlo.
Sin embargo, este tipo de lock se puede actualizar a un lock exclusivo ms tarde.
30.3.
Matriz de compatibilidad de locks se puede otorgar un lock de tipo C si y solo si, para cada fila R tal que
ya se otorg a otra transaccin un lock de tipo R, hay un Si en la columna C.
Exclusivo
Compartido
Exclusivo
Compartido
Actualizacin
Actualizacin
No
Si
No
Pgina 63 de 74
30.4.
Lock table
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.
30.5.
Una transaccin cumple con el protocolo two-phase locking (2PL) si todas las operaciones de lock
(read_lock, write_lock) preceden al primer unlock de la transaccin. Se dice entonces que la transaccin
se divide en dos fases: 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.
Pgina 64 de 74
30.6
Protocolo de rbol
30.6.
Protocolo de rbol
Protocolo de rbol 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 define as:
si Ti y Tj adquieren un lock sobre X y Ti adquiere el lock primero, entonces Ti Tj .
Algoritmo 16 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.
Pgina 65 de 74
Parte VI
Tcnicas de Recuperacin
31.
Necesidad de Recuperacin
32.
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 (flush).
Pgina 66 de 74
32.1
Checkpoints
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 archivo secuencial al que solo se le pueden agregar registros.
Decimos que una transaccin ejecut commit cuando su registro [commit,T] fue almacenado en disco. Si
hay una falla luego de esto, se ejecuta un redo. Si hay una falla antes de esto, se hace undo.
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
finalizar las escrituras, se escribe un registro <abort,T> para indicar que el undo finaliz.
32.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 dificultades 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.
32.1.1.
Checkpoints bloqueantes
Se describe a continuacin un esquema de control simple que (a) no permite realizar ningn cambio mientras
la operacin est en curso, y (b) se escriben en disco todos los buffers en memoria modificados.
Algoritmo 17 Checkpoint bloqueante en un log UNDO
1. Stop accepting new transactions.
2. Wait until all currently active transactions commit or abort and have written a COMMIT or ABORT record on
the log.
3. Flush the log to disk.
4. Write a log record <CHECKPOINT>, and flush the log again.
5. Resume accepting transactions.
32.1.2.
Checkpoints no bloqueantes
33 Protocolos de Recuperacin
33.
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
Immediate update
33.1.
Deferred update
Tipos de registros
<START T>
<COMMIT T>
<ABORT T>
<UPDATE T,X,Valor_Nuevo>
t r a n s a c c i o n e s _ c o m mi t e a d a s = identificarlas
t r a n s a c c i o n e s _ i n c om p l e t a s = identificarlas
3
4
5
6
7
8
9
10
11
12
13
14
flush_log ()
Pgina 68 de 74
t r a n s a c c i o n e s _ c o m mi t e a d a s = identificarlas
t r a n s a c c i o n e s _ i n c om p l e t a s = identificarlas
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
para cada T en t r a ns a c c i o n e s _ i nc o m p l e t a s :
escribir < ABORT T >
21
22
flush_log ()
El algoritmo anterior puede ser ms eficiente 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)
33.2.
Immediate update
UNDO/REDO
4
5
6
7
8
9
33.2.2.
UNDO
Tipos de registros
<START T>
<COMMIT T>
<ABORT T>
<UPDATE T,X,Valor_Viejo>
t r a n s a c c io ne s _c om pl e ta s = {}
t r a n s a c c i o n e s _ i n c om p l e t a s = {}
3
4
5
6
7
8
9
10
11
12
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 >:
t r a ns a cc io ne s _c om pl e ta s += T
si hay un registro < UPDATE <T ,X , Valor_Viejo >:
si T esta en " tr an sa c ci on es _ co mp le t as ":
no hacer nada
sino :
t r a n s a cc i o n e s _ i n c om p l e t a s += T
escribir " Valor_Viejo " en " X "
13
14
15
16
17
flush_log ()
Pgina 70 de 74
t r a n s a c c i o n e s_ c om pl e ta s = {}
t r a n s a c c i o n e s _ i n c om p l e t a s = {}
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
flush_log ()
Es necesario que las operaciones de UNDO y REDO sean idempotentes: ejecutarlas muchas veces debe
ser igual 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
UNDO
Logs X = Bd X = Commit al log
Immediate update
REDO
Logs X & Commit al log = Bd X
Deferred update
UNDO/REDO
Log X = Bd X
Immediate update
Pgina 72 de 74
COLABORADORES
Colaboradores
Quienes se mencionan a continuacin han colaborado y aportado tanto al proyecto FIUBA Apuntes como
en este apunte, redactndolo, corrigindolo, agregando grficos, etc.
Mara Ins Parnisari (maineparnisari@gmail.com)
Ezequiel Prez Dittler
Pgina 73 de 74
HISTORIAL DE CAMBIOS
Historial de cambios
08/03/2015 Versin inicial
Pgina 74 de 74