Está en la página 1de 40

1

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
Compresin
2
Clculo y lgebra relacional
Formalismos para expresar operaciones de recuperacin sobre una BD
en modelo relacional
Clculo es declarativo, lgebra es procedural
Clculo y lgebra son formalismos distintos pero lgicamente equivalentes
Toda expresin de clculo se puede expresar en lgebra y viceversa (Th Codd)
Es decir, permiten expresar las mismas consultas
Un lenguaje de consulta es completo si permite expresar cualquier consulta
del clculo relacional
Generalmente los SGBDs proporcionan un lenguaje completo con extensiones
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
Compresin
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
Ejemplo: { t | Vuelo(t) and t.origen = LHR }
Pero se pueden formular consultas ms elaboradas
Vamos a ver la forma general
6
Forma general de una consulta
{ variables | condicin }
7
Variables de una consulta
Representan tuplas de esquemas relacionales
Pueden ser una o ms
{ t
1
, t
2
, , t
n
| condicin }
Pueden indicarse atributos especficos de las variables
(y mezclar variables con y sin atributos)
{ t
1
. A, t
1
. B, t
1
. C, t
2
, , t
n
| condicin } /* A, B, C atributos de t
1
*/
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) t
1
. A op t
2
. B o bien t
1
. A op c donde
t
1
y t
2
son variables de tupla
A y B son atributos, c es una constante
op es un operador de comparacin: =, <, s, >, >, = /* Se puede ampliar */
2. Operadores and, or, not aplicados a frmulas
3. t, -t aplicados a frmulas
Ejemplo: supongamos Usuario (nombre, nick), Contacto (usuario1, usuario2)
Usuario (u
1
)
u
1
. nombre = Mara
and { u
2
. nombre |
cont . usuario1 = u
2
. nick
- u
1
- cont ( Contacto (cont) Usuario (u
2
)
and and cont . usuario2 = u
1
. nick
and
and ) }
9
Variables en una consulta
En una condicin slo pueden aparecer dos tipos de variables:
Las variables propias de la consulta
Variables cuantificadas con o - dentro de la condicin
Todas deben llevar una condicin de tipo de esquema R(t)
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 )

