CAPÍTULO 8 El álgebra relacional Objetivos • Describir las operaciones formales del álgebra relacional, como ser: – Operaciones relacionales unarias – Operaciones del álgebra relacional de la teoría de conjuntos – Operaciones relacionales binarias – Operaciones relacionales adicionales – Ejemplos de consultas en álgebra relacional 2 Descripción general del álgebra relacional • El álgebra relacional es el conjunto básico de operaciones para el modelo relacional • Estas operaciones permiten al usuario especificar solicitudes de recuperación básicas (o consultas) • El resultado de una operación es una nueva relación, que puede haberse formado a partir de una o más relaciones de entrada: – Esta propiedad hace que el álgebra sea "cerrada" (todos los objetos en el álgebra relacional son relaciones) 3 Descripción general del álgebra relacional • Las operaciones del álgebra producen así nuevas relaciones: – Estas pueden manipularse aún más utilizando operaciones del mismo álgebra • Una secuencia de operaciones del álgebra relacional forma una expresión de álgebra relacional: – El resultado de una expresión de álgebra relacional también es una relación que representa el resultado de una consulta de base de datos (o solicitud de recuperación) 4 Breve historia de los orígenes del álgebra • Muhammad ibn Musa al-Khwarizmi (800-847 a. C.): de Marruecos escribió un libro titulado al−jabr sobre aritmética de variables: – El libro fue traducido al latín – Su título (al-jabr) le dio su nombre a Álgebra • Al-Khwarizmi llamó variables "shay“: – "Shay" en árabe significa "cosa". – El español transcribió "shay" como "xay" ("x" era "sh" en España) – Con el tiempo, esta palabra se abrevió como x • ¿De dónde viene la palabra algoritmo?: – El algoritmo se origina en "al-Khwarizmi" – Referencia: PBS (http://www.pbs.org/empires/islam/innoalgebra.html) 5 Descripción general del álgebra relacional • El álgebra relacional consta de varios grupos de operaciones: – Operaciones relacionales unarias: • SELECCIÓN (símbolo: σ (sigma)) • PROYECCIÓN (símbolo: π (pi)) • RENOMBRAMIENTO (símbolo: ρ (rho)) – Operaciones de álgebra relacional de la teoría de conjuntos: • UNIÓN (), INTERSECCIÓN (), DIFERENCIA (o MENOS, −) • PRODUCTO CARTESIANO (x) – Operaciones relacionales binarias: • CONCATENACIÓN (existen varias variaciones de CONCATENACIÓN) • DIVISIÓN – Operaciones relacionales adicionales: • CONCATENACIONES EXTERNAS, UNIÓN EXTERNA • FUNCIONES AGREGADAS (estas calculan el resumen de la información: por ejemplo, SUMA (SUM), CONTEO (COUNT), PROMEDIO (AVG), MÍNIMO (MIN), MÁXIMO (MAX)) 6 Estado de la base de datos para EMPRESA • Todos los ejemplos que se discuten a continuación se refieren a la base de datos EMPRESA que se muestra aquí: 7 Operaciones relacionales unarias: SELECCIÓN • La operación SELECCIÓN (denotada por σ (sigma)) se usa para seleccionar un subconjunto de las tuplas de una relación basada en un condición de selección: – La condición de selección actúa como un filtro – Mantiene solo las tuplas que cumplen la condición de calificación – Las tuplas que satisfacen la condición son seleccionadas mientras que las otras tuplas se descartan (se filtran) • Ejemplos: – Seleccione las tuplas de EMPLEADOS cuyo número de departamento es 4: • σnoDepartamento=4(EMPLEADOS) – Seleccione las tuplas de EMPLEADOS cuyo salario sea superior a $30, 000: • σsalario>30.000(EMPLEADOS) 8 Operaciones relacionales unarias: SELECCIÓN – En general, la operación SELECCIÓN se denota por σ<condición de selección>(R) donde: • El símbolo σ (sigma) se utiliza para denotar el operador SELECCIÓN • La condición de selección es una expresión booleana (condicional) especificada en los atributos de la relación R • Las tuplas que hacen la condición verdadera son seleccionadas: – Aparecen en el resultado de la operación • Las tuplas que hacen la condición falsa se filtran: – Se descartan del resultado de la operación 9 Operaciones relacionales unarias: SELECCIÓN • Propiedades de la operación SELECCIÓN: – La operación SELECCIÓN σ<condición de selección>(R) produce una relación S que tiene el mismo esquema (mismos atributos) que R – SELECCIÓN σ es conmutativa: • σ<condicion1>(σ<condicion2>(R)) = σ<condicion2>(σ<condicion1>(R)) – Debido a la propiedad de conmutatividad, se puede aplicar una cascada (secuencia) de operaciones SELECCIÓN en cualquier orden: • σ<condicion1>(σ<condicion2>(σ<condicion3>(R))) = σ<condicion2>(σ<condicion3>(σ<condicion1>(R))) – Una cascada de operaciones SELECCIÓN puede ser reemplazada por una sola selección con una conjunción de todas las condiciones: • σ<condicion1>(σ<condicion2>(σ<condicion3>(R))) = σ<condicion1> AND <condicion2> AND <condicion3>(R) – El número de tuplas en el resultado de una SELECCIÓN es menor que (o igual a) el número de tuplas en la relación de entrada R 10 Los siguientes resultados de la consulta se refieren al estado de esta base de datos 11 Operaciones relacionales unarias: PROYECCIÓN • La operación PROYECCIÓN se denota por π (pi) • Esta operación mantiene cierta columnas (atributos) de una relación y descarta las otras columnas: – PROYECCIÓN crea una partición vertical: • La lista de columnas especificadas (atributos) se mantiene en cada tupla • Los demás atributos de cada tupla se descartan • Ejemplo: para enumerar el nombre, apellido y salario de cada empleado, se utiliza lo siguiente: – πapellido, nombre, salario(EMPLEADOS) 12 Operaciones relacionales unarias: PROYECCIÓN • La forma general de la operación PROYECCIÓN es: – π<lista de atributos>(R) – π (pi) es el símbolo utilizado para representar la operación PROYECCIÓN – <lista de atributos> es la lista deseada de atributos de la relación R • La operación PROYECCIÓN elimina las tuplas duplicadas: – Esto se debe a que el resultado de la operación PROYECCIÓN debe ser un conjunto de tuplas: • Los conjuntos matemáticos no permiten elementos duplicados 13 Operaciones relacionales unarias: PROYECCIÓN • Propiedades de operación de PROYECCIÓN: – El número de tuplas en el resultado de PROYECCIÓN π<lista>(R) siempre es menor o igual al número de tuplas en R: • Si la lista de atributos incluye una clave de R, entonces el número de tuplas en el resultado de PROYECCIÓN es igual al número de tuplas en R – PROYECCIÓN no es conmutativa: • π<lista1>(π<lista2>(R)) = π<lista1>(R) siempre que <lista2> contenga los atributos en <lista1> 14 Ejemplos de aplicación de las operaciones SELECCIÓN y PROYECCIÓN 15 Expresiones del álgebra relacional • Es posible que deseemos aplicar varias operaciones del álgebra relacional una tras otra: – O podemos escribir las operaciones como una sola expresión de álgebra relacional anidando las operaciones, o – Podemos aplicar una operación a la vez y crear relaciones de resultado intermedio • En el último caso, debemos dar nombre a las relaciones que contienen los resultados intermedios 16 Expresión única versus secuencia de operaciones relacionales (Ejemplo) • Para recuperar el nombre, apellido y salario de todos los empleados que laboran en el departamento número 5, debemos aplicar una operación selección y una proyección • Podemos escribir una expresión de álgebra relacional única como sigue: – πnombre, apellido, salario(σnoDepartamento=5(EMPLEADOS)) • O podemos mostrar explícitamente la secuencia de operaciones, dando un nombre a cada relación intermedia: – EMPS_DEP5σnoDepartamento=5(EMPLEADOS) – RESULTADOπnombre, apellido, salario(EMPS_DEP5) 17 Operaciones relacionales unarias: RENOMBRAMIENTO • El operador RENOMBRAMIENTO se denota por (rho) • En algunos casos, es posible que deseemos renombrar los atributos de una relación o el nombre de la relación o ambos: – Útil cuando una consulta requiere múltiples operaciones – Necesario en algunos casos (ver operación CONCATENACIÓN más adelante) 18 Operaciones relacionales unarias: RENOMBRAMIENTO • La operación general RENOMBRAMIENTO puede expresarse mediante cualquiera de las siguientes formas: – S(B1, B2, …, Bn)(R) cambia ambos: • El nombre de la relación a S, y • Los nombres de las columnas (atributos) a B1, B2, …, Bn – S(R) cambia: • El nombre de la relación solamente a S – (B1, B2, …, Bn)(R) cambia: • Los nombres de las columnas (atributos) solamente a B1, B2, …, Bn 19 Operaciones relacionales unarias: RENOMBRAMIENTO • Por conveniencia, también utilizamos una abreviatura para cambiar el nombre de los atributos en una relación intermedia: – Si escribimos: • RESULTADOπnombres, apellidos, salario(EMPS_DEP5) • RESULTADO tendrá los mismos nombres de atributo como EMPS_DEP5 (mismos atributos que EMPLEADOS) • Si escribimos: • RESULTADO(F, M, L, S, B, A, SX, SAL, SU, DNO)RESULTADO(F, M, L, S, B, A, SX, SAL, SU, DNO)(EMPS_DEP5) • Los 10 atributos de EMPS_DEP5 son renombrados a F, M, L, S, B, A, SX, SAL, SU, DNO, respectivamente Nota: el símbolo es un operador de asignación 20 Ejemplo de aplicación de múltiples operaciones y RENOMBRAMIENTO 21 Operaciones del álgebra relacional de la teoría de conjuntos: UNIÓN • Operación UNIÓN: – Operación binaria, denotada por – El resultado de RS, es una relación que incluye todas las tuplas que están en R o en S o en R y S – Se eliminan las tuplas duplicadas – Las dos relaciones operando R y S deben ser de “tipo compatible" (o UNIÓN compatible): • R y S deben tener el mismo número de atributos • Cada par de atributos correspondientes debe ser de tipo compatible (tener dominios iguales o compatibles) 22 Operaciones del álgebra relacional de la teoría de conjuntos: UNIÓN • Ejemplo: – Recuperar los números de seguro social de todos los empleados que trabajan en el departamento 5 (RESULTADO1 a continuación) o supervisan directamente a un empleado que trabaja en el departamento 5 (RESULTADO2 a continuación) – Podemos usar la operación UNIÓN de la siguiente manera: • • • • EMPS_DEP5σnoDepartamento=5(EMPLEADOS) RESULTADO1πSSN(EMPS_DEP5) RESULTADO2(SSN)πSSNSupervisor(EMPS_DEP5) RESULTADORESULTADO1RESULTADO2 – La operación de unión produce las tuplas que están en RESULTADO1 o RESULTADO2 o en ambos 23 Figura 8.3 Resultado de la operación UNIÓN RESULTADORESULTADO1RESULTADO2 24 Operaciones del álgebra relacional de la teoría de conjuntos • Se requiere de tipo de compatibilidad de operandos para la operación de conjunto binario UNIÓN , (también para INTERSECCIÓN y DIFERENCIA DE CONJUNTOS −, consulte las siguientes diapositivas) • R1(A1, A2, ..., An) y R2(B1, B2, ..., Bn) son de tipo compatible si: – Tienen el mismo número de atributos y – Los dominios de los atributos correspondientes son de tipo compatible (es decir, dom(ai) = dom(bi) para i = 1, 2, ..., n) • La relación resultante para R1R2 (también para R1R2, o R1−R2, consulte las siguientes diapositivas) tiene los mismos nombres de atributo que la primera relación operando R1 (por convención) 25 Operaciones del álgebra relacional de la teoría de conjuntos: INTERSECCIÓN • INTERSECCIÓN se denota por • El resultado de la operación RS, es una relación que incluye todas las tuplas que están tanto en R como en S: – Los nombres de los atributos en el resultado serán los mismos que los nombres de los atributos en R • Las dos relaciones operando R y S deben ser de "tipo compatible" 26 Operaciones del álgebra relacional de la teoría de conjuntos: DIFERENCIA DE CONJUNTOS • DIFERENCIA DE CONJUNTOS (también llamado MENOS o EXCEPTO) se denota por − • El resultado de R−S, es una relación que incluye todas las tuplas que están en R pero no en S: – Los nombres de los atributos en el resultado serán los mismos que los nombres de los atributos en R • Las dos relaciones operando R y S deben ser de "tipo compatible" 27 Ejemplo para ilustrar el resultado de UNIÓN, INTERSECCIÓN y DIFERENCIA 28 Algunas propiedades de UNIÓN, INTERSECCIÓN y DIFERENCIA • Observe que tanto la unión como la intersección son operaciones conmutativas; es decir: – RS = SR y RS = SR • Tanto la unión como la intersección pueden tratarse como operaciones n−arias aplicables a cualquier número de relaciones, ya que ambas son operaciones asociativas; es decir: – R(ST) = (RS)T – (RS)T = R(ST) • La operación menos no es conmutativa; es decir, en general: – R−S ≠ S−R 29 Operaciones del álgebra relacional de la teoría de conjuntos: PRODUCTO CARTESIANO • Operación PRODUCTO CARTESIANO (o CRUZADO): – Esta operación se utiliza para combinar tuplas de dos relaciones de forma combinatoria – Denotado por R(A1, A2, ..., An)xS(B1, B2, ..., Bm) – El resultado es una relación Q con atributos de grado n + m: • Q(A1, A2, ..., An, B1, B2, ..., Bm), en ese orden – El estado de relación resultante tiene una tupla para cada combinación de tuplas, una de R y otra de S – Por lo tanto, si R tiene nR tuplas (denotadas como |R| = nR), y S tiene nS tuplas, entonces RxS tendrá nR * nS tuplas – Los dos operandos NO tienen que ser de "tipo compatible" 30 Operaciones del álgebra relacional de la teoría de conjuntos: PRODUCTO CARTESIANO • Generalmente, PRODUCTO CRUZADO no es una operación significativa: – Puede volverse significativa cuando es seguido por otras operaciones • Ejemplo (no significativo): – EMPS_MUJERESσsexo='F'(EMPLEADOS) – NOMBRES_EMPπnombres, apellidos, SSN(EMPS_MUJERES) – DEPENDIENTES_EMP NOMBRES_EMPxDEPENDIENTES • DEPENDIENTES_EMP contendrá todas las combinaciones de NOMBRES_EMP y DEPENDIENTES – Si están realmente relacionados o no 31 Operaciones del álgebra relacional de la teoría de conjuntos: PRODUCTO CARTESIANO • Para mantener solo las combinaciones donde los DEPENDIENTES están relacionados con los EMPLEADOS, agregamos una operación SELECCIÓN de la siguiente manera • Ejemplo (significativo): – – – – – EMPS_MUJERESσsexo='F'(EMPLEADOS) NOMBRES_EMPπnombres, apellidos, SSN(EMPS_MUJERES) DEPENDIENTES_EMP NOMBRES_EMPxDEPENDIENTES DEPENDIENTES_ACTUALESσSSN=ESSN(DEPENDIENTES_EMP) RESULTADO πnombres, apellidos, nombreDependiente(DEPENDIENTES_ACTUALES) • RESULTADO ahora contendrá el nombre de las empleadas y sus dependientes 32 Figura 8.5 La operación PRODUCTO CARTESIANO (PRODUCTO CRUZADO) continúa en la siguiente diapositiva 33 Figura 8.5 La operación PRODUCTO CARTESIANO (PRODUCTO CRUZADO) continúa en la siguiente diapositiva 34 Figura 8.5 La operación PRODUCTO CARTESIANO (PRODUCTO CRUZADO) 35 Operaciones relacionales binarias: CONCATENACIÓN • Operación CONCATENACIÓN (denotada por ⨝): – La secuencia de PRODUCTO CARTESIANO seguida de SELECCIÓN se usa con bastante frecuencia para identificar y seleccionar tuplas relacionadas de dos relaciones – Una operación especial, llamada CONCATENACIÓN combina esta secuencia en una sola operación – Esta operación es muy importante para cualquier base de datos relacional con más de una relación, porque nos permite combinar tuplas relacionadas de varias relaciones – La forma general de una operación de concatenación en dos relaciones R(A1, A2, ..., An) y S(B1, B2, ..., Bm) es: • R⨝<condición de concatenación>S – Donde R y S pueden ser cualquier relación que resulte de las expresiones del álgebra relacional generales 36 Operaciones relacionales binarias: CONCATENACIÓN • Ejemplo: supongamos que queremos recuperar el nombre del gerente de cada departamento: – Para obtener el nombre del gerente, necesitamos combinar cada tupla de DEPARTAMENTOS con la tupla de EMPLEADOS cuyo valor SSN coincide con el valor MGRSSN en la tupla de departamento – Hacemos esto usando la operación de concatenación ⨝ – DEPT_MGRDEPARTAMENT0S⨝MGRSSN=SSNEMPLEADOS • MGRSSN=SSN es la condición de concatenación – Combina cada registro de departamento con el empleado que administra el departamento – La condición de concatenación también se puede especificar como DEPARTMENTOS.MGRSSN=EMPLEADOS.SSN 37 Figura 8.6 Resultado de la operación CONCATENACIÓN DEPT_MGRDEPARTAMENT0S⨝MGRSSN=SSNEMPLEADOS 38 Algunas propiedades de CONCATENACIÓN • Considere la siguiente operación CONCATENACIÓN: – R(A1, A2, ..., An)⨝S(B1, B2, ..., Bm): • R.Ai = S.Bj – El resultado es una relación Q con atributos de grado n + m: • Q(A1, A2, ..., An, B1, B2, ..., Bm), en ese orden – El estado de relación resultante tiene una tupla para cada combinación de r tuplas de R y s de S, pero solo si cumplen la condición de concatenación r[Ai] = s[Bj] – Por lo tanto, si R tiene nR tuplas, y S tiene nS tuplas, el resultado de la concatenación generalmente tendrá menos que nR * nS tuplas – Solo las tuplas relacionadas (basadas en la condición de concatenación) aparecerán en el resultado 39 Algunas propiedades de CONCATENACIÓN • El caso general de la operación CONCATENACIÓN se llama θ-CONCATENACIÓN: R⨝θS • La condición de concatenación se llama theta (θ) • θ puede ser cualquier expresión booleana general sobre los atributos de R y S; por ejemplo: – R.Ai<S.Bj AND (R.Ak=S.Bl OR R.Ap<S.Bq) • La mayoría de las condiciones de concatenación implican una o más condiciones de igualdad juntadas con “AND"; por ejemplo: – R.Ai=S.Bj AND R.Ak=S.Bl AND R.Ap=S.Bq 40 Operaciones relacionales binarias: EQUI-CONCATENACIÓN • Operación EQUI-CONCATENACIÓN: – El uso más común de concatenación implica condiciones de concatenación con comparaciones de igualdad solamente – Tal concatenación, donde el único operador de comparación utilizado es =, se denomina EQUICONCATENACIÓN: • En el resultado de una EQUI-CONCATENACIÓN siempre tenemos uno o más pares de atributos (cuyos nombres no necesitan ser idénticos) que tienen valores idénticos en cada tupla • La CONCATENACIÓN vista en el ejemplo anterior fue una EQUICONCATENACIÓN 41 Operaciones relacionales binarias: Operación CONCATENACIÓN NATURAL • Operación CONCATENACIÓN NATURAL: – Otra variación de CONCATENACIÓN llamada CONCATENACIÓN NATURAL, indicada por *, se creó para eliminar el segundo atributo (superfluo) en una condición EQUI-CONCATENACIÓN: • Porque uno de cada par de atributos con valores idénticos es superfluo – La definición estándar de concatenación natural requiere que los dos atributos de concatenación, o cada par de atributos de concatenación correspondientes, tengan el mismo nombre en ambas relaciones – Si este no es el caso, primero se aplica una operación de renombramiento 42 Operaciones relacionales binarias: Operación CONCATENACIÓN NATURAL • Ejemplo: para aplicar una concatenación natural en los atributos noDepartamento de DEPARTMENTOS y UBICACIONES_DEPARTAMENTO, es suficiente escribir: – UBICACIONES_DEPTODEPARTMENTOS*UBICACIONES_DEPARTAMENTO • El único atributo con el mismo nombre es noDepartamento • Se crea una condición de concatenación implícita basada en este atributo: – DEPARTMENTOS.noDepartamento=UBICACIONES_DEPARTAMENTO. noDepartamento • Otro ejemplo: QR(A, B, C, D)*S(C, D, E): – La condición de concatenación implícita incluye cada par de atributos con el mismo nombre, juntadas con “AND": • R.C=S.C AND R.D=S.D – El resultado conserva solo un atributo de cada par: • Q (A, B, C, D, E) 43 Ejemplo de la operación CONCATENACIÓN NATURAL 44 Conjunto completo de operaciones relacionales • El conjunto de operaciones que incluye SELECCIÓN σ, PROYECCIÓN (π), UNIÓN (), DIFERENCIA (−), RENOMBRAMIENTO (), y PRODUCTO CARTESIANO (x) se denomina conjunto completo porque cualquier otra expresión del álgebra relacional puede expresarse mediante una combinación de estas cinco operaciones: • Por ejemplo: – RS = (RS)−((R−S)(S−R)) – R⨝<condición de concatenación>S = σ<condición de concatenación>(RxS) 45 Operaciones relacionales binarias: DIVISIÓN • Operación DIVISIÓN: – La operación de división se aplica a dos relaciones – R(Z)÷S(X), donde X es subconjunto Z. Sea Y = Z−X (y por lo tanto Z = XY); es decir, sea Y el conjunto de atributos de R que no son atributos de S – El resultado de la DIVISIÓN es una relación T(Y) que incluye una tupla t si las tuplas tR aparecen en R con tR[Y] = t, y con: • tR[X] = ts para cada tupla ts en s – Para que aparezca una tupla t en el resultado T de la DIVISIÓN, los valores en t deben aparecer en R en combinación con cada tupla en S 46 Ejemplo de DIVISIÓN 47 Tabla 8.1 Operaciones del álgebra relacional continúa en la siguiente diapositiva 48 Tabla 8.1 Operaciones del álgebra relacional 49 Notación de árbol de consultas • Árbol de consultas: – Una estructura de datos interna para representar una consulta – Técnica estándar para la estimación del trabajo involucrado en la ejecución de la consulta, la generación de resultados intermedios y la optimización de la ejecución – Los nodos representan operaciones como selección, proyección, concatenación, renombramiento, división, … – Los nodos de hoja representan relaciones base – Un árbol da una buena sensación visual de la complejidad de la consulta y las operaciones involucradas – La optimización algebraica de consultas consiste en reescribir la consulta o modificar el árbol de consultas en un árbol equivalente 50 Ejemplo de árbol de consultas 51 Operaciones relacionales adicionales: funciones agregadas y agrupación • Un tipo de solicitud que no se puede expresar en el álgebra relacional básica es especificar funciones matemáticas agregadas sobre colecciones de valores de la base de datos • Ejemplos de tales funciones incluyen recuperar el salario promedio o total de todos los empleados o el número total de tuplas de empleados: – Estas funciones se utilizan en consultas estadísticas simples que resumen la información de las tuplas de la base de datos • Las funciones comunes aplicadas a colecciones de valores numéricos incluyen: – SUMA (SUM), PROMEDIO (AVG), MÁXIMO (MAX) y MÍNIMO (MIN) • La función CONTEO (COUNT) se utiliza para contar tuplas o valores 52 Operación de función agregada • Uso de la operación funcional agregada ℑ – ℑMAX(salario)(EMPLEADOS) recupera relación EMPLEADOS – ℑMIN(salario)(EMPLEADOS) recupera relación EMPLEADOS – ℑSUM(salario)(EMPLEADOS) recupera EMPLEADOS – ℑCOUNT(SSN), AVG(salario)(EMPLEADOS) empleados y su salario promedio el valor de salario máximo de la el valor de salario mínimo de la la suma del salario de la relación calcula el recuento (número) de • Nota: conteo solo cuenta el número de filas, sin eliminar duplicados 53 Usar agrupación con agregación • Todos los ejemplos anteriores resumen uno o más atributos para un conjunto de tuplas: – Salario máximo o recuento (número de) SSN • La agrupación se puede combinar con funciones agregadas • Ejemplo: por cada departamento, recuperar el noDepartamento, CONTEO de SSN y PROMEDIO de salario • Una variación de la operación agregada ℑ permite esto: – Atributo de agrupación es colocado a la izquierda del símbolo – Funciones agregadas a la derecha del símbolo – noDepartamentoℑCOUNT(SSN), AVG(salario)(EMPLEADOS) • La operación anterior agrupa a los empleados por noDepartamento (número de departamento) y calcula el recuento de empleados y el salario promedio por departamento 54 Figura 8.10 La operación de función agregada a. ρR(noDepartamento, noEmpleados, salarioPromedio)(noDepartamentoℑCOUNT(SSN), AVG(salario)(EMPLEADOS)) b. noDepartamentoℑCOUNT(SSN), AVG(salario)(EMPLEADOS) c. ℑCOUNT(SSN), AVG(salario)(EMPLEADOS) 55 Figura 7.1a Resultados de GROUP BY y HAVING (en SQL). Q24 continúa en la siguiente diapositiva 56 Operaciones relacionales adicionales • Operaciones de cierre recursivo: – Otro tipo de operación que, en general, no se puede especificar en el álgebra relacional básica original es cierre recursivo: • Esta operación se aplica a una relación recursiva – Un ejemplo de una operación recursiva es recuperar todos los SUPERVISADOS de uno de los EMPLEADOS e en todos los niveles, es decir, todos los EMPLEADOS e’ supervisados directamente por e; todos los empleados e’’ supervisados directamente por cada empleado e’; todos los empleados e’’’ supervisados directamente por cada empleado e’’; y así sucesivamente 57 Operaciones relacionales adicionales • Aunque es posible recuperar empleados en cada nivel y luego tomar su unión, no podemos, en general, especificar una consulta como “recuperar los supervisados de ‘James Borg’ en todos los niveles” sin utilizar un mecanismo de bucle: – El estándar SQL3 incluye sintaxis para cierre recursivo 58 Figura 8.11 Una consulta recursiva de dos niveles 59 Operaciones relacionales adicionales • La operación CONCATENACIÓN EXTERNA: – En CONCATENACIÓN NATURAL y EQUI-CONCATENACIÓN, las tuplas sin una tupla coincidente (o relacionada) se eliminan del resultado de la concatenación: • Las tuplas con nulos en los atributos de concatenación también se eliminan • Esto equivale a una pérdida de información – Un conjunto de operaciones, llamadas CONCATENACIONES EXTERNAS, se puede utilizar cuando queremos mantener todas las tuplas en R, o todas las de S, o todas las de ambas relaciones en el resultado de la concatenación, independientemente de si tienen o no tuplas coincidentes en la otra relación 60 Operaciones relacionales adicionales • La operación de CONCATENACIÓN EXTERNA IZQUIERDA mantiene cada tupla en la primera relación o relación izquierda R en R⟕S; si no se encuentra una tupla coincidente en S, entonces los atributos de S en el resultado de la concatenación se llenan o "rellenan" con valores nulos • Una operación similar, es la CONCATENACIÓN EXTERNA DERECHA, mantiene cada tupla en la segunda o relación derecha S en el resultado de R⟖S • Una tercera operación, es la CONCATENACIÓN EXTERNA COMPLETA, indicada por ⟗ mantiene todas las tuplas tanto en las relaciones izquierda como derecha cuando no se encuentran tuplas coincidentes, rellenarlas con valores nulos según sea necesario 61 Figura 8.12 El resultado de una operación CONCATENACIÓN EXTERNA IZQUIERDA 62 Operaciones relacionales adicionales • Operaciones UNIÓN EXTERNA: – La operación de unión externa se desarrolló para tomar la unión de tuplas de dos relaciones si las relaciones no son de tipo compatible – Esta operación tomará la unión de tuplas en dos relaciones R(X, Y) y S(X, Z) que son parcialmente compatibles, lo que significa que solo algunos de sus atributos, digamos X, son de tipo compatible – Los atributos que son de tipo compatible se representan solo una vez en el resultado, y los atributos que no son de tipo compatible de ninguna de las relaciones también se mantienen en la relación de resultado T(X, Y, Z) 63 Operaciones relacionales adicionales • Ejemplo: una unión externa se puede aplicar a dos relaciones cuyos esquemas son ESTUDIANTES(nombre, SSN, departamento, asesor) e INSTRUCTORES(nombre, SSN, departamento, rango): – Las tuplas de las dos relaciones se emparejan basándose en tener la misma combinación de valores de los atributos compartidos: nombre, SSN, departamento – Si un estudiante también es instructor, tanto el asesor como el rango tendrán un valor; de lo contrario, uno de estos dos atributos será nulo – La relación de resultado ESTUDIANTES_O_INSTRUCTORES tendrá los siguientes atributos: • ESTUDIANTES_O_INSTRUCTORES(nombre, SSN, departamento, asesor, rango) 64 Ejemplos de consultas en álgebra relacional: forma procedimental • C1: Recuperar el nombre y la dirección de todos los empleados que trabajan para el departamento de 'Investigación‘: – DEPTOS_INVESTIGACIONσnombreDepartamento=‘Investigación’(DEPARTAMENTOS) – EMPS_INVESTIGACION(DEPTOS_INVESTIGACION⨝nombreDepartamento=DNOEMPL EADOS) – RESULTADOπnombre, apellido, direccion(EMPS_INVESTIGACION) • C6: Recuperar los nombres de los empleados que no tienen dependientes: – – – – TODOS_EMPSπSSN(EMPLEADOS) EMPS_CON_DEPENDIENTES(SSN)πESSN(DEPENDIENTES) EMPS_SIN_DEPENDIENTES(TODOS_EMPS−EMPS_CON_DEPENDIENTES) RESULTADOπnombre, apellido(EMPS_SIN_DEPENDIENTES*EMPLEADOS) 65 Ejemplos de consultas en álgebra relacional: expresiones únicas • Como expresión única, estas consultas se convierten en: – C1: Recuperar el nombre y la dirección de todos los empleados que trabajan para el departamento de 'Investigación‘: • πnombre, apellido, direccion(σnombreDepartamento=‘Investigación’ (DEPARTAMENTOS⨝nombreDepartamento=DNO(EMPLEADOS)) – C6: Recuperar los nombres de los empleados que no tienen dependientes: • πnombre, apellido((πSsn(EMPLEADOS)−ρSsn(πEssn DEPENDIENTES)))∗EMPLEADOS) 66 Conclusiones • Álgebra relacional – Operaciones relacionales unarias – Operaciones del álgebra relacional de la teoría de conjuntos – Operaciones relacionales binarias – Operaciones relacionales adicionales – Ejemplos de consultas en álgebra relacional 67