Module 6 Relational Algebra INFS1200 Information Systems

Download Report

Transcript Module 6 Relational Algebra INFS1200 Information Systems

1
Algebra Relacional
2
El modelo de datos relacional
provee de medios para
imponer estructura y
restricciones a la base de
datos
Nombre
Salario
Dirección
Departamento
Suárez
50k
Puebla
Ventas
Dávila
40k
Atlixco
Ventas
Juárez
60k
San Martín
Ventas
Tapia
65k
Tehuacán
Contabilidad
Herrera
78k
Amozoc
Contbilidad
Motivación
Un modelo de datos
también tiene que
suministrar operaciones
para manipular los datos
Encontar los nombres y departamentos
de los empleados que ganan más de 55K
Incrementar el salario de todos los
Empleados del departamento de Ventas
en un 10%
¿Cúal es la dirección del empleado Juárez?
El conjunto básico de operaciones
del modelo relacional constituye el Algebra Relacional
Contenido
3
 Consulta Relacional
 Lenguaje de Consulta Relacional
 Operaciones del Álgebra Relacional
 Formulación de Consultas en Álgebra Relacional
 Ejercicios en Algebra Relacional
¿Qué es una consulta relacional?
4
 Los datos en una BDR pueden ser manipulados de
las siguientes formas:
– INSERT : Inserción de nuevas tuplas
– DELETE : Borrado de tuplas existentes
– UPDATE : Cambio de valores de atributos en
tuplas existentes.
– RETRIEVE: Recuperación de tuplas específicas o
relaciones completas.
 Un lenguaje de consulta relacional debe proveer
todas las operaciones anteriores.
Lenguajes de Consulta Relacionales
5
Consultas relacionales son formuladas en lenguajes
de consulta relacionales
 Algebra Relacional (AR)
– Lenguaje de consulta formal para BDR
 Structured Query Language (SQL)
– Lenguaje de consulta comprensivo, comercial
ampliamente aceptado como estandar internacional
 Query by Example (QBE)
– Lenguaje de consulta comercial, gráfico con síntaxis
mínima.
SQL vs. Algebra Relacional
6
SQL
 Lenguaje Declarativo
– Usuarios especifican qué
es el resultado de la
consulta, DBMS decide las
operaciones y el orden de
ejecución
 Operaciones
– Provee comandos para
crear y modicar la
estructura y restricciones
de la BD (DDL)
– Provee comandos para
insert, borrar, modificar y
recuperar (DML)
RA
 Lenguaje Procedural
–Expresiones algebraicas
que especifican un orden
de operaciones, ¿cómo la
consulta será procesada?
 Operaciones
– Provee operadores, que
permiten al usuario
especificar peticiones de
recuperación únicamente
Contents
7
 Consulta Relacional
 Lenguaje de Consulta Relacional
 Operaciones del Álgebra Relacional
 Formulación de Consultas en Álgebra Relacional
 Ejercicios en Algebra Relacional
Operaciones de Álgebra Relacional
8
 Las operaciones de AR son aplicadas sobre
relaciones.
 Los resultados de operaciones de AR son también
relaciones.

 Una secuencia de operaciones de AR foma una
expresión, cuyo resultado será también una
relación.
Tipos de Operaciones de AR
9
 Operaciones de Conjunto
– UNION
– INTERSECTION
– DIFFERENCE
– CARTESIAN PRODUCT
 Operaciones específicas para BDR
– SELECT
– PROJECT
– JOIN
– DIVISION
Operadores y Notación
10
Operadores de
Conjunto
 Intersection ∩
 Union ∪
 Difference —
 Cartesian Product ×
Operadores
específicos para BDR
 Select
σ
 Project Π
 Join
⋈
 Division ÷
