Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin y fundamentos
Introduccin a SQL
Modelo Entidad / Relacin
Modelo relacional
Diseo relacional: formas normales
Consultas
Clculo relacional
lgebra relacional
Implementacin de bases de datos
Estructura fsica: campos y registros
Indexacin
ndices simples
rboles B
Hashing
1
Clculo y lgebra relacional
Qu son?
Dos formalismos lgico-matemticos para escribir consultas
Hasta cierto punto equivalentes a SQL pero permitiendo asegurar
la consistencia matemtica
Inicialmente pueden resultar ms complejos que SQL, pero llegados
a un punto de soltura, ayudan a despejar dudas mejor que en SQL
(pues lgica & matemticas son ms universales que SQL, y adems
en el fondo se escriben ms rpido)
Clculo y lgebra preceden histricamente a SQL
Nuestros objetivos en esta parte del curso
Escribir consultas (descritas en castellano) en clculo y lgebra
Dar el resultado de una consulta en clculo o lgebra
Traducir consultas entre clculo, lgebra y SQL
Entender diferencias de optimizacin en diferentes formas de formular
una misma consulta
2
Clculo y lgebra relacional (cont)
Formalismos para expresar operaciones de recuperacin sobre una BD
en modelo relacional
Clculo es declarativo, lgebra es procedural
3
Clculo y lgebra relacional (cont)
Utilidad del clculo relacional
Es ms adecuado para establecer y verificar propiedades formales,
la consistencia de los modelos relacionales y sus formalismos
Es til para verificar detenidamente la correccin de aspectos complejos
o delicados en ciertas consultas que lo precisen
La creacin original del modelo relacional se fundamenta en el clculo relacional
Interesa entenderlo para una comprensin ms profunda del modelo relacional
y el fundamento de la tecnologa de bases de datos
Utilidad del lgebra relacional
Se utiliza con fines ms prcticos; es ms manejable que SQL para disear
consultas complejas
Los motores de SQL basan su representacin interna de las consultas
en lgebra relacional (SQL se parsea a una estructura interna de lgebra)
4
Temario
Introduccin y fundamentos
Introduccin a SQL
Modelo Entidad / Relacin
Modelo relacional
Diseo relacional: formas normales
Consultas
Clculo relacional
lgebra relacional
Implementacin de bases de datos
Estructura fsica: campos y registros
Indexacin
ndices simples
rboles B
Hashing
5
Clculo relacional
Subconjunto del clculo de predicados de primer orden
Una consulta bsica tiene la forma { t | cond (t) }, donde
t representa una variable de tupla
cond es una expresin condicional
La expresin representa (literalmente) un conjunto de tuplas
que cumplen la condicin
6
Forma general de una consulta
{ variables | condicin }
7
Variables de una consulta
Representan tuplas de esquemas relacionales
Pueden ser una o ms
{ t1, t2, , tn | condicin }
Pueden indicarse atributos especficos de las variables
(y mezclar variables con y sin atributos)
{ t1 . A, t1 . B, t1 . C, t2, , tn | condicin } /* A, B, C atributos de t1 */
8
Condicin de una consulta
Es una expresin (frmula) de clculo de predicados de primer orden
Puede ser (definicin recursiva):
1. Una frmula atmica
a) R(t), donde R es un esquema relacional, y t es una variable de tupla
b) t1 . A op t2 . B o bien t1 . A op c donde
t1 y t2 son variables de tupla
A y B son atributos, c es una constante
op es un operador de comparacin: =, <, , >, , /* Se puede ampliar */
2. Operadores and, or, not aplicados a frmulas
3. t, t aplicados a frmulas
10
Resultado de una consulta
El resultado de una consulta en clculo relacional es un conjunto de tuplas
Cuyos atributos son la unin de los atributos de todas las variables de tupla,
ms los atributos indicados directamente
Por ejemplo, dados los esquemas:
Vuelo (nmero, origen, destino, hora)
Aeropuerto (cdigo, ciudad)
Y la consulta:
{ v.nmero, a | Vuelo(v) and Aeropuerto(a) and v.origen = a.cdigo}
Los atributos de las tuplas de la consulta son:
( nmero, cdigo, ciudad )
v . nmero a
11
Correspondencia con SQL
Variables de consulta Los trminos que siguen a SELECT (con DISTINCT)
Salvo que en SELECT no hay variables de tuplas, slo campos
Expresiones no seguras
Devuelven infinitas tuplas
Ejemplo: { t | not Vuelo(t) }
Solucin: evitarlas! La caracterizacin de consultas seguras y no seguras
es compleja no profundizaremos en ello en este curso
Las equivalencias entre los diferentes formalismos (clculo, lgebra, clculo
de tuplas vs. de dominio) se dan con salvedad de las expresiones no seguras
13
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
14
Temario
Introduccin y fundamentos
Introduccin a SQL
Modelo Entidad / Relacin
Modelo relacional
Diseo relacional: formas normales
Consultas
Clculo relacional
lgebra relacional
Implementacin de bases de datos
Estructura fsica: campos y registros
Indexacin
ndices simples
rboles B
Hashing
15
lgebra relacional
Expresa consultas en forma de operaciones a realizar para obtener las
tuplas deseadas
A diferencia del clculo relacional, en el que se expresan las condiciones que
deben cumplir las tuplas que se desean obtener
Por este motivo el lgebra se considera procedural, y el clculo declarativo
16
Operaciones propias de BDs
Seleccin
Proyeccin
Renombrado
Joins
17
Select: condicin (R)
Operacin horizontal: filtra tuplas de una relacin
Las que cumplen una condicin
El operando R puede ser un esquema relacional, o una expresin de lgebra
Por tanto un conjunto de tuplas en cualquier caso
Esto es as para los operandos de todas las operaciones (lo sobreentendemos pues en adelante)
La condicin puede ser:
Una comparacin simple A op B o bien A op c donde:
A y B son atributos, c es una constante
op es un operador de comparacin: =, <, , >, , (se pueden ampliar)
Operadores and, or, not, aplicados a otras condiciones
Es decir, las condiciones son como las del clculo relacional, salvo que
No se usan variables de tupla
No se usan condiciones de esquema (en su lugar aparecen nombres de esquemas en algn punto)
No se usan cuantificadores y
18
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
19
Algunas propiedades de
|c(R)|
? |R|
20
Proyeccin: atributos (R)
Operacin vertical: se filtran atributos de una relacin
21
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
|X (R)| ? |R|
no es conmutativa
X(Y(R)) y Y(X(R)) slo seran ambas correctas si X = Y
23
Renombrado: y
1. Renombrado como expresin
De atributos: B1, B2, , Bn (R) renombra los atributos de R a B1, , Bn
De algunos atributos: A1/B1, , Ak/Bk (R)
De esquemas y atributos: S (B1, , Bn) (R)
til para distinguir atributos que tienen el mismo nombre
en las condiciones de joins y
nombre expresin
de esquema de lgebra
24
Ejemplos
25
Join
26
Producto cartesiano R S
27
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
Redundancia:
desparecer en natural join
28
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
{ (123, Mara, 789, 165, 07-01-11, 210),
(123, Mara, 123, 345, 20-12-10, 170),
(123, Mara, 789, 321, 15-12-10, 250),
En general no tiene mucho sentido
(123, Mara, 456, 345, 03-11-10, 190),
(y el coste es alto!): lo lgico sera
(456, Pedro, 789, 165, 07-01-11, 210),
conectar las dos tablas con alguna
(456, Pedro, 123, 345, 20-12-10, 170),
condicin select, join
(456, Pedro, 789, 321, 15-12-10, 250),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 123, 345, 20-12-10, 170),
(789, Isabel, 789, 321, 15-12-10, 250),
(789, Isabel, 456, 345, 03-11-10, 190) }
29
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
DniPASAJERO
= DniPasajero
(PASAJERO
RESERVA Dni / DniPasajero (RESERVA))
{ (123, Mara, 123,
789, 345,
165, 20-12-10,
07-01-11, 170),
210),
(123, Pedro,
(456, Mara, 456,
123, 345, 03-11-10,
20-12-10, 190),
170),
(123, Isabel,
(789, Mara, 789, 165,
321, 07-01-11,
15-12-10, 210),
250),
(123, Isabel,
(789, Mara, 789,
456, 321,
345, 15-12-10,
03-11-10, 250)
190),}
(456, Pedro, 789, 165, 07-01-11, 210),
(456, Pedro, 123, 345, 20-12-10, 170),
(456, Pedro, 789, 321, 15-12-10, 250),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 123, 345, 20-12-10, 170),
(789, Isabel, 789, 321, 15-12-10, 250),
(789, Isabel, 456, 345, 03-11-10, 190) }
30
Algunas propiedades de
|R S| ?= |R| |S|
es conmutativo y asociativo
31
Join Rcondicin S
Ahora s R condicin S es equivalente a condicin (R S)
Natural join: equijoin donde slo se incluye un atributo por cada par emparejado
Notacin RS sin indicar condicin: la condicin es de igualdad entre todos los
atributos comunes a R y S
Dni = DniPasajero
PASAJERO (PASAJERO Dni / DniPasajero (RESERVA))
RESERVA
{ (123, Mara, 345,
123, 20-12-10,
345, 20-12-10,
170),170),
(456, Pedro, 345,
456, 03-11-10,
345, 03-11-10,
190),190),
(789, Isabel, 165,
789, 07-01-11,
165, 07-01-11,
210),210),
(789, Isabel, 321,
789, 15-12-10,
321, 15-12-10,
250) 250)
} }
33
Ejemplos
VUELO AEROPUERTO PASAJERO RESERVA
Numero Origen Destino Salida Codigo Ciudad Dni Nombre Dni Numero Fecha Precio
345 MAD CDG 12:30 MAD Madrid 123 Mara 789 165 07-01-11 210
321 MAD ORY 19:05 LGW Londres 456 Pedro 123 345 20-12-10 170
165 LHR CDG 09:55 LHR Londres 789 Isabel 789 321 15-12-10 250
903 CDG LHR 14:40 ORY Pars 456 345 03-11-10 190
447 CDG LHR 17:00 CDG Pars
PASAJERO
Vuelos entre y Pars Dni / DniPasajero (RESERVA))
(PASAJERO
RESERVA
Madrid
Dni = DniPasajero
{ (123, Mara, 123, 345, 20-12-10, 170),
R VUELO
(456, Pedro, Origen,
456, Codigo Ciudad / CiudadOrigen
345, 03-11-10, 190), (AEROPUERTO)
S Destino, Codigo Ciudad / CiudadDestino (AEROPUERTO)
R Isabel,
(789, 789, 165, 07-01-11, 210),
(789, Isabel, 789, 321, 15-12-10, 250) }
CiudadOrigen = Madrid and CiudadDestino = Pars (S)
Nombre, fecha y destino de viaje de todos los pasajeros que vuelan desde Madrid
R VUELO Origen = Codigo and Ciudad = Madrid AEROPUERTO
S R Destino, Codigo Ciudad / CiudadDestino (AEROPUERTO)
Nombre, Fecha, CiudadDestino (R RESERVA PASAJERO)
34
Algunas propiedades de
Dados R (A1, , An) y S (B1, , Bm)
|R c S| ? |R| |S|
35
Operaciones de conjuntos
Unin
Interseccin
Diferencia
36
Operaciones de conjuntos
R S, R S, R S
R y S deben tener el mismo n y dominio de los atributos
(unin-compatible)
37
Algunas propiedades de y
Dados R (A1, , An) y S (B1, , Bn)
R S y R S tienen n? atributos
? |R S| ? |R| + |S|
max(|R|,|S|)
38
Algunas propiedades globales ms
Las operaciones binarias (excepto la diferencia de conjuntos) se pueden
generalizar a operaciones n-arias
De forma obvia por asociatividad de las operaciones binarias
39
Operaciones adicionales
Son extensiones externas al lgebra relacional propiamente dicha
Se utilizan por motivos prcticos
Proyeccin generalizada
Admite operaciones sobre los atributos: f1(X1), , fn(Xn) (R)
donde Xi son conjuntos de atributos de R, y fi son funciones sobre ellos
Agrupacin y agregacin
A1, , An G f1(B1), , fn(Bn) (R)
donde Ai y Bi son atributos de R, y fi son Count, Sum, Avg, Max, Min
Join externo
Incluyen tuplas de uno u otro operando o ambos (left / right / full), las que no
tienen tupla asociada en el otro conjunto
Se ponen NULLs en los atributos que corresponderan al otro esquema
Y otras variantes: semijoin, antoijoin, divisin, unin externa
Limitacin: el lgebra relacional no tiene iteracin/recursin (tampoco SQL)
P.e. no es posible calcular la raz de un rbol, distancias en una red social, etc.
40
Correspondencia con SQL
atributos (condicin (R)) SELECT atributos FROM R WHERE condicin
A / C (A, B (condicin (R)) SELECT A AS C, B FROM R WHERE condicin
S (atributos (condicin (R)) CREATE VIEW S AS SELECT atributos FROM R
WHERE condicin
atributos (condicin (R S)) SELECT atributos FROM R NATURAL JOIN S
WHERE condicin
atributos (R condicin S)) SELECT atributos FROM R JOIN S
ON condicin // O bien: WHERE condicin
atributos (condicin (R S)) SELECT atributos FROM R, S
WHERE condicin
R S, R S, R S R UNION S, R INTERSECT S, R EXCEPT S
atributos G Count(A), Sum(B) (R) SELECT Count(A), Sum(B) FROM R
GROUP BY atributos