Uploaded by Josue Romero

El álgebra relacional

advertisement
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 RS, 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)
RESULTADORESULTADO1RESULTADO2
– 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
RESULTADORESULTADO1RESULTADO2
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 R1R2 (también para R1R2, 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 RS, 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:
– RS = SR y RS = SR
• 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(ST) = (RS)T
– (RS)T = R(ST)
• 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_MGRDEPARTAMENT0S⨝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_MGRDEPARTAMENT0S⨝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_DEPTODEPARTMENTOS*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: QR(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:
– RS = (RS)−((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 =
XY); 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
Download