Select
11
σ
< condición de selección >
( <nombre de la relación > )
Seleccionar aquellas filas que cumplan con una condición dada.
También es llamada “restricción”
NAME
SALARY
ADDRESS
DEPT
Smith
50k
St. Lucia
Printing
Dilbert
40k
Taringa
Printing
Jones
60k
Kenmore
Printing
Trump
65k
Auchenflower Head Office
Harrison
78k
St. Lucia
Head Office
Tuplas
seleccionadas
BD para ejemplos resueltos
COMPANY (Elmasri&Navathe)
12
1.
2.
3.
4.
5.
6.
EMPLOYEE [Ssn, Fname, Mit, Lname, Dob, Address, Sex,
Salary, Dno, SuperSSN]
DEPARTMENT [Dnumber, Dname, MGRSSN,MgrStart]
PROJECT [Pno, PName, Plocation, DNum]
DEPENDENT [ESSN,DepName, Sex, DOB, Relationship]
WORKS_ON [ESSN, PNo, Hours]
DEPT_LOCS [DNumber, DLocation]
Ejemplo de Select
13
1. Listar todos los detalles de los empleados que
trabajan en el departmento 4?
EMPLOYEE [Ename, SSN, DOB, Address, Sex,
Salary, SuperSSN, Dno]
σ Dno = 4
(EMPLOYEE)
Ejemplo de Select
14
2. Listar todos los detalles de los empleados que
ganan más $30000?
EMPLOYEE [Ename, SSN, DOB, Address, Sex,
Salary, SuperSSN, Dno]
σ Salary > 30000 (EMPLOYEE)
Ejemplo de Select
15
3. Listar todos los detalles acerca de los empleados
quienes trabajan en el departamento 4 y ganan
más de
$25000, o que trabajan en el
departmento 5 y ganan más de $30000?
EMPLOYEE [Ename, SSN, DOB, Address, Sex,
Salary, SuperSSN, Dno]
σ (Dno = 4 ∧ Salary > 25000) ∨
(Dno = 5 ∧ Salary > 30000)
(EMPLOYEE)
Project
16
Π< lista de atributos> ( < nombre de la relación> )
Selecciona aquellos atributos especificados en la lista
NAME
SALARY
ADDRESS
DEPT
Smith
50k
St. Lucia
Printing
Dilbert
40k
Taringa
Printing
Jones
60k
Kenmore
Printing
Trump
65k
Auchenflower Head Office
Harrison
78k
St. Lucia
Head Office
Atributos seleccionados
Ejemplo de Project
17
4. Para cada empleado, listar su nombre, fecha de
nacimiento y salario.
EMPLOYEE [Ename, SSN, Bdate, Address, Sex,
Salary, SuperSSN, Dno]
Π Ename,Bdate,Salary (EMPLOYEE)
Ejemplo de Project
18
5. Listar los salarios pagados a los empleados en
cada departamento, así como su número de
departamento .
EMPLOYEE [Ename, SSN, DOB, Address, Sex,
Salary, SuperSSN, Dno]
Π Dno, Salary (EMPLOYEE)
Tratando con Consultas Complejas
19
La formulación de consultas complejas podría requerir
de varias operaciones de álgebra relacional, una a
continuación de la otra
– Las operaciones pueden ser escritas como
expresiones a través de anidación de operaciones
– Las operaciones pueden ser aplicadas una a la vez
creando relaciones intermedias
Resultados intermedios tienen que ser asignados a
relaciones temporales las cuales tienen que ser
nombradas
Asignación y Nombrado de Relaciones
20
 Asignación a una Relación
– Result Relation ← Relational Expression
 Nombrado de una Relación
– TEMP ←
 Re(nombrado) de Atributos
