Está en la página 1de 35

Algebra Relacional

Ing. Fabin Ruano

Definicin

Lenguaje de consulta procedimental.


Consta de Conjunto de operaciones que toman
como entrada una o dos relaciones y producen
como resultado una nueva relacin.
Operaciones Fundamentales: seleccin,
proyeccin, unin, diferencia de conjuntos,
producto cartesiano y renombramiento.
Otras Operaciones: Interseccin de conjuntos,
reunin natural, divisin y asignacin.

Tipos de operaciones

Unarias: como su nombre lo indica operan


sobre una sola relacin:
Seleccin
Proyeccin
Renombramiento

Binarias: operan sobre dos relaciones:


Unin
Diferencia de conjuntos
Producto cartesiano

Operacin de Seleccin
Selecciona tuplas que satisfacen un
predicado dado.

predicado (RELACION)
Por ejemplo: seleccionar de la tabla
persona todas las personas con nombre
igual a Maria

nombre = <<Maria>> (PERSONA)

Comparaciones en el predicado
(1/2)
Se permiten operaciones que utilizan:
=, , <, , >,
Se pueden crear predicados mas grandes
usando conectias o () e y () .
Por ejemplo: seleccionar de la tabla
persona todas las personas con nombre
igual a Maria apellido igual a Gmez

nombre = <<Maria>> apellido =


<<Gmez>> (PERSONA)

Comparaciones en el predicado
(2/2)
El predicado de la seleccin puede incluir
comparaciones entre dos atributos.
Por ejemplo: seleccionar de la tabla persona
todas las personas que sean su propio jefe

nombre-persona = nombre-jefe(Persona)
Observacin: dado que el valor especial
Nulo indica valor desconocido o
inexistente, cualquier comparacin con un
valor nulo es Falsa.

Operacin de proyeccin
Es una operacin unaria que devuelve su
relacin de argumentos excluyendo algunos.

lista_atributos (RELACION)
Por ejemplo: necesitamos obtener de la tabla
personal los nombres y apellidos de las
personas en la base de datos. Pero la relacin
tiene muchos mas atributos.

nombres, apellidos (PERSONA)

Composicin de operaciones
Las operaciones tienen como entrada
relaciones y dan como salida otras
relaciones, por tanto es posible que la salida
de una operacin sea el ingreso de otra.
Por ejemplo: Obtener nombres y apellidos
slo de las mujeres registradas en la BD.

nombres, apellidos (
genero = <<femenino>> (PERSONA) )

Operacin de Unin
Es una operacin binaria que, igual que la
operacin de conjuntos, une las tuplas de las
relaciones implicadas. Se denota con U.

nombre-cliente (Prestamo) U nombre-cliente


(CuentaAhorros)
Para que una Union sea posible se debe asegurar:
Igual aridad de relaciones: igual numero atributos
Dominios i-esimos de ambas relaciones deben ser
iguales para todo i

Operacin de Diferencia de
Conjuntos
Permite buscar tuplas que esten en una
relacin pero no en la otra. Se denota con el
signo -
Por ejemplo clientes del banco que tengan
cuenta pero que no tengan prestamos

nom-cliente (Cuenta) - nom-cliente


(Prestamo)
Similar a la union para realizar una
diferencia se debe asegurar igual aridad y
dominios iguales para los i-esimos atributos
de las relaciones.

Operacin Producto
Cartesiano
Permite combinar informacion de cualquier par
de relaciones. Se denota con el simbolo X.
Relacin_A X Relacion_B
Por ejemplo el producto cartesiano entre
Persona y Curso las cuales se definen como
sigue:
persona = (perID, perNombre)
curso = curID, curNombre)
Tendramos que: persona X curso =
(persona.perId, persona.perNombre,
curso.curID, curso.curNombre)

Operacin Producto
Cartesiano
Persona.p Persona.perNo
erID
mbre
Persona_1
Juan
Persona_1
Juan

Curso.curID
Curso_1
Curso_2

Curso.curNom
bre
Quimica
Fisica

Persona_2
Persona_2

Curso_1
Curso_2

Quimica
Fisica

Maria
Maria

