Está en la página 1de 35

Algebra Relacional

Ing. Fabián Ruano


Definición
 Lenguaje de consulta procedimental.
 Consta de Conjunto de operaciones que

toman como entrada una o dos relaciones y


producen como resultado una nueva relación.
 Operaciones Fundamentales: selección,

proyección, unión, diferencia de conjuntos,


producto cartesiano y renombramiento.
 Otras Operaciones: Intersección de conjuntos,

reunión natural, división y asignación.


Tipos de operaciones
 Unarias: como su nombre lo indica operan
sobre una sola relación:
◦ Selección
◦ Proyección
◦ Renombramiento
 Binarias: operan sobre dos relaciones:
◦ Unión
◦ Diferencia de conjuntos
◦ Producto cartesiano
Operación de Selección
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 Gómez

σnombre = <<Maria>> ˅ apellido =


<<Gómez>> (PERSONA)
Comparaciones en el predicado (2/2)
El predicado de la selección 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)
Observación: dado que el valor especial Nulo
indica “valor desconocido o inexistente”,
cualquier comparación con un valor nulo es
Falsa.
Operación de proyección
Es una operación unaria que devuelve su
relación 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 relación
tiene muchos mas atributos.

Πnombres, apellidos (PERSONA)


Composición de operaciones
Las operaciones tienen como entrada
relaciones y dan como salida otras relaciones,
por tanto es posible que la salida de una
operación sea el ingreso de otra.
Por ejemplo: Obtener nombres y apellidos
sólo de las mujeres registradas en la BD.

πnombres, apellidos (
σgenero = <<femenino>> (PERSONA) )
Operación de Unión
Es una operación binaria que, igual que la
operación 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


Operación de Diferencia de
Conjuntos
Permite buscar tuplas que esten en una
relación 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.
Operación Producto Cartesiano
Permite combinar informacion de cualquier par
de relaciones. Se denota con el simbolo “X”.
Relación_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)
Tendríamos que: persona X curso =
(persona.perId, persona.perNombre,
curso.curID, curso.curNombre)
Operación Producto Cartesiano
Persona.perID Persona.perNombre Curso.curID Curso.curNombre
Persona_1 Juan Curso_1 Quimica
Persona_1 Juan Curso_2 Fisica
… … … …
Persona_2 Maria Curso_1 Quimica
Persona_2 Maria Curso_2 Fisica

Exige que las relaciones implicadas en la


operación tengan nombres diferentes para
evitar tener columnas con nombres idénticos.
Operación 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 añaden potencia al
algebra, pero simplifican las consultas
habituales.

Cada operación re-emplaza un conjunto de


operaciones “normales”.
- Intersección de conjuntos
- Reunión natural
- División
Intersección de conjuntos
Todos los clientes que tienen un préstamo
concedido y una cuenta abierta:
Πnombre-cliente(prestatario) ∩ Πnombre-
cliente(impositor)
Se denota por el símbolo ∩. Una intersección
expresada mediante operaciones básicas
sería:
R ∩ S = R – (R – S)
Reunión natural (natural join)
(1/2)
Operación binaria que permite combinar
ciertas selecciones y un producto cartesiano
en una sola operación. Se denota por el
símbolo: ⋈ 
La reunión natural expresada en operaciones
básicas equivale a:
R ⋈ S =
ΠRUS (σr.A1 = s.a1 ˄ r.a2 = s.a2 ˄ … ˄ r.an = s.an (R x
S) )
Reunión natural (natural join)
(2/2)
Teniendo por ejemplo la selección de clientes
con préstamos:
Πnombre-cliente, préstamo (σprestatario.num_prestamo =
prestamo.num_prestamo (prestatario x préstamo))

Podemos expresar lo mismo mediante una


reunión natural, asi:
Πnombre-cliente, préstamo (prestatario |X| préstamo)
Asignación
Cuando resulta conveniente escribir una
expresion por partes o cuando se repite parte
de una expresión se puede hacer uso de una
“variable” temporal mediante asignación.
temp1  Πr,s(R)
temp2  Πr,s((temp1 x S) – Πr-s,s(R))
resultado = temp1 – temp2
División
Útil en consultas que tienen la expresión “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 relación resultado solo tiene como columna la
columna
nombre-cliente.
Algebra Relacional Extendida
Ampliaciones de las operaciones del algebra
relacional:
 Proyección generalizada
 Funciones de agregación
 Reunión externa
 Valores nulos