La condicin filtra qu tuplas exactamente se incluyen en ese conjunto
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
Condiciones de tipo R(t) Equivale a R as t en la clusula FROM
Pero no se concreta si es JOIN, producto cartesiano, etc.
Condiciones con - y Se pueden expresar con EXISTS, SOME y ALL
La mayora de las veces - se traduce simplemente
en un esquema en FROM, que no aparece en SELECT
Si es difcil expresar un , se puede jugar con - y negacin
Otras condiciones Aparecen tras WHERE, ON, etc.
Pueden volverse implcitas en un NATURAL JOIN
En principio no es comn contemplar directamente en clculo relacional (pero se puede):
Operaciones de conjuntos: unin, interseccin, diferencia, pertenencia
Operaciones de agregacin: COUNT, AVG, MAX, etc.
Vistas y consultas anidadas
ORDER BY no tiene sentido ya que el orden de tuplas no existe en el modelo relacional
12
Expresiones no seguras
Se suele distinguir entre clculo de tuplas (que hemos visto) y de dominio
La diferencia es esencialmente de notacin y son prcticamente equivalentes
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
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
Vuelos entre Charles de Gaulle y Heathrow
Hora de salida de los vuelos entre Charles de Gaulle y Heathrow
Vuelos que cubren el trayecto Charles de Gaulle Heathrow en cualquier sentido
Nombre, fecha y destino de viaje de todos los pasajeros que vuelan desde Madrid
Vuelos entre Madrid y Pars
Vuelos que no tienen ninguna reserva

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
Compresin
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
El resultado de una consulta en lgebra relacional es un conjunto de tuplas
Igual que en clculo
Tres tipos de operacin
Especficas de BD: seleccin, proyeccin, renombrado, join y sus variantes
De conjuntos: unin, interseccin, diferencia, producto cartesiano
Extensiones: proyeccin generalizada, join externo, agregacin
Unarias Binarias
16
Operaciones propias de BDs
Seleccin
Proyeccin
Renombrado
Joins
Divisin (la omitiremos, se puede derivar
de otras operaciones)
17
Select: o
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: =, <, s, >, >, = (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
Vuelos entre Charles de Gaulle y Heathrow
o
Origen = CDG and Destino = LHR
(VUELO)
{ (903, CDG, LHR, 14:40), (447, CDG, LHR, 17:00) }
Reservas por menos de 200
o
Precio < 200
(RESERVA)
{ (123, 345, 20-12-10, 170), (456, 345, 03-11-10, 190) }

VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
19
Los atributos de o
c
(R) y los de R son
|o
c
(R)| ? |R|
o es conmutativa: o
c
(o
d
(R)) = o
d
(o
c
(R)) = o
c and d
(R)
Algunas propiedades de o
los mismos
s
20
Proyeccin: t
atributos
(R)
Operacin vertical: se filtran atributos de una relacin
Los atributos deben ser un subconjunto de los atributos de R
Si el conjunto de atributos de la proyeccin no contiene ninguna clave,
pueden repetirse tuplas
Se eliminan las duplicaciones en tal caso (puesto que se trata de un conjunto)
Como ya sabemos, los SGBD no necesariamente aplican esto de forma estricta

21
Ejemplos
Ciudades con aeropuerto
t
Ciudad
(AEROPUERTO)
{ (Madrid), (Londres), (Pars) }
Aeropuertos con conexin entre s
t
Origen, Destino
(VUELO)
{ (MAD, CDG), (MAD, ORY), (LHR, CDG), (CDG, LHR) }
Nmero de los vuelos con salida desde Madrid-Barajas
t
Numero
(o
Origen = MAD
(VUELO))
{ (345), (321) }
VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
22
t
X
(t
Y
(R)) = t
X
(R)
Siempre y cuando X c Y, pues en otro caso la expresin es incorrecta
|t
X
(R)| ? |R|
X es una superclave de R |t
X
(R)| ? |R|
t no es conmutativa
t
X
(t
Y
(R)) y t
Y
(t
X
(R)) slo seran ambas correctas si X = Y
Lo cual no tendra mucho sentido pues t
X
y t
Y
seran redundantes
=
Algunas propiedades de t
s
23
nombre
de esquema
expresin
de lgebra
Renombrado: y
1. Renombrado como expresin
De atributos:
B
1
, B
2
, , B
n

(R) renombra los atributos de R a B
1
, , B
n

De algunos atributos:
A
1
/B
1
, , A
k
/B
k

(R)
De esquemas y atributos:
S (B
1
, , B
n
)
(R)
til para distinguir atributos que tienen el mismo nombre
en las condiciones de joins y o
2. Renombrado como asignacin: S (B
1
, , B
n
) R, S R
til para descomponer expresiones complejas
24
Producto cartesiano R S
Tambin llamado cross join
Es la misma operacin que en lgebra de conjuntos
Pero en vez de formar pares de tuplas ((a
1
, , a
n
), (b
1
, , b
m
)),
se concatenan los atributos de las tuplas (a
1
, , a
n
, b
1
, , b
m
)

25
Redundancia:
desparecer en natural join
Ejemplos
Vuelos que salen de Pars
o
Origen = Codigo and Ciudad = Pars
(VUELO AEROPUERTO)
{ (903, CDG , LHR, 14:40, CDG , Pars),
(447, CDG , LHR, 17:00, CDG , Pars) }
VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
26
Ejemplos
VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
En general no tiene mucho sentido
(y el coste es alto!): lo lgico sera
conectar las dos tablas con alguna
condicin select, join
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),
(123, Mara, 456, 345, 03-11-10, 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) }

27

{ (123, Mara, 789, 165, 07-01-11, 210),
(123, Mara, 123, 345, 20-12-10, 170),
(123, Mara, 789, 321, 15-12-10, 250),
(123, Mara, 456, 345, 03-11-10, 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) }

PASAJERO RESERVA o
Dni = DniPasajero
(PASAJERO
Dni / DniPasajero
(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),
(123, Mara, 456, 345, 03-11-10, 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) }

o
Dni = DniPasajero
(PASAJERO
Dni / DniPasajero
(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),
(123, Mara, 456, 345, 03-11-10, 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) }

o
Dni = DniPasajero
(PASAJERO
Dni / DniPasajero
(RESERVA))
{
(123, Mara, 123, 345, 20-12-10, 170),





(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),

(789, Isabel, 789, 321, 15-12-10, 250),
(789, Isabel, 456, 345, 03-11-10, 190) }