Exige que las relaciones implicadas en la


operacin tengan nombres diferentes para
evitar tener columnas con nombres
idnticos.

Operacin
renombramiento
El operador renombramiento permite ponerle
nombre a las relaciones resultado de
operaciones de algebra relacional. Se denota
con la letra

x(E)
La anterior expresion retorna la expresion E con
el nombre x. Tambien se pueden renombrar los
atributos de E.

x(a1, a2, , an)(E)

Otras operaciones
Estas operaciones no aaden potencia al
algebra, pero simplifican las consultas
habituales.
Cada operacin re-emplaza un conjunto de
operaciones normales.
- Interseccin de conjuntos
- Reunin natural
- Divisin

Interseccin de conjuntos
Todos los clientes que tienen un prstamo
concedido y una cuenta abierta:

nombre-cliente(prestatario) nombrecliente(impositor)
Se denota por el smbolo . Una
interseccin expresada mediante
operaciones bsicas sera:
R S = R (R S)

Reunin natural (natural


join) (1/2)
Operacin binaria que permite combinar
ciertas selecciones y un producto cartesiano
en una sola operacin. Se denota por el
smbolo:
La
reunin
natural
expresada
en
operaciones bsicas equivale a:
R S =

RUS (r.A1 = s.a1 r.a2 = s.a2 r.an = s.an (R

x S) )

Reunin natural (natural


join) (2/2)
Teniendo por ejemplo la seleccin de clientes
con prstamos:
nombre-cliente, prstamo (prestatario.num_prestamo =
prestamo.num_prestamo (prestatario x prstamo))
Podemos expresar lo mismo mediante una
reunin natural, asi:
nombre-cliente, prstamo (prestatario |X| prstamo)

Asignacin
Cuando resulta conveniente escribir una
expresion por partes o cuando se repite
parte de una expresin se puede hacer uso
de una variable temporal mediante
asignacin.
temp1 r,s(R)
temp2 r,s((temp1 x S) r-s,s(R))
resultado = temp1 temp2

Divisin
til en consultas que tienen la expresin para
todos. Por ejemplo: todos los clientes que tengan
abierta una cuenta en todas las sucursales
ubicadas en Bogot.
R1 nombre-sucursal (ciudad-sucursal = Bogot (sucursal))
R2 nombre-cliente, nombre-sucursal (cliente |X| sucursal)

Resultado = R1 R2
La relacin resultado solo tiene como columna la
columna
nombre-cliente.

Algebra Relacional
Extendida

Ampliaciones de las operaciones del algebra


relacional:
Proyeccin generalizada
Funciones de agregacin
Reunin externa
Valores nulos

Proyeccin generalizada
Esta
funcin
ampla
la
proyeccin
permitiendo que se utilicen funciones
aritmticas en la lista de proyeccin.
F1, F2, F3 (E)
Ejemplo: teniendo una relacin de tarjetas
de crdito con el cupo gastado, obtener el
cupo disponible.
numero_tarjeta, (cupo_total cupo_gastado) AS cupo_disponible
(TarjetaCrdito)

Funciones agregacin (1/4)

Toman una coleccin de valores y retornan


un nico valor.
SUM: retorna la suma de los valores
AVG: retorna la media de los valores
MIN: retorna el mnimo de los valores
MAX: retorna el mximo de los valores
COUNT: retorna el nmero de elementos del
conjunto

Funciones de agregacin
(2/4)
Suma total de sueldos
de los empleados de
la empresa:
GSUM(sueldo)
(EMPLEADOS)
Promedio de sueldos de los empleados de la
empresa:
GAVG(sueldo) (EMPLEADOS)
El mayor y menor sueldo de los empleados de
una empresa:
GMAX(sueldo), MIN(sueldo) (EMPLEADOS)

Funciones de agregacin
(3/4)
Suma de los sueldos por sucursal:
nombre-sucursal G nombre-sucursal, SUM(sueldo)
(Empleados)
La anterior funcin tomar todos los sueldos de
los empleados de una sucursal, los sumar y
los asociar a la sucursal correspondiente,
presentando un listado como el siguiente:
nombre-sucursal sum(sueldo)
Centro 5.300
Legans 3.100
Navacerrada 8.100

Funciones de agregacin
(4/4)
Forma general:
g1, g2gn G f1(a1), f2(a2).. Fm(am)(E)
Donde:
g1,g2,gn constituye la lista de atributos
que indica como se realiza la agrupacin.
fi es una funcin de agregacin y ai es un
nombre del atributo.

Reunin externa (outer


join) (1/5)
Es una extensin de la operacin reunin
para trabajar con informacin que falta.
Teniendo:
Empleado (nombre-empleado, calle,
ciudad)
TrabajoTiempoCompleto(nombreempleado, sueldo)
Se quiere generar una relacin con nombreempleado, calle, ciudad y sueldo (este
ultimo slo si el empleados es tiempocompleto)

Reunin externa (outer


join) (2/5)
Si hacemos:
Empleados |X| TrabajoTiempoCompleto
Se perdera la informacin de los empleados que no
estn en la relacin TrabajoTiempoCompleto. Para
ello hacemos un reunin externa por la
izquierda.
Empledos ]X| TrabajoTiempoCompleto
Toma todas las tuplas de Empleados y las relaciona
con las de TrabajoTiempoCompleto, si existe un
empleado
sin
su
correspondiente
en
TrabajoTiempoCompleto los campos faltantes se
completan con NULL

Reunin externa (outer


join) (3/5)

Reunin externa (outer


join) (4/5)
Reunin externa por la derecha es
simtrica a la reunin externa por la
izquierda. Las tuplas que no coincidan con
ninguna tupla de la relacin de la izquierda
se rellenan con valores nulos. Con el mismo
ejemplo pero con reuninexterna por la
derecha:
Empledos
|
X[ TrabajoTiempoCompleto

Reunin externa (outer


join) (5/5)

Reunin externa completa: hace la unin


entre la reunin externa por la izquierda y la
reunin externa por la derecha. Rellena las
tuplas de la relacin izquierda que no
coincidan con las de la derecha con valores
Nulos y viceversa. Para el ejemplo:
Empleados ]X[ TrabajoTiempoCompleto

Valores Nulos (1/5)


A tener en cuenta cuando se involucran
valores nulos en las operaciones:
Las
operaciones y comparaciones con
valores nulos deben evitarse siempre que
sea posible
Dado que el valor nulo indica desconocido o
inexistente cualquier operacin (+ - * /) que
incluya uno o mas valores nulos debe
devolver nulo.

Valores Nulos (2/5)


Cualquier comparacin (<,<=, >, >=, )
que incluya un valor nulo se evala al valor
especial desconocido.
Y: (cierto y desconocido) = desconocido

(falso y desconocido) = falso


(desconocido y desconocido) = desconocido

O: (cierto o desconocido) = cierto


(falso o desconocido) = desconocido
(desconocido o desconocido) = desconocido

Valores Nulos (3/5)


NO: (no desconocido) = desconocido
Seleccin:
la
operacin
evalua
el
predicado, si este devuelve cierto se aade
la tupla al resultado. Si el predicado
devuelve falto o desconocido no se aade.
Reunin: al ser un producto cartesiano con
una seleccin, aplica la misma norma de la
seleccin.
Proyeccin: trata los nulos como cualquier
otro valor al eliminar duplicados.

Valores Nulos (4/5)

Unin, Interseccin y diferencia: tratan los


nulos igual que la proyeccin. Se consideran
iguales las tuplas que tienen todos los campos
duplicados, incluso si algunos de los campos
tienen valores nulos en ambas tuplas.
Proyeccin
generalizada:
Las
tuplas
duplicadas que contienen valores nulos se
tratan como en la proyeccin
Cuando hay nulos en los atributos agregados la
operacin borra los nulos del resultado antes
de aplicar la agregacin.

Valores Nulos (5/5)

Reunin externa: se comportan como las


operaciones de reunin, excepto sobre las
tuplas que no aparecen en el resultado.
Estas tuplas se pueden aadir al resultado
dependiendo del tipo de operacin (]X|, |
X[ ]X[) aadiendo nulos.