ALGEBRA RELACIONAL
Es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.
Operaciones básicas
Cada operador del álgebra acepta una o dos relaciones y retorna una relación como resultado. σ y Π son operadores usuarios, el resto de los operadores son binarios. Las operaciones básicas del álgebra relacional son:
Selección (σ)
Permite seleccionar un subconjunto de tuplas de una relación (R), todas aquellas que cumplan la(s) condición(es) P, esto es:
Proyección (Π)
Permite extraer columnas (atributos) de una relación, dando como resultado un subconjunto vertical de atributos de la relación, esto es:
Producto cartesiano (x)
El producto cartesiano de dos relaciones se escribe como:
y entrega una relación, cuyo esquema corresponde a una combinación de todas las tuplas de R con cada una de las tuplas de S, y sus atributos corresponden a los de R seguidos por los de S.
Unión (∪)
La operación
Retorna el conjunto de tuplas que están en R, o en S, o en ambas. R y S deben ser uniones compatibles.
Diferencia (-)
La diferencia de dos relaciones, R y S denotada por:
Entrega todas aquellas tuplas que están en R, pero no en S. R y S deben ser uniones compatibles.
Estas operaciones son fundamentales en el sentido en que (1) todas las demás operaciones pueden ser expresadas como una combinación de éstas y (2) ninguna de estas operaciones pueden ser omitidas sin que con ello se pierda información.
EJERCICIO 1
Sea la siguiente base de datos:
PROVEEDORES (nro.-p, nom-p, categoría, ciud-p)
ÍTEMS (nro.-i, descripción-i, ciud.i)
PEDIDOS (nro.-p, nro-c, nro-i, cantida, precio)
Clientes (nro.-c, nom-c, ciud-c)
1. Listar los proveedores de córdoba.
π nom-p (σ ciud-p =córdoba (PROVEEDORES)
2. Listar los proveedores que proveen el ítem”i1”
π nom-p (σ nro.-i =i1) (PROVEEDORES) (ÍTEMS)
3. Listar los clientes que solicitan ítems provistos por “p1”
π nom-c (σ nro-p =”p1”) (CLIENTES) (PROVEEDORES)
4. Listar los clientes que solicitan algún ítem provisto por proveedores con categoría mayor que 4.
π nom-c (CLIENTES* (π descripción –i (ÍTEMS)* ( σ categoría <4>
5. Listar los ítems pedidos por clientes de Rosario.
π nro-i (PEDIDOS)- π nro-i (PEDIDOS * σ nom-p= Rosario (PROVEEDORES))
6. Listar los pedidos en los cuales un cliente de rosario solicita artículos
fabricados en Mendoza (ciud-i =” Mendoza”).
π cantidad (PEDIDOS)* π nom-p =Rosario (PROVEEDORES)* σ ciud –i =”Mendoza” (ÍTEMS).
7. Listar los pedidos en los que el cliente “
π cantidad (σ nro-c =23) (PEDIDOS) π cantidad (π nro-c=30) (PEDIDOS)
8. Listar las ciudades en la forma (ciu1, ciu2) tales que un proveedor en ciu1 provea ítems solicitados por el cliente de ciu2.
σ Ciud-p=ciu1 (π ciud-c=ciu2)(PROVEEDORES)(CLIENTES)
9. Listar los números de proveedores cuya categoría sea mayor que la de todos los proveedores que proveen el ítem “cuadernos”
π nro-p (σ categoría> Todos proveedores) (π descripción-i =cuaderno)(PROVEEDORES)( ítems)
10. Listar los clientes que han pedido 2 o más ítems distintos.
π nom-c (σ cantidad > 2)* π nro-i > 2 (PEDIDOS)
11. Listar los proveedores que proveen a todos los clientes de córdoba una cantidad mayor que el promedio de las cantidades pedidas por los clientes de Rosario.
π nom-p (σ ciud-p=córdoba)* π cantidad> Σ cantidades (σ nom-p=
N.de cantidad
Rosario) (PROVEEDORES, PEDIDOS)
EJERCICIO 2
Sea la siguiente Base de Datos:
VUELOS (nro-vuelo, desde, hasta)
AVIÓN – UITILIZADO (nro-vuelo, tipo-avion, nro-avión)
INFO-PASAJEROS (nro-vuelo, dni, nombre, origen, destino).
Los vuelos no pueden tener más de dos escalas y no hay cambio de tipo de avión para un mismo número de vuelo.
Realizar las siguientes consultas:
1.-Listar los números de vuelos de A hasta F.
σ nro-vuelo (π desde=A, hasta=F) (VUELOS)
2.-Listar los tipos de avión que no son utilizados en ningún vuelo que pase por B
π tipo-avión (σ destino /B) (AVION-UTILIZADO)(INFO-PASAJEROS)
3.- listar los pasajeros y números de vuelos para aquellos pasajeros que viajan de A a D pasando por B.
π nombre, nro-vuelo (σ origen=A, π destino=D) (INFO-PASAJEROS)
4.- listar los tipos de avión que son utilizados en todos los vuelos que pasan por C.
π tipo-avión (σ destino=C)(AVION-UTILIZADO)(INFO-PASAJEROS)
EJERCICIO 3
Sea la siguiente Base de Datos:
Empleado (nro_ empleado, nombre, domicilio, localidad, antigüedad)
Función (nro_funcion, descripción)
Planta (nro_planta, descripción, localidad)
Tarea (nro_ empleado, nro_funcion)
Organización (nro_planta, nro_función)
Trabaja (nro_empleado, nro_planta)
Distancia (localidad 1, localidad 2, distancia)
Describir en Algebra Relacional la siguiente consulta:
Listar los nombres de los empleados que viven más lejos de su lugar de trabajo.
π nombre (σ distancia>todos) (EMPLEADO)(DISTANCIA).
EJERCICIO 4
Sea la siguiente Base de Datos:
Artículos (nro_art, descripción, peso, precio_unit, fabricado_en)
Facturas (nro_fact, nro_cli, fecha, fecha_venc)
Detalles factura (nro_fact, nro_art,cant)
Clientes (nro_cli, nombre, domicilio, ciudad, país, ocupación)
Expresar la siguiente consulta en Algebra Relacional:
Listar los nombres de los clientes que hayan comprado al menos dos artículos distintos.
(π nombre (σ cant>2)* π descripción)(CLIENTES, DETALLE FACTURA, ARTICULOS).