– TEMP (dept, emp-salary) ←
Ejemplo de Asignación
21
6. Create una nueva relación llamanda RESULT,
conteniendo a cada empleado y su fecha de
nacimiento . Etiquete las columnas resultantes
como ‘Employee’ y ‘DOB’.
EMPLOYEE [Ename, SSN, Bdate, Address, Sex,
Salary, SuperSSN, Dno]
RESULT(Employee,DOB ) ← Π Ename,Bdate (EMPLOYEE)
Ejemplo de Asignación
22
7. Listar los nombres y salarios de los empleados
quienes trabajan en el departamento 5
EMPLOYEE [Ename, SSN, Bdate, Address, Sex,
Salary, SuperSSN, Dno]
Π Ename,Salary ( σ Dno = 5 (EMPLOYEE ) )
EMPS - DEP5 ← σ Dno = 5 (EMPLOYEE )
RESULT ← Π Ename,Salary (EMPS_ DEP5)
Query con
Expresión
Query con
Relaciones
Intermedias
Entendiendo Operaciones de AR
23
 SELECT
 PROJECT
 Assignment and Naming
 UNION
 INTERSECTION
 DIFFERENCE
 Properties of operators
 CARTESIAN PRODUCT
 JOIN
 DIVISION
Operaciones Básicas de Conjuntos
24
 Una Relación es un
conjunto de tuplas (no
duplicadas)
 Teoría de Conjuntos se
aplica entonces a las
relaciones (tablas)
A
B
A
B
A
B
– UNION
– INTERSECTION
– DIFFERENCE
– CARTESIAN PRODUCT
Union
A∪B
Intersection
A∩B
Difference
A-B
Compatibilidad para la Unión en Relaciones
25
dos relaciones R(A1, A2, ..., An) y S(B1, B2,
..., Bn) son compatible para la unión si y sólo sí
– Tienen el mismo grado n, (número de columnas)
– Sus columnas tienen correspondientes dominios,
dom(Ai) = dom(Bi) for 1 ≤ i ≤ n
Esta condición aplica para unión, intersección y diferencia
… Compatibilidad para la Unión
26
Aunque los dominios necesitan ser
correspondientes ellos no tienen que
tener el mismo nombre
WORKS_ON [ESSN, Pno, Hours]
WORKED_ON [Employee, Project, Duration]
donde
dom (ESSN) = dom (Employee)
dom (Pno) = dom (Project)
dom (Hours) = dom (Duration)
Unión
27
R1 ∪ R2
Produce una relación que incluye todas las tuplas
que aparecen solo en R1, sólo en R2, o en
ámbas R1 y R2
Tuplas duplicadas son eliminadas
R1 y R2 tienen que ser compatibles para la unión
Ejemplo de Unión
28
8.Identificar los empleados quienes trabajan en
proyectos o tienen dependientes .
WORKS_ON [ESSN, PNo, Hours]
DEPENDENT [ESSN, Dep_Name, Sex, DOB,
Relationship]
WORKS_ON ∪ DEPENDENT
Las relaciones no son compatibles para la Unión!
Ejemplo de Unión
29
9.Listar los ESSN’s de los empleados quienes tienen
dependientes o trabajan en proyectos.
WORKS_ON [ESSN, PNo, Hours]
DEPENDENT [ESSN, Dep_Name, Sex, DOB,
Relationship]
Π ESSN ( DEPENDENT ) ∪ Π ESSN (WORKS_ON )
Intersección
30
R1 ∩ R2
Produce una relación que incluye las tuplas que
aparecen en ámbas R1 y R2.
R1 y R2 tienen que ser compatibles para la unión.
Intersection Example
31
11. Listar los ESSN’s de los empleados quienes tienen
dependientes y son managers.
DEPENDENT [ESSN, Dep_Name, Sex, DOB, Relationship]
DEPARTMENT [DName, DNumber, MgrSSN, MgrStart]
Π ESSN ( DEPENDENT )
∩
Π MGRSSN (DEPARTMENT )
Diferencia
32
R1 - R2
Produce una relación que incluye todas las tuplas
que aparecen en R1, pero no en R2.
R1 y R2 tienen que ser compatibles para la unión.
Ejemplo de Diferencia
33
11. Listar los ESSN’s de los empleados quienes tienen
dependientes pero no trabajan en proyectos.
WORKS_ON [ESSN, PNo, Hours]
DEPENDENT [ESSN, Dep_Name, Sex, DOB,
Relationship]
Π ESSN ( DEPENDENT ) — Π ESSN (WORKS_ON )
Propiedades de los Operadores
34
 Operadores Commutativos y Asociativos
 Precedencia entre operadores en expresiones de AR
 Leyes de De Morgan’s