o
Dni = DniPasajero
(PASAJERO
Dni / DniPasajero
(RESERVA))
{ (123, Mara, 123, 345, 20-12-10, 170),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 789, 321, 15-12-10, 250) }

Ejemplos
VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
28
Algunas propiedades de
Dados R (A
1
, , A
n
) y S (B
1
, , B
m
)
|R S| ? |R| |S|
R S tiene ? atributos
es conmutativo y asociativo

n + m
=
: (R S) (A
1
, A
2
, , A
n
, B
1
, B
2
, , B
m
)
29
Join R
condicin
S
R
condicin
S es equivalente a o
condicin
(R S)
Tipos particulares de join: equijoin y natural join
Equijoin: la condicin es un and de comparaciones de igualdad entre atributos
de R y 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
O bien se puede indicar la lista de atributos a emparejar:
R
(A
1
, , A
n
),(B
1
, , B
n
)
S = t
X, A
1
, , A
n
, Y
(R
A
1
= B
1
, , A
n
= B
n
S)
Donde X son los atributos de R menos A
i
, e Y son los de S menos B
i
Tpicamente los atributos emparejados son clave externa / clave primaria
30
o
Dni = DniPasajero
(PASAJERO
Dni / DniPasajero
(RESERVA))
{ (123, Mara, 123, 345, 20-12-10, 170),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 789, 321, 15-12-10, 250) }

PASAJERO RESERVA
{ (123, Mara, 123, 345, 20-12-10, 170),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 789, 321, 15-12-10, 250) }

Ejemplos
PASAJERO RESERVA
{ (123, Mara, 345, 20-12-10, 170),
(456, Pedro, 345, 03-11-10, 190),
(789, Isabel, 165, 07-01-11, 210),
(789, Isabel, 321, 15-12-10, 250) }



VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
31
o
Dni = DniPasajero
(PASAJERO
Dni / DniPasajero
(RESERVA))
{ (123, Mara, 123, 345, 20-12-10, 170),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 789, 321, 15-12-10, 250) }

PASAJERO RESERVA
{ (123, Mara, 123, 345, 20-12-10, 170),
(456, Pedro, 456, 345, 03-11-10, 190),
(789, Isabel, 789, 165, 07-01-11, 210),
(789, Isabel, 789, 321, 15-12-10, 250) }

Ejemplos
Vuelos entre Madrid y Pars
R VUELO
Origen, Codigo

Ciudad / CiudadOrigen
(AEROPUERTO)
S R
Destino, CodigoDestino

Ciudad / CiudadDestino, Codigo / CodigoDestino
(AEROPUERTO)
o
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, CodigoDestino

Ciudad / CiudadDestino, Codigo / CodigoDestino
(AEROPUERTO)
t
Nombre, Fecha, CiudadDestino
(R RESERVA PASAJERO)






VUELO AEROPUERTO
Numero Origen Destino Salida Codigo Ciudad
345 MAD CDG 12:30 MAD Madrid
321 MAD ORY 19:05 LGW Londres
165 LHR CDG 09:55 LHR Londres
903 CDG LHR 14:40 ORY Pars
447 CDG LHR 17:00 CDG Pars
PASAJERO RESERVA
Dni Nombre Dni Numero Fecha Precio
123 Mara 789 165 07-01-11 210
456 Pedro 123 345 20-12-10 170
789 Isabel 789 321 15-12-10 250
456 345 03-11-10 190
32
Algunas propiedades de
Dados R (A
1
, , A
n
) y S (B
1
, , B
m
)
R
c
S tiene ? atributos
|R
c
S| ? |R| |S|
La selectividad del join es la tasa |R
c
S| / |R| |S|
es asociativo y conmutativo (conmutando/asociando adecuadamente
las condiciones del join)