Proyección generalizada
Esta función amplía la proyección
permitiendo que se utilicen funciones
aritméticas en la lista de proyección.
ΠF1, F2, F3 (E)
Ejemplo: teniendo una relación de tarjetas de
crédito con el cupo gastado, obtener el cupo
disponible.
Πnumero_tarjeta, (cupo_total – cupo_gastado) AS cupo_disponible
(TarjetaCrédito)
Funciones agregación (1/4)
Toman una colección de valores y retornan
un único valor.
 SUM: retorna la suma de los valores
 AVG: retorna la media de los valores
 MIN: retorna el mínimo de los valores
 MAX: retorna el máximo de los valores
 COUNT: retorna el número de elementos del
conjunto
Funciones de agregación (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 agregación (3/4)
Suma de los sueldos por sucursal:
nombre-sucursal G nombre-sucursal, SUM(sueldo)
(Empleados)
La anterior función 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
Leganés 3.100
Navacerrada 8.100
Funciones de agregación (4/4)
Forma general:
g1, g2…gn G f1(a1), f2(a2).. Fm(am)(E)
Donde:
g1,g2,…gn constituye la lista de atributos
que indica como se realiza la agrupación.
fi es una función de agregación y ai es un
nombre del atributo.
Reunión externa (outer join)
(1/5)
Es una extensión de la operación reunión
para trabajar con información que falta.
Teniendo:
Empleado (nombre-empleado, calle,
ciudad)
TrabajoTiempoCompleto(nombre-
empleado, sueldo)
Se quiere generar una relación con nombre-
empleado, calle, ciudad y sueldo (este ultimo
sólo si el empleados es tiempo-completo)
Reunión externa (outer join)
(2/5)
Si hacemos:
Empleados |X| TrabajoTiempoCompleto
Se perdería la información de los empleados que no
estén en la relación TrabajoTiempoCompleto. Para
ello hacemos un reunión 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
Reunión externa (outer join)
(3/5)
Reunión externa (outer join)
(4/5)
Reunión externa por la derecha es simétrica
a la reunión externa por la izquierda. Las
tuplas que no coincidan con ninguna tupla
de la relación de la izquierda se rellenan con
valores nulos. Con el mismo ejemplo pero
con reuniónexterna por la derecha: Empledos
|X[ TrabajoTiempoCompleto
Reunión externa (outer join)
(5/5)
Reunión externa completa: hace la unión entre
la reunión externa por la izquierda y la reunión
externa por la derecha. Rellena las tuplas de la
relación 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 operación (+ - * /) que


incluya uno o mas valores nulos debe
devolver nulo.
Valores Nulos (2/5)
 Cualquier comparación (<,<=, >, >=, ≠) que
incluya un valor nulo se evalúa 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
 Selección: la operación evalua el predicado, si

este devuelve cierto se añade la tupla al


resultado. Si el predicado devuelve falto o
desconocido no se añade.
 Reunión: al ser un producto cartesiano con

una selección, aplica la misma norma de la


selección.
 Proyección: trata los nulos como cualquier

otro valor al eliminar duplicados.


Valores Nulos (4/5)
 Unión, Intersección y diferencia: tratan los nulos
igual que la proyección. Se consideran iguales
las tuplas que tienen todos los campos
duplicados, incluso si algunos de los campos
tienen valores nulos en ambas tuplas.
 Proyección generalizada: Las tuplas duplicadas
que contienen valores nulos se tratan como en la
proyección
Cuando hay nulos en los atributos agregados la
operación borra los nulos del resultado antes de
aplicar la agregación.
Valores Nulos (5/5)
 Reunión externa: se comportan como las
operaciones de reunión, excepto sobre las
tuplas que no aparecen en el resultado. Estas
tuplas se pueden añadir al resultado
dependiendo del tipo de operación (]X|, |
X[ ó ]X[) añadiendo nulos.

También podría gustarte