Commutatividad y Asociatividad
35
A∪B
A∩ B
A— B
Conmutativa
A∪B=B∪A
Asociativa
(A ∪ B) ∪ C = A ∪ ( B ∪ C )
Conmutativa
A∩ B=B∩A
Asociativa
(A ∩ B) ∩ C = A ∩ ( B ∩ C )
no Conmutativa
A— B≠ B—A
no Asociativa
(A — B) — C ≠ A — (B — C )
Precedencia
36
Alta
Baja
=, ≠, <, >, ≤, ≥
not
and
or
σ, Π
∩, ∪, —, ×, ⋈
 Operadores se ejecutan de izquierda a derecha en
la expresión
 ( ) pueden ser usados para alterar la precedencia
de los operadores indicando la más alta
prioridad.
Precedence Example
37
12.
List ar todos los empleados quienes son hombres, y ganan
más de $40000 o trabajan en el departamento 5.
EMPLOYEE [Ename, SSN, DOB, Address, Sex,
Salary, SuperSSN, Dnum]
Π Ename (σ (Sex = ‘M’ and (Salary < 40000 or Dnum = 5)) (EMPLOYEE ))
¿Cómo la solución de arriba difiere de la siguiente?
Π Ename (σ (Sex = ‘M’ and Salary < 40000 or Dnum = 5) (EMPLOYEE ))
De Morgan’s Laws
38
¬ (p∧q) ≡ ¬ p ∨¬ q
¬ (p∨q) ≡ ¬ p ∧¬ q
donde p y q son predicados, ej.Age>20, Dept=Research
¬ (Salary > 40000) ∧ (Dept = Research) )
≡
¬ (Salary > 40000) ∨ ¬ (Dept = Research)
Ejemplo DeMorgan’s Law
39
13. Listar todos los pryectos los cuales ni están
localizados en Brisbane, ni están controlados por
el departamento 4.
PROJECT [PName, PNo, Plocation, Dnum]
Π Pname(σ not (Plocation = ‘Brisbane’) and not (Dnum=4) (PROJECT))
≡
Π Pname (σ not (Plocation = ‘Brisbane’ or Dnum=4) (PROJECT))
≡
Π Pname (σ not (Plocation <> ‘Brisbane’ and Dnum <> 4) (PROJECT))
Producto Cartesiano
40
R1 × R2
 También es conocido como producto cruz. R1 y
R2 no necesitan ser compatibles para la unión.
 El resultado de R1 (A1, A2, … An) x R2 (B1, B2, …
Bm) s una relación Q con n + m atributos Q
(A1, A2, … An, B1, B2, … Bm) en ese orden.
 Q tiene una tupla para cada combinación de
tuplas de R1 y R2, entonces si R1 tiene r tuplas y
R2 tiene t tuplas, entonces Q tendrá r * t tuplas
Ejemplo de Producto Cartesiano
41
Subject
CS114
CS115
CS180
×
Student
Degree
Anna
BIT
Fred
BSc
=
Subject
Student
Degree
CS114
Anna
BIT
CS114
Fred
BSc
CS115
Anna
BIT
CS115
Fred
BSc
CS180
Anna
BIT
CS180
Fred
BSc
Ejemplo de Producto Cartesiano
42
14. Para cada empleado mujer, listar su nombre.
EMPLOYEE [Ename,SSN,DOB,Address,Sex,Salary,SuperSSN, Dno]
DEPENDENT [ESSN, DepName, Sex, DOB, Relationship]
FEMALE_EMPS ← σ Sex = ‘F’ (EMPLOYEE)
EMP_NAMES ← Π Ename, SSN (FEMALE_EMPS)
EMP_DEPEND ← EMP_NAMES × DEPENDENT
ACTUAL_DEPEND ← σ SSN = ESSN (EMP_DEPEND)
RESULT ← Π Ename, DepName (ACTUAL_DEPEND)
Entendiendo Operaciones en RA
43
 SELECT
 PROJECT
 Assignment and Naming
 UNION
 INTERSECTION
 DIFFERENCE
 Properties of operators
 CARTESIAN PRODUCT
 JOIN
 DIVISION