s
n + m : (R
c
S) (A
1
, , A
n
, B
1
, , B
m
)
33
Operaciones de conjuntos
Unin
Interseccin
Diferencia
Producto cartesiano (ya visto)
34
Operaciones de conjuntos
R S, R S, R S
R y S deben tener el mismo n y dominio de los atributos
(unin-compatible)
Esto no es as con el producto cartesiano, que no lo precisa
La definicin es la misma que en lgebra de conjuntos
35
Dados R (A
1
, , A
n
) y S (B
1
, , B
n
)
R S y R S tienen ? atributos
max(|R|,|S|) ? |R S| ? |R| + |S|
|R S| ?
y son conmutativos y asociativos
o
c
(R) o
d
(S) = o
c and d
(R S)
o
c
(R) o
d
(R) = o
c or d
(R)
min( , ) s
s s
n
Algunas propiedades de y
|R| |S|
36
Las operaciones binarias (excepto la diferencia de conjuntos) se pueden
generalizar a operaciones n-arias
De forma obvia por asociatividad de las operaciones binarias
Las operaciones o, t, , , forman un conjunto completo de operaciones
Las dems se pueden derivar de ellas:

o
c

t o
Algunas propiedades globales ms
37
Operaciones adicionales
Son extensiones externas al lgebra relacional propiamente dicha
Se utilizan por motivos prcticos
Proyeccin generalizada
Admite operaciones sobre los atributos: t
f
1
(X
1
), , f
n
(X
n
)
(R)
donde X
i
son conjuntos de atributos de R, y f
i
son funciones sobre ellos
Agrupacin y agregacin
A
1
, , A
n
G f
1
(B
1
), , f
n
(B
n
) (R)
donde A
i
y B
i
son atributos de R, y f
i
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, antijoin, 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.
38
Correspondencia con SQL
t
atributos
(o
condicin
(R)) SELECT atributos FROM R WHERE condicin

A / C
(t
A, B
(o
condicin
(R)) SELECT A AS C, B FROM R WHERE condicin
S (t
atributos
(o
condicin
(R)) CREATE VIEW S AS SELECT atributos FROM R
WHERE condicin
t
atributos
(o
condicin
(R S)) SELECT atributos FROM R NATURAL JOIN S
WHERE condicin
t
atributos
(R
condicin
S)) SELECT atributos FROM R JOIN S
ON condicin // O bien: WHERE condicin

t
atributos
(o
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
Para no hacerlo repetitivo omitimos aqu DISTINCT
(pero debe sobreentenderse!)
39
Optimizacin de consultas
El coste de una consulta puede variar mucho segn cmo se exprese
Ejemplo: o
Origen = LCG
(o
Destino = LHR
(VUELO))
o
Destino = LHR
(o
Origen = LCG
(VUELO))
Objetivos generales
Reducir el tamao promedio del resultado de las expresiones
Formar subexpresiones comunes dentro de o entre consultas
para ejecutarlas una sola vez
Estrategias generales
Introduccin de select hacia subexpresiones ms internas
El tamao de un select es menor que el del conjunto al que se aplica;
cuanto ms internamente se site el select, antes tiene lugar esta reduccin
Situar los select ms restrictivos ms al interior que otros menos selectivos
Evitar productos cartesianos en las operaciones ms internas;
es la operacin que genera conjuntos ms grandes
Es preferible un join R
c
S que un producto cartesiano o
c
(R S)
Introducir proyecciones hacia el interior para operar slo con los atributos realmente
necesarios; la proyeccin es poco costosa y puede eliminar tuplas duplicadas
Cul es ms
eficiente?
40
Optimizacin de consultas (cont)
Algunas manipulaciones particulares ms para conseguir las estrategias generales
Generacin de subexpresiones ms pequeas cuando:
a) Podran reutilizarse
b) Podran optimizarse por separado
c) Podran dar lugar a select con condiciones de un solo atributo sobre esquemas
que se pueden optimizar mediante ndices
Por ejemplo
o
A and B
(R) = o
A
(o
B
(R)) = o
B
(o
A
(R))
o
A or B
(R) = o
A
(R) o
B
(R)
o
cond
(R S) = o
cond
(R) o
cond
(S)
o
cond
(R S) = o
cond
(R) o
cond
(S) = o
cond
(R) S = R o
cond
(S)
o
cond
(R S) = o
cond
(R) o
cond
(S) = o
cond
(R) S
En sentido inverso, puede ser eficiente agregar condiciones en un solo select
Si cond no implica atributos de S, o
cond
(R S) = o
cond
(R) S (dem para )
Otras tcnicas de planificacin/optimizacin de la ejecucin de consultas en
base a la estimacin de costes de expresiones, estadsticas y estimaciones
(tamao) de los esquemas y atributos implicados // No profundizamos en ello

También podría gustarte