Introducción Operaciones Unarias Operaciones Binarias Introducción Operaciones Unarias Operaciones Binarias Marco General AR - Marco General Álgebra Relacional Álgebra Relacional. Lenguaje formal utilizado en el modelo relacional Permite a usuarios especificar consultas sobre instancias de relaciones El resultado de una consulta es una nueva relación Importancia. 1 Provee fundamento formal a las operaciones asociadas al modelo relacional 2 Base para implementar y optimizar queries en RDBMS 3 Principales operaciones y funciones del los módulos internos de la mayorı́a de los sistemas relacionales están basados en operaciones del AR 19/Agosto/2016 Técnica. Procedural (a diferencia del Cálculo Relacional que es de tipo declarativo) Operadores. Unarios y Binarios Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias SELECT PROJECT RENAME Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias AR - SELECT SELECT PROJECT RENAME AR - SELECT - Propiedades Función. Selecciona un subconjunto de tuplas de cierta condición Notación. σ<condici ón de selecci ón> (R) Ejemplo. EMPLEADO DNI Nombre Sexo 20222333 Diego M 33456234 Laura F 45432345 Marina F una relación que satisface Operador Unario. Se aplica a una sola relación Grado. Grado(σc (R)) = Grado(R) # tuplas. |σc (R)| ≤ |R| La fracción de tuplas seleccionadas se denomina selectividad de la condición Salario $20.000,00 $25.000,00 $10.000,00 Conmutatividad. σc1 (σc2 (R)) = σc2 (σc1 (R)) Cascada de SELECTs. σc1 (σc2 (...σcn (R))) = σc1 AND c2 AND ... AND cn (R) SQL. Se especifica tı́picamente en la cláusula WHERE Ejemplo. σSexo=F AND Salario>$15.000 (EMPLEADO) se puede corresponder con: σSexo=F (EMPLEADO) DNI 33456234 45432345 Nombre Laura Marina Sexo F F Salario $25.000,00 $10.000,00 Sexo F Salario $25.000,00 SELECT * FROM EMPLEADO WHERE Sexo=F AND Salario>$15.000; σSexo=F AND Salario>$15.000 (EMPLEADO) DNI 33456234 Nombre Laura Genera una partición horizontal de la relación Álgebra Relacional Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias SELECT PROJECT RENAME Introducción Operaciones Unarias Operaciones Binarias AR - PROJECT SELECT PROJECT RENAME AR - PROJECT - Propiedades Función. Selecciona un subconjunto de columnas de una relación Operador Unario. Se aplica a una sola relación Notación. π<lista de atributos> (R) Grado. Grado(π<lista de atributos> (R)) = | < lista de atributos > | Ejemplo. # tuplas. |π<lista de atributos> (R)| ≤ |R|. Remueve tuplas duplicadas de la relación resultante DNI 20222333 33456234 45432345 EMPLEADO Nombre Sexo Diego M Laura F Marina F Salario $20.000,00 $25.000,00 $10.000,00 Ejemplo. DNI 20222333 33456234 45432345 πDNI ,Salario (EMPLEADO) DNI 20222333 33456234 45432345 Salario $20.000,00 $25.000,00 $10.000,00 EMPLEADO Nombre Sexo Diego M Laura F Marina F Salario $20.000,00 $25.000,00 $10.000,00 πSexo (EMPLEADO) Sexo M F Genera una partición vertical de la relación Conservación # tuplas. En π<lista de atributos> (R), si < lista de atributos > es súper clave de R entonces |π<lista de atributos> (R)| = |R| Álgebra Relacional Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias SELECT PROJECT RENAME Introducción Operaciones Unarias Operaciones Binarias AR - PROJECT - Propiedades (Cont.) AR - RENAME Conmutatividad. πlista1 (πlista2 (R)) = πlista1 (R). lista1 ⊆ lista2 , de lo contrario lado izq. de la expresión es incorrecto. Conmutatividad no aplica a PROJECT Ejemplo Conmutatividad. EMPLEADO DNI Nombre Sexo Salario 20222333 Diego M $20.000,00 33456234 Laura F $25.000,00 45432345 Marina F $10.000,00 Función. Asigna nombre a atributos / relación resultado Muy útil para asignar nombre a resultados intermedios Notación. ρS(B1 ,B2 ,...,Bn ) (R) ó ρS (R) ó ρ(B1 ,B2 ,...,Bn ) (R) Ejemplo 1. Relaciones DNI 20222333 33456234 45432345 πSexo (πNombre,Sexo (EMPLEADO)) Nombre Diego Laura Marina Sexo M F F SELECT PROJECT RENAME Sexo M F Salario $20.000,00 $25.000,00 $10.000,00 πNombre,Sexo (σSalario≥$15.000 (EMPLEADO)) 1 2 πNombre,Sexo (πSexo (EMPLEADO)) ¡NO ES POSIBLE! SQL. Se especifica tı́picamente en la cláusula SELECT DISTINCT Ejemplo. πSexo,Salario (EMPLEADO) se puede corresponder con: EMPLEADO Nombre Sexo Diego M Laura F Marina F DNI 20222333 33456234 SALARIO MAYOR ← σSalario≥$15.000 (EMPLEADO) RESULT ← πNombre,Sexo (SALARIO MAYOR) SALARIO MAYOR Nombre Sexo Salario Diego M $20.000,00 Laura F $25.000,00 RESULT Nombre Sexo Diego M Laura F SELECT DISTINCT Sexo, Salario FROM EMPLEADO Álgebra Relacional Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias SELECT PROJECT RENAME Introducción Operaciones Unarias Operaciones Binarias AR - RENAME (Cont.) SELECT PROJECT RENAME AR - Ejercicio 1 Ejemplo 2. Atributos DNI 20222333 33456234 45432345 EMPLEADO Nombre Sexo Diego M Laura F Marina F Salario $20.000,00 $25.000,00 $10.000,00 EMP(id, Ingreso) ← πDNI ,Salario (EMPLEADO) EMP id Ingreso 20222333 $20.000,00 33456234 $25.000,00 45432345 $10.000,00 SQL. Se especifica tı́picamente en la cláusula AS Ejemplo. VUELO Número 345 321 165 903 447 Origen MAD MAD LHR CDG CDG AEROPUERTO Destino CDG ORY CDG LHR LHR Salida 12:30 19:05 09:55 14:40 17:00 Código MAD LGW LHR ORY CDG Nombre Barajas Gatwick Heathrow Orly Charles de Gaulle PASAJERO Ciudad Madrid Londres Londres Parı́s Parı́s DNI 123 456 789 Nombre Marı́a Pedro Isabel RESERVA DNI 789 123 789 456 Nro Vuelo 165 345 321 345 1 Retornar Código y Nombre de Aeropuertos de Londres 2 ¿Qué retorna 3 Obtener vuelos que van desde CDG hacia LHR 4 Obtener vuelos que van desde CDG hacia LHR o viceversa 5 Devolver las fechas de las reservas cuyos Precios son mayores a 200 Cities(City )←πCiudad (σC ódigo=ORY OR C ódigo=CDG (AEROPUERTO)) SELECT EMP.DNI AS id, EMP.Salario AS Ingreso FROM EMPLEADO AS EMP Álgebra Relacional Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - UNION, INTERSECTION, MINUS Función. Equivalente a operaciones matemáticas sobre conjuntos Notación. R ∪ S, R ∩ S, R − S Duplicados. La relación resultante no contiene duplicados Unión Compatible. Se dice que dos relaciones R(A1 , A2 , ..., An ) y S(B1 , B2 , ..., Bn ) son unión compatibles (o compatibles por tipos) si: Ambas tienen grado n (∀i, 1 ≤ i ≤ n) tipo(Ai ) = tipo(Bi ) Introducción Operaciones Unarias Operaciones Binarias AR - UNION, INTERSECTION, MINUS (Cont.) Ejemplo 1. UNION ALUMNOS BDs id Nombre 1 Diego 2 Laura 3 Marina ALUMNOS TLENG id Nombre 2 Laura 4 Alejandro RESULT 1 ← ALUMNOS BD ∪ ALUMNOS TLENG UNION. R ∪ S. Relación que incluye todas las tuplas que están en R, S o en ambas relaciones a la vez. Duplicados son eliminados INTERSECTION. R ∩ S. Relación que incluye todas las tuplas que están a la vez en R y S SET DIFFERENCE (o MINUS). R − S. Relación que incluye todas las tuplas que están R, pero no incluye aquellas que aparecen en S Convención. Relación resultante conserva los nombres de atributo de la primer relación. Álgebra Relacional UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION id 1 2 3 4 RESULT 1 Nombre Diego Laura Marina Alejandro Álgebra Relacional Fecha 07-01-11 20-12-10 15-12-10 03-11-10 Precio 210 170 250 190 Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - UNION, INTERSECTION, MINUS (Cont.) Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - UNION, INTERSECTION, MINUS (Cont.) Ejemplo 2. INTERSECTION Ejemplo 3. SET DIFFERENCE ALUMNOS BDs id Nombre 1 Diego 2 Laura 3 Marina ALUMNOS TLENG id Nombre 2 Laura 4 Alejandro ALUMNOS BDs id Nombre 1 Diego 2 Laura 3 Marina RESULT 2 ← ALUMNOS BD ∩ ALUMNOS TLENG ALUMNOS TLENG id Nombre 2 Laura 4 Alejandro RESULT 3 ← ALUMNOS BD − ALUMNOS TLENG RESULT 2 id Nombre 2 Laura RESULT 3 id Nombre 1 Diego 3 Marina Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias Álgebra Relacional UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - UNION, INTERSECTION, MINUS (Cont.) Introducción Operaciones Unarias Operaciones Binarias AR - Ejercicio 2 Conmutatividad. R ∪S =S ∪R R ∩S =S ∩R En general, R − S 6= S − R VUELO Número 345 321 165 903 447 Asociatividad. R ∪ (S ∪ T ) = (R ∪ S) ∪ T R ∩ (S ∩ T ) = (R ∩ S) ∩ T Origen MAD MAD LHR CDG CDG Equivalencia. R ∩ S = ((R ∪ S) − (R − S)) − (S − R) SQL 1. Operaciones en SQL UNION, INTERSECT, EXCEPT funcionan como en AR SQL 2. Operaciones en SQL UNION ALL, INTERSECT ALL, EXCEPT ALL no eliminan duplicados Álgebra Relacional UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION Destino CDG ORY CDG LHR LHR AEROPUERTO Salida 12:30 19:05 09:55 14:40 17:00 Código MAD LGW LHR ORY CDG Nombre Barajas Gatwick Heathrow Orly Charles de Gaulle PASAJERO Ciudad Madrid Londres Londres Parı́s Parı́s DNI 123 456 789 Nombre Marı́a Pedro Isabel RESERVA DNI 789 123 789 456 Nro Vuelo 165 345 321 345 1 Devolver los códigos de vuelo que tienen reservas generadas (utilizar ∩) 2 Devolver los códigos de vuelo que aún no tienen reservas 3 Retornar los códigos de aeropuerto de los que parten o arriban los vuelos Álgebra Relacional Fecha 07-01-11 20-12-10 15-12-10 03-11-10 Precio 210 170 250 190 Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - CARTESIAN PRODUCT Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - CARTESIAN PRODUCT (Cont.) Función. Produce una nueva relación que combina cada tupla de una relación con cada una de las tuplas de la otra relación Notación. R X S Ejemplo. PERSONA NACIONALIDADES Nombre Nacionalidad IDN Detalle Diego AR AR Argentina Laura BR BR Brasilera Marina AR CH Chilena Unión compatible. Las relaciones no tienen que ser unión compatibles Grado. Si T = R X S entonces grado(T ) = grado(R) + grado(S) SQL. CROSS JOIN RESULT ←PERSONA X NACIONALIDADES Nombre Diego Diego Diego Laura Laura Laura Marina Marina Marina RESULT Nacionalidad AR AR AR BR BR BR AR AR AR IDN AR BR CH AR BR CH AR BR CH Detalle Argentina Brasilera Chilena Argentina Brasilera Chilena Argentina Brasilera Chilena Álgebra Relacional Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - JOIN Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - JOIN (Cont.) Función. Permite combinar pares de tuplas relacionadas entre dos relaciones Notación. R ./<condici ón> S Ejemplo. PERSONA Nombre Nacionalidad Diego AR Laura BR Marina AR NACIONALIDADES IDN Detalle AR Argentina BR Brasilera CH Chilena RESULT ← PERSONA ./Nacionalidad=IDN NACIONALIDADES Nombre Diego Laura Marina RESULT Nacionalidad AR BR AR IDN AR BR AR Detalle Argentina Brasilera Argentina Álgebra Relacional CARTESIAN PRODUCT vs JOIN. CARTESIAN PRODUCT aparecen todas las combinaciones de tuplas JOIN aparecen sólo combinaciones de tuplas que satisfacen condición Condición 1. En general, formato de condición de JOIN entre R y S: < condici ón > AND < condici ón > AND...AND < condici ón > Condición 2. Forma de < condici ón > es Ai θBj , siendo Ai atributo de R y Bj atributo de S Condición 3. dom(Ai ) = dom(Bj ) Condición 4. θ ∈ {=, <, ≤, >, ≥, 6=} NULL. Tuplas cuyos atributos de JOIN son NULL o cuya condición es falsa no aparecen en el resultado Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - JOIN (Cont.) UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - JOIN (Cont.) EQUIJOIN. JOIN donde sólo se utiliza la operación = en la < condici ón >. Duplicación de campos. Al utililzar la igualdad, se generan campos duplicados. Ejemplo. PERSONA NACIONALIDADES Nombre Nacionalidad IDN Detalle Diego AR AR Argentina Laura BR BR Brasilera Marina AR CH Chilena RESULT ← PERSONA ./Nacionalidad=IDN NACIONALIDADES Nombre Diego Laura Marina Introducción Operaciones Unarias Operaciones Binarias RESULT Nacionalidad AR BR AR IDN AR BR AR Detalle Argentina Brasilera Argentina NATURAL JOIN. Realiza el JOIN entre campos de mismo nombre y deja sólo uno de los campos duplicados Notación. R ./ S (también en la bibliografı́a R ∗ S) Requerimiento. Requiere que atributos de JOIN tengan el mismo nombre. De no ser el caso, se debe hacer un RENAME previo Ejemplo NATURAL JOIN. PERSONA Nombre Nacionalidad Diego AR Laura BR Marina AR NACIONALIDADES IDN Detalle AR Argentina BR Brasilera CH Chilena NACIONALIDADES TEMP(Nacionalidad,Detalle)←πIDN,Detalle (NACIONALIDADES) RESULT ←PERSONA ./ NACIONALIDADES TEMP Nombre Diego Laura Marina RESULT Nacionalidad AR BR AR Tamaño resultado JOIN(S,R). Puede ir de 0 a S*R registros Selectividad de JOIN. Es una tasa y corresponde a: Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - JOIN (Cont.) Detalle Argentina Brasilera Argentina |resultado JOIN(S,R)| |S|∗|R| Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - OUTER JOIN SQL. Se Puede realizar de múltiples maneras. Ejemplo. NACIONALIDADES TEMP(Nacionalidad,Detalle)←πIDN,Detalle (NACIONALIDADES) RESULT ←PERSONA ./ NACIONALIDADES TEMP se puede corresponder con: SELECT Persona.Nombre, Persona.Nacionalidad, NACIONALIDADES.Detalle FROM PERSONA, NACIONALIDADES WHERE PERSONA.Nacionalidad=NACIONALIDADES.IDN; Álgebra Relacional INNER JOIN. JOIN donde tuplas que no cumplen condición de JOIN son eliminadas del resultado (Ej. NULL en atributo de JOIN) OUTER JOIN. JOIN en el cual se incorpora adicionalmente al resultado las tuplas de R, S, o ambas relaciones, que no cumplen la condición de JOIN LEFT OUTER JOIN. R ./ S. Conserva todas las tuplas de R. Si no se encuentra ninguna tupla de S que cumpla con condición de JOIN, entonces los atributos de S en el resultado se completan en NULL Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION Introducción Operaciones Unarias Operaciones Binarias AR - OUTER JOIN Ejemplo. AR - OUTER JOIN (Cont.) PERSONA Nombre Nacionalidad Diego BR Laura NULL Marina AR Santiago UY RESULT ←PERSONA ./ Nacionalidad=IDN Nombre Diego Marina RESULT ←PERSONA ./ NACIONALIDADES IDN Detalle AR Argentina BR Brasilera CH Chilena RIGHT OUTER JOIN. R ./ S. Conserva todas las tuplas de S. Si no se encuentra ninguna tupla de R que cumpla con condición de JOIN, entonces los atributos de R en el resultado se completan en NULL FULL OUTER JOIN. R ./ S. Conserva todas las tuplas de R y S. Si no se encuentra ninguna tupla de R o S que cumpla con condición de JOIN, entonces sus atributos en el resultado se completan en NULL NACIONALIDADES SQL. Las tres operaciones de OUTER JOIN son parte del estándar SQL2 RESULT Nacionalidad IDN BR BR AR AR Nacionalidad=IDN Nombre Diego Laura Marina Santiago UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION Detalle Brasilera Argentina NACIONALIDADES RESULT Nacionalidad IDN BR BR NULL NULL AR AR UY NULL Detalle Brasilera NULL Argentina NULL Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias Álgebra Relacional UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION Introducción Operaciones Unarias Operaciones Binarias AR - Ejercicio 3 UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - DIVISION Función. Retorna los valores de R que se encuentran emparejados con TODOS los valores de S VUELO Número 345 321 165 903 447 Origen MAD MAD LHR CDG CDG Destino CDG ORY CDG LHR LHR AEROPUERTO Salida 12:30 19:05 09:55 14:40 17:00 Código MAD LGW LHR ORY CDG Nombre Barajas Gatwick Heathrow Orly Charles de Gaulle PASAJERO Ciudad Madrid Londres Londres Parı́s Parı́s DNI 123 456 789 Nombre Marı́a Pedro Isabel DNI 789 123 789 456 Nro Vuelo 165 345 321 345 Fecha 07-01-11 20-12-10 15-12-10 03-11-10 1 Devolver Ciudad de Partida de vuelo número 165 2 Retornar Nombre de las personas que realizaron reservas a un valor menor a 200 3 Obtener Nombre, Fecha y Destino de viaje de todos los pasajeros que vuelan desde Madrid Álgebra Relacional Notación. R ÷ S. Requiere que atributos de S ⊂ atributos de R. Resultado contiene atributos de R menos atributos de S RESERVA Precio 210 170 250 190 Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION Introducción Operaciones Unarias Operaciones Binarias AR - DIVISION (Cont.) Ejemplo. ALUMNOS Nombre Materia Diego BD Diego PLP Laura BD Laura PLP Laura TLENG Marina BD Marina TLENG Santiago BD Santiago PLP Santiago TLENG UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - DIVISION MATERIAS 1 Materia BD MATERIAS 2 Materia BD TLENG MATERIAS 3 Materia BD PLP TLENG ALUMNOS÷MATERIAS 1 ALUMNOS÷MATERIAS 2 ALUMNOS÷MATERIAS 3 Nombre Diego Laura Marina Santiago Nombre Laura Marina Santiago Nombre Laura Santiago Álgebra Relacional Introducción Operaciones Unarias Operaciones Binarias UNION, INTERSECTION, MINUS CARTESIAN PRODUCT / JOIN DIVISION AR - Bibliografı́a Capı́tulo 6 (hasta 6.5 inclusive) Elmasri/Navathe - Fundamentals of Database Systems, 6th Ed., Pearson, 2011. Álgebra Relacional Operación compuesta. Se puede expresar como secuencia de otras operaciones (π, X , −) En ejemplo anterior (ALUMNOS÷MATERIAS 3): TEMP1 ← πNombre (ALUMNOS) TEMP2 ← πNombre ((TEMP1 X MATERIAS 3) − ALUMNOS) RESULT ← TEMP1 − TEMP2 TEMP 1 TEMP 2 RESULT Nombre Diego Laura Marina Santiago Nombre Diego Marina Nombre Laura Santiago SQL. No suele implementar DIVISION Álgebra Relacional