Operaciones Join
44
 Join (reunión) es similar al Producto Cartesiano ,
pero sólo pares de tuplas seleccionadas estarán en el
resultado.
 Join es usada para combinar tuplas relacionadas de
dos relaciones en una simple tupla de una nueva
relación. Esto es necesario cuando la información se
encuentra en más de una relación.
 Tipos de Operaciones Join:
– Theta-Join
– Equi-Join
– Natural Join
Theta-Join
45
R1 ⋈
< condición de join>
R2
Una condición(es) de join es de la forma A θ B,
donde A ∈ R1 y B ∈ R2,
y θ es uno de {=, <, ≤, >, ≥}
Ejemplo de Theta-Join
46
15. Para cada empleado, listar todos los empleados
quienes ganaron más que el primer empleado.
EMPLOYEE [Ename, SSN, DOB, Address, Sex, Salary,
SuperSSN, Dno]
A ← EMPLOYEE
B ← EMPLOYEE
RESULT ← Π A.Ename, B.Ename (A⋈
A.Salary < B.Salary
B)
Equi-Join
47
R1 ⋈
< condición de join >
R2
Especializacion de Join
La condición de join tiene sólamente comparaciones
de igualdad.
Ejemplo de Equi-Join
48
16. Listar los nombres de los managers de
cada departamento.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary,
SuperSSN, Dno]
DEPARTMENT [ DName, DNumber, MgrSSN, MgrStart]
DEPT_MGR ← DEPARTMENT ⋈
RESULT ← Π Ename (DEPT_MGR)
MGRSSN = SSN
EMPLOYEE
Join Natural
49
R1 * R2
 Similar al equi-join excepto que los atributos que
son usados en el join son aquellos que tienen el
mismo nombre en cada relación.
 Consecuentemente, ellos no son explícitamente
especificados.
 Columnas duplicadas son eliminadas.
Ejemplo de Join Natural
50
Subject
Student
CS114
Anna
CS115
Fred
CS180
Anna
CS214
Bobby
*
Student
Degree
Anna
BIT
Anna
Fred
Subject
Student
Degree
CS114
Anna
BIT
BA
CS114
Anna
BA
BSc
CS115
Fred
BSc
CS180
Anna
BIT
CS180
Anna
BA
=
Ejercicio de Join Natural
51
17. ¿Cúal es el esquema del resultado de la
siguiente consulta?
¿Sobre qué atributo es el join ejecutado?
DEPARTMENT [ DName, DNumber, MgrSSN, MgrStart ]
DEPT_LOCS [ DNumber, Dlocation ]
DEPARTMENT * DEPT_LOCS
Ejemplo de Join Natural
52
18. ¿Cúal es la diferencia entre los resultados de las
siguientes consultas ? ¿Sobre qué atributo es el join
ejecutado?
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno ]
DEPARTMENT [ DName, DNumber, MgrSSN, MgrStart ]
EMPLOYEE * DEPARTMENT
EMP(MgrSSN ,Dnumber) ← Π SSN,Dno (EMPLOYEE)
RESULT ← EMP * DEPARTMENT
División
53
R1 ÷ R2
 La relación resultante contiene columnas en R1,
pero no en R2
 Relaciones R1 y R2 tienen que ser división
compatibles, i.e las últimas n columnas de R1
tienen que ser identicamente nombradas a las
columnas en R2, donde n es el grado de R2.
 La relación resultante contiene tuplas t, tal que
un valor en t aparece en R1, en combinación con
cada tupla en R2
Ejemplo de División
54
Student
Degree
Subject
Anna
BIT
CS114
Anna
BIT
CS115
Anna
BIT
CS180
Fred
BSc
CS114
Fred
BSc
CS180
Subject
÷
CS114
CS115
=
Student
Degree
Anna
BIT
Ejemplo de División
55
22. Recuperar los nombres de los empleados quienes
trabajan en todos los proyectos donde John Smith
trabaja.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno]
WORKS_ON [ ESSN, Pno, Hours ]
SMITH ← σ Ename=‘John Smith’ (EMPLOYEE)
SMITH_PNOS ← Π Pno (WORKS_ON ⋈ ESSN=SSN SMITH)
SSN_PNOS ← Π ESSN, Pno (WORKS_ON)
SSNS(SSN) ← SSN_PNOS ÷ SMITH_PNOS
RESULT ← Π Ename (SSNS * EMPLOYEE)
Contenido
56
 Consulta Relacional
 Lenguaje de Consulta Relacional
 Operaciones del Álgebra Relacional
 Formulación de Consultas en Álgebra Relacional
 Ejercicios en Algebra Relacional
Formulación de Consultas en AR
57
 Conocer esquema y estado(s) de la BD
 Interpretación de la consulta en lenguaje natural
 Identificar cuales relaciones, tuplas (SELECT), y atributos
(PROJECT) que serán requeridos por la consulta.
 Identificar las interrelaciones entre las relaciones requeridas y
de acuerdo a estas cuales operadores binarios pueden ser
usados
(JOIN, PRODUCT, UNION, DIVISION, …)
 Formular la conslta teniendo en mente las propiedades de los
operadores (Commutativo/Asociativo, Precedencia, De
Morgan’s Laws)
¿Cuál operador de AR usar?
58
 SELECT ←
 PROJECT ←






UNION ←
INTERSECTION
DIFFERENCE ←
CARTESIAN PRODUCT ←
JOIN
DIVISION
 Use operadores unarios SELECT /
PROJECT cuando seleccionamos
tuplas/atributos respectivamente
respectively de una sola relación
 Use operadores binarios UNION,
PRODUCT, JOIN, … cuando
queremos relacionar 2 ó más
relaciones
{ σ ,Π, U, —, × } Conjunto completo de operadores
Conjunto completo de operadores de AR
59
 Ha sido probado que {σ, Π, ∪, —, ×} es un conjunto
completo de operadores de AR
 Los operadores restantes de AR pueden ser expresados
como una secuencia de operaciones del conjunto anterior
 Dichos operadores restantes han sido definidos
primariamente por conveniencia !
Expresando otros operadores
60
 Intersection
R ∩ S ≡ ( R ∪ S ) – (( R — S ) ∪ ( S — R ))
 (Thieta/Equi) Join
R <condition> S ≡ σ <condition> ( R × S)
 Natural Join
S(B1,B2, B3, … Bm)
R1 (B1, A2, A3, . . . An) ← Π (A1, A2, A3, . . . An) R
R * S ≡ Π (B1, A2, A3, ... An, B2, ... Bm) σ <R.B1 = S.B1>( R1×S)
Expresando otros operadores
61
 Division
T1 ← Π Y ( R )
T2 ← Π Y ( ( S × T1 ) — R )
R ÷ S ≡ T1 — T2
Funciones y Operaciones de Agregación
62
 La función de Agregación toma una colección de valores y devuelve
un único valor como resultado:
avg: valor promedio
min: valor mínimo
max: valor máximo
sum: suma de valores
count: cantidad de valores
 Operación de Agregar en álgebra relacional
G1, G2, …, Gn




g F1( A1), F2( A2),…, Fn( An) (E)
E es cualquier expresión en álgebra relacional
G1, G2 …, Gn es una lista de atributos en los cuales agrupar (puede estar
vacía)
Cada Fi es una función de agregación
Cada Ai es un nombre de atributo
Ejemplo de la Operación Agregación
63
 Relación ACCOUNT agrupada por branch-name:
branch-name account-number
Perryridge
Perryridge
Brighton
Brighton
Redwood
branch-name
g
balance
A-102
A-201
A-217
A-215
A-222
sum(balance)
400
900
750
750
700
(ACCOUNT)
branch-name
Perryridge
Brighton
Redwood
balance
1300
1500
700
Funciones de Agregación (Cont.)
64
 El resultado de la agregación no tiene un nombre.
branch-name


g
sum(balance) as sum-balance (account)
Puede utilizarse la operación de renombrar (rename) as para
denominarla.
Por conveniencia, se permite renombrar como parte de la
operación de agregación.
Contenido
65
 Consulta Relacional
 Lenguaje de Consulta Relacional
 Operaciones del Álgebra Relacional
 Formulación de Consultas en Álgebra Relacional
 Ejercicios en Algebra Relacional
Ejercicios en Algebra Relacional
66
Los siguientes ejercicios usan la base de datos Company del
libro Elmasri & Navathe como un ejemplo para ilustrar
consultas en AR que requieren el uso de múltiples
operadores de AR.
 EMPLOYEE [Ssn, Fname, Mit, Lname, Dob, Address, Sex,





Salary, Dno, SuperSSN]
DEPARTMENT [Dnumber, Dname, MGRSSN,MgrStart]
PROJECT [Pno, PName, Plocation, DNum]
DEPENDENT [ESSN,DepName, Sex, DOB, Relationship]
WORKS_ON [ESSN, PNo, Hours]
DEPT_LOCS [DNumber, DLocation]
Ejercicio de Join
67
23. Recuperar el nombre y dirección de todos los empleados
quienes trabajan en el departamento de “Research”.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno ]
DEPARTMENT [ Dname, Dnumber, MgrSSN, MgrStart ]
RESEARCH_DEPT ← σ Dname=‘Research’ (DEPARTMENT)
RESEARCH_DEPT_EMPS ← (RESEARCH_DEPT ⋈ EMPLOYEE)
Dnumber=Dno
RESULT ← Π Ename,Address (RESEARCH_DEPT_EMPS)
Ejercicio de Join
68
24. Para cada proyecto localizado en Houston, listar el número
de proyecto, el número del departamento que controla el
proyecto, y el nombre, dirección y fecha de nacimiento del
manager del departamento.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno]
DEPARTMENT [ Dname, Dnumber, MgrSSN, MgrStart]
PROJECT [ PName, Pnumber, Plocation, Dnum]
HOUSTON_PROJS ← σ Plocation=‘houston’ (PROJECT)
CONTR_DEPT ← (HOUSTON_PROJS ⋈ Dnum=Dnumber DEPARTMENT)
PROJ_DEPT_MGR ← (CONTR_DEPT⋈ MgrSSN=SSN EMPLOYEE)
RESULT ← Π Pnumber,Dnum,Ename,Address,Bdate (PROJ_DEPT_MGR)
Ejercicio de División
69
25. Encontrar los nombres de los empleados que
trabajan en todos los proyectos controlados por el
departamento 5.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno]
PROJECT [ PName, Pnumber, Plocation, Dnum]
WORKS_ON [ ESSN, Pno, Hours]
DEPT5_PROJS(Pno) ← Π Pnumber (σ Dnum=5 (PROJECT))
EMP_PROJ(SSN,Pno) ← Π ESSN,Pno (WORKS_ON)
RESULT_EMP_SSNS ← EMP_PROJ ÷ DEPT5_PROJS
RESULT ← Π Ename (RESULT_EMP_SSNS * EMPLOYEE )
Ejercicio de Unión
70
26. Listar los números de proyectos para aquellos proyectos
que involucran al empleado “Smith”,
en los roles de
trabajador o como manager del departamento que controla el
proyecto.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno]
PROJECT [ PName, Pnumber, Plocation, Dnum]
DEPARTMENT [ Dname, Dnumber, MgrSSN, MgrStart]
WORKS_ON [ ESSN, Pno, Hours]
SMITHS(ESSN) ← Π SSN (σ Ename=‘Smith’ (EMPLOYEE))
SMITH_WORKER_PROJS ← Π Pno (WORKS_ON * SMITHS)
MGRS ← Π Ename,Dnumber (EMPLOYEE ⋈ SSN=MgrSSN DEPARTMENT)
SMITH_MGRS ← σ Ename=‘Smith’ (MGRS)
SMITH_MANAGED_DEPTS(Dnum) ← Π Dnumber (SMITH_MGRS)
SMITH_MGR_PROJS(Pno) ← Π Pnumber (SMITH_MANAGED_DEPTS *
PROJECT)
RESULT ← SMITH_WORKER_PROJS ∪ SMITH_MGR_PROJS
Ejercicio de Diferencia
71
27. Recuperar los nombres de los empleados quienes no
tengan dependientes.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN,
Dno]
DEPENDENT [ ESSN, Dep_Name, Sex, DOB, Relationship]
ALL_EMPS ← Π SSN (EMPLOYEE)
EMPS_WITH_DEPS(SSN) ← Π ESSN (DEPENDENT)
EMPS_WITHOUT_DEPS ← ( ALL_EMPS —
EMPS_WITH_DEPS)
RESULT ← Π Ename (EMPS_WITHOUT_DEPS * EMPLOYEE )
Ejercicio de Intersección
72
28. Listar los nombres de los managers quienes tengan
al menos un dependiente.
EMPLOYEE [ Ename, SSN, DOB, Address, Sex, Salary, SuperSSN, Dno]
DEPARTMENT [ Dname, Dnumber, MgrSSN, MgrStart]
DEPENDENT [ ESSN, Dep_Name, Sex, DOB, Relationship]
MGR(SSN) ← Π MgrSSN (DEPARTMENT)
EMPS_WITH_DEPS(SSN) ← Π ESSN (DEPENDENT)
MGRS_WITH_DEPS ← (MGRS ∩ EMPS_WITH_DEPS)
RESULT ← Π Ename (MGRS_WITH_DEPS * EMPLOYEE)
Resumen
73
 El Álgebra Relacional provee los fundamentos teóricos para los
lenguajes de consulta relacionales.
– AR opera en relaciones enteras y produce resultados los cuales
también son relaciones.
– Las expresiones de AR, consisten de una secuencia de
operadores de AR, los cuales especifican un procedimiento de alto
nivel para alcanzar el resultado de una consulta.
 Sin embargo, la formulación de consultas algebraicas relacionales
es procedural, y por lo tanto se enfoca en como el resultado de
una consulta puede ser alcanzado.
 Lenguajes de consulta declarativos como SQL, permiten al
usuario especificar qué información el usuario quiere ,en vez de
como el resultado va a ser obtenido.
Lectura Recomendada
74
Elmasri & Navathe
Chapter 7
5. Álgebra Relacional:
El Componente Teórico.
75

















5.1 Objetivo Educativo.
Que el alumno aprenda el modelo relacional a partir del conocimiento de un conjunto de
operaciones algebraicas que describen paso a paso como computar una respuesta sobre las
relaciones y que se usan como una representación de una consulta a una base de datos.
5.2 Contenido.( Conceptos, Términos y Procedimientos)
Contenido:
5.2.1 Consulta Relacional
5.2.2 Lenguaje de Consulta Relacional
5.2.3 Operaciones del Álgebra Relacional
5.2.4 Formulación de Consultas en Álgebra Relacional
5.3 Actividades de Aprendizaje.
5.3.1 Exposición de temas
5.3.2 Ejemplos resueltos en Algebra Relacional
5.4 Evaluación de Adquisición del Conocimiento.
5.4.1 Ejercicios propuestos para su resolución individual y en equipos
5.4.2 Ejercicios de examen parcial
5.5 Referencias del Capítulo.
[1] Elmasri-Navathe. Sistemas de Bases De Datos Conceptos Fundamentales, Addison-Wesley
Iberoamericana, Quinta Edición, 1997, pp. 1-17