OPERACIONES FUNDAMENTALES DEL ÁLGEBRA RELACIONAL Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007
Álgebra Relacional Álgebra Relacional El álgebra relacional es un lenguaje formal con una serie de operadores que trabajan sobre una o varias relaciones para obtener otra relación resultado, sin que cambien las relaciones originales. Tanto los operandos como los resultados son relaciones, por lo que la salida de una operación puede ser la entrada de otra operación. Esto permite anidar expresiones del álgebra, del mismo modo que se pueden anidar las expresiones aritméticas.
Álgebra Relacional Operaciones Fundamentales Codd, propuso 8 operadores, de los cuáles 5 son fundamentales: Selección Proyección Producto cartesiano Unión Diferencia Los operadores no fundamentales: Concatenación (join) Intersección División
Álgebra Relacional Operaciones Fundamentales Las operaciones fundamentales se subdividen en : Unarias: Operan sobre una sola relación Binarias: Operan sobre pares de relaciones
Operaciones Unarias Operaciones Fundamentales - Unarias Las operaciones Unarias son: Selección Proyección Renombramiento
Operaciones Unarias Ejemplo: Entidad Bancaria Cliente Cliente_Cuenta Prestamo Nombre_ cliente Fernando Santos Maria Plazas Nicolas Romero Direccion_ cliente Calle 13 No. 23-34 Calle 123 No. 67-45 Kra 45 No. 34-78 Ciudad_ cliente Bogota Cali Bogota Nombre_ cliente Fernando santos Maria Plazas Nicolas Romero Numero _Cuenta 123 55 68 Numero_ prestamo Nombre_ sucursal Valor 11 Galerias 15000000 12 Centro 1000000 13 Salitre 50000000 Cliente_Prestamo Sucursal Cuenta Nombre_ cliente Fernando santos Maria Plazas Nicolas Romero Numero_ Prestamo 11 12 13 Nombre_ Sucursal Ciudad_ sucursal Activos Galerias Bogota 256000000 Centro Cali 450000000 Salitre Medellin 600000000 Numero_ cuenta Nombre_ sucursal Saldo 101 Galerias 256000000 102 Centro 450000000 103 Salitre 600000000
Operaciones Unarias Operación Selección o Restricción Selecciona tuplas que satisfacen un predicado dado. Corresponde a: R WHERE condición Se utiliza la letra griega sigma minúscula (σ) para denotar la selección. El predicado aparece como subíndice de σ. La relación del argumento se da entre paréntesis a continuación de σ. Ejemplo: Seleccionar las tuplas de la relación préstamo en la sucursal «Galerías» σnombre-sucursal = «Galerías» (préstamo)
Operaciones Unarias Operación Selección Ejemplo: Hacer un listado de todos los empleados con un salario anual superior a $20 000.000 σsalario>20 000.000 (empleado) Select from Empleado WHERE salario>20 000.000 En general, se permiten las comparaciones que utilizan =,, <,, > o en el predicado de selección. Ejercicio: σvalor >10 000.000 (préstamo)
Operaciones Unarias Operación Selección Además, se pueden combinar varios predicados en uno mayor utilizando las conectivas y ( ) y o ( ). Ejemplo: Encontrar las tuplas correspondiente a préstamos de más de $10 000.000 concedidos por la sucursal de Galerías Select from préstamo WHERE nombre-sucursal=`galerías' AND valor>10.000.000 σnombre-sucursal = «Galerías» valor>10 0000.000 (préstamo)
Operaciones Unarias Operación Proyección Devuelve su relación de argumentos, excluyendo algunos argumentos. Dado que las relaciones son conjuntos, se eliminan todas las filas duplicadas. La proyección se denota por la letra griega mayúscula pi (Π). Se crea una lista de los atributos que se desea que aparezcan en el resultado como subíndice de Π. La relación de argumentos se escribe a continuación entre paréntesis.
Operaciones Unarias Operación Proyección Supóngase que se desea hacer una lista de todos los números de préstamo y del valor de los mismos, pero sin que aparezcan los nombres de las sucursales. La operación proyección permite producir esta relación. Ejemplo: La consulta para crear una lista de todos los números de préstamo y del valor de los mismos: Πnúmero-préstamo, valor (préstamo)
Operaciones Unarias Composición de operaciones relacionales Es importante el hecho de que el resultado de una operación relacional sea también una relación. Ejemplo: Realizar una consulta más compleja: «Encontrar los clientes que viven en Bogotá» Πnombre-cliente ( σciudad-cliente = «Bogotá» (cliente)) La composición de operaciones del álgebra relacional para formar expresiones del álgebra relacional es igual que la composición de operaciones aritméticas (como +, -, * y ) para formar expresiones aritméticas.
Operaciones Unarias La operación Renombramiento A diferencia de las relaciones de la base de datos, los resultados de las expresiones de álgebra relacional no tienen un nombre que se pueda utilizar para referirse a ellas. Resulta útil poder ponerles nombre; el operador renombramiento, denotado por la letra griega rho minúscula (ρ), permite realizar esta tarea. Dada una expresión E del álgebra relacional, la expresión ρx(e) devuelve el resultado de la expresión E con el nombre x.
La operación Renombramiento Ejemplo:«Averiguar los nombres de todos los clientes que viven en la misma calle y en la misma ciudad que Romero». Se puede obtener la calle y la ciudad en la que vive Romero escribiendo Π calle-cliente, ciudad-cliente (σ nombre-cliente = «Romero» (cliente))
La operación Renombramiento En la consulta siguiente se utiliza la operación renombramiento sobre la expresión anterior para darle al resultado el nombre dirección-romero y para cambiar el nombre de los atributos a calle y ciudad en lugar de calle-cliente y ciudad-cliente: Π cliente.nombre-cliente (σ cliente.calle-cliente = dirección-romero cliente.ciudad-cliente = dirección-romero.ciudad (cliente ρ dirección- Romero (calle, ciudad) (Π calle-cliente, ciudad-cliente (σ nombrecliente = «Romero» (cliente)))))
Operaciones Binarias Operaciones Fundamentales - Binarias Las operaciones Binarias son: Unión Diferencia de conjuntos Producto cartesiano Intersección Reunión natural División Asignación
Operaciones Binarias Operación Unión Realizar una consulta para averiguar el nombre de todos los clientes del banco que tienen una cuenta, un préstamo o ambas cosas. Para contestar a esta consulta hace falta la información de la relación impositor y la de la relación prestatario: Seleccionar los nombres de todos los clientes con préstamos en el banco: Πnombre-cliente (cliente_prestamo) Seleccionar el nombre de los clientes con cuenta en el banco: Πnombre-cliente (cliente_cuenta)
Operaciones Binarias Operación Unión Para contestar a la consulta hace falta la unión de estos dos conjuntos; es decir, hacen falta todos los nombres de clientes que aparecen en alguna de las dos relaciones o en ambas. Estos datos se pueden averiguar mediante la operación binaria unión, denotada, como en la teoría de conjuntos, por U. Por tanto, la expresión buscada es: Πnombre-cliente (cliente_prestamo) U Πnombre-cliente (cliente_cuenta)
Operaciones Binarias Operación Unión Por tanto, para que una operación unión r U s sea válida hay que exigir que se cumplan dos condiciones: Las relaciones r y s deben ser de la misma aridad. Es decir, deben tener el mismo número de atributos. Los dominios de los atributos i-ésimos de r y de s deben ser iguales para todo i.
Operaciones Binarias La operación diferencia de conjuntos La operación diferencia de conjuntos, denotada por, permite buscar las tuplas que estén en una relación pero no en la otra. La expresión r s da como resultado una relación que contiene las tuplas que están en r pero no en s. Ejemplo: Seleccionar todos los clientes del banco que tienen abierta una cuenta pero no tienen concedido ningún préstamo: Πnombre-cliente(cliente_cuenta) Πnombre-cliente (cliente_prestamo)
Operaciones Binarias La operación diferencia de conjuntos Como en el caso de la operación unión, hay que asegurarse de que las diferencias de conjuntos se realicen entre relaciones compatibles. Por tanto, para que una operación diferencia de conjuntos r s sea válida hay que exigir que las relaciones r y s sean de la misma aridad y que los dominios de los atributos i-ésimos de r y s sean iguales.
Operaciones Binarias La operación producto cartesiano La operación producto cartesiano, denotada por ( ), permite combinar información de cualesquiera dos relaciones. El producto cartesiano de las relaciones r1 y r2 como r1 r2. El producto cartesiano multiplica" dos relaciones, definiendo una nueva relación que tiene todos los pares posibles de tuplas de las dos relaciones. Si la relación r1 tiene P tuplas y N atributos y la relación r2 tiene Q tuplas y M atributos, la relación resultado tendrá PxQ tuplas y M+N atributos.
Operaciones Binarias La operación producto cartesiano Ejemplo: Seleccionar los nombres de todos los clientes que tienen un préstamo en la sucursal de Galerías. Se necesita información de las relaciones préstamo y cliente_prestamo: σnombre-sucursal = «Galerías» (cliente_prestamo préstamo) Se tiene una relación que sólo atañe a la sucursal de Galerías. Sin embargo, la columna nombre-cliente puede contener clientes que no tengan concedido ningún préstamo en esta sucursal, debido a que el producto cartesiano toma todas las parejas posibles de una tupla de cliente_préstamo con una tupla de préstamo.)
Operaciones Binarias La operación producto cartesiano Dado que la operación producto cartesiano asocia todas las tuplas de préstamo con todas las tuplas de clientes_prestamo, se sabe que, si un cliente tiene concedido un préstamo en la sucursal de Galerías, hay alguna tupla de cliente_prestamo préstamo que contiene su nombre y que cliente_prestamo.número-préstamo = préstamo.número-préstamo. Por tanto: σcliente_prestamo.número-préstamo = préstamo.número-préstamo (σnombre-sucursal = «Galerías» (cliente_prestamo préstamo))
Operaciones Binarias La operación producto cartesiano sólo se obtienen las tuplas de cliente_prestamo préstamo que corresponden a los clientes que tienen concedido un préstamo en la sucursal de Galerías. Finalmente, dado que sólo se desea obtener nombrecliente, se realiza la proyección: Πnombre-cliente ( σcliente_prestamo.númeropréstamo = préstamo.número-préstamo (σnombresucursal = «Galerias» (cliente_prestamo préstamo)))
Otras Operaciones Otras Operaciones del Algebra Relacional Intersección de conjuntos ( ) Todos los clientes que tengan un préstamo concedido y una cuenta abierta: Πnombre-cliente (cliente_prestamo) Πnombre-cliente (cliente_cuenta) Reunión natural (X ) Todos los clientes que tengan un préstamo concedido y una cuenta abierta: Πnombre-cliente (cliente_prestamo X cliente_cuenta)
Otras Operaciones Otras Operaciones del Algebra Relacional División(%) Resulta adecuada para las consultas que incluyan la expresión para todos. Todos los clientes que tengan una cuenta abierta en todas las sucursales de Bogotá: R1=Obtener todas las sucursales de Bogotá R2=Todos los pares (nombre_cliente, nombre_sucursal) para los clientes que tienen una cuenta en una sucursal R1=Πnombre-sucursal (σciudad-sucursal = «Bogotá» (Sucursal)) % R2=Πnombre-cliente,nombre-sucursal (cliente_cuenta X cuenta)
Otras Operaciones Otras Operaciones del Algebra Relacional Operación asignación ( ) Actúa de la misma manera que en los lenguajes de programación. Temp1 ΠR-S (r)
Otras Operaciones Tarea Escribir o traducir las siguientes consultas en el algebra relacional: 1. Seleccionar las tuplas de la relación préstamo en que la sucursal es «Centro» 2. Encontrar los clientes que viven en Cali. 3. Seleccionar los nombres de todos los clientes que tienen concedido un préstamo en la sucursal del Centro. 4. Πnombre-cliente,numero_prestamo,valor (cliente_prestamo X prestamo) 5. Πnúmero-cuenta, saldo(cuenta)
Preguntas Gracias por su Atención