Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algebra Relacional: Capitulo V
Algebra Relacional: Capitulo V
FACULTAD DE CIENCIAS Y
TECNOLOGÍA
INFORMATICA
Capitulo V
ALGEBRA
RELACIONAL
Departamento de Lenguajes y Sistemas Informáticos
Objetivos:
➢ Conocer los fundamentos de la Dinámica del Modelo
Relacional, es decir, los aspectos fundamentales de los
lenguajes relacionales formales:
➢ Algebra Relacional
➢ Calculo Relacional
Introducción
o Hay métodos y operaciones que permiten crear
relaciones derivadas a partir de relaciones
preexistentes.
o Algebra Relacional: Formula una consulta en terminos
de operadores algebraicos que actúan sobre las
relaciones.
o Calculo Relacional: formula una consulta en términos
de lógica de predicados sin símbolos de negación ni de
función.
Algebra Relacional
Un lenguaje de consulta es aquel en el que el usuario
•
Relación P: A B C
a 10 1
a 20 1
b 30 1
b 40 2
A,C (P)
A C
A C
a 1
a 1
a 1
b 1
b 1
b 2
b 2
9
Ejemplo
Dadas las siguientes tablas:
ESTUDIANTE LOCALIDAD
NOMBRE CIUDAD CIUDAD PROVINCIA
Pepe Potosi Potosi Saavedra
Maria Sucre Sucre Oropeza
CALIFICACION
NOMBRE ASIGNATURA NOTA
Pepe SIS302 75
Maria SIS324 58
Pepe SIS324 50
Selección (σ) .-
Notación: σP(S)
Ejemplo
A B C D
A B C D
a b 5 7
a a 1 7
a b 5 7
b b 12 3 A=B ^ D > 5 (S)
b b 23 10
A B C D
a a 1 7
b b 23 10
12
Ejemplo
Dadas las siguientes tablas:
ESTUDIANTE LOCALIDAD
NOMBRE CIUDAD CIUDAD PROVINCIA
Pepe Potosi Potosi Saavedra
Maria Sucre Sucre Oropeza
CALIFICACION
NOMBRE ASIGNATURA NOTA
Pepe SIS302 75
Maria SIS324 58
Pepe SIS324 50
Unión U.-
Notación: R ∪ S
CALIFICACION1 CALIFICACION2
NOMBRE ASIGNATURA NOTA NOMBRE ASIGNATURA NOTA
Pepe SIS302 75 Maria SIS324 58
Maria SIS324 58 Pepe SIS324 50
CALIFICACION1 CALIFICACION2
NOMBRE ASIGNATURA NOTA
Pepe SIS302 75
Maria SIS324 58
Pepe SIS324 50
Diferencia (–).-
R1 - S1:
A B
a 1
b 1
21
CALIFICACION1 CALIFICACION2
NOMBRE ASIGNATURA NOTA NOMBRE ASIGNATURA NOTA
Pepe SIS302 75 Maria SIS324 58
Maria SIS324 58 Pepe SIS324 50
CALIFICACION1 - CALIFICACION2
NOMBRE ASIGNATURA NOTA
Pepe SIS302 75
Notación: R X S
Ejemplo
Relaciones R, S:
R S C D E
A B
a 10 x
a 1
b 10 x
b 2 b 20 y
R x S: A B C D E t 10 y
a 1 a 10 x
a 1 b 10 x
a 1 b 20 y
a 1 t 10 y
b 2 a 10 x
b 2 b 10 x
b 2 b 20 y
b 2 t 10 y
Composición de Operadores
Se pueden construir expresiones
concatenando operadores
Por ejemplo: A=C(R x S)
R x S: A B C D E
a 1 a 10 x A=C(R x S)
a 1 b 10 x
A B C D E
a 1 b 20 y
a 1 a 10 x
a 1 t 10 y
b 2 b 10 x
b 2 a 10 x
b 2 b 20 y
b 2 b 10 x
b 2 b 20 y
b 2 t 10 y
Ejemplo
ESTUDIANTE
CU NOMBRE CARRERA
35-666 Jose IS CALIFICACION
35-667 Maria IS
102-668 Rene CC CU NOTA
35-666 98
102-668 75
35-667 35
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPARTAMENTO
1111 Joao M 9000 1 DEPTO_ID NOMBRE_DEPTO
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
FUNCIONARIO X DEPARTAMENTO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPTO_ID. NOMBRE_DEPTO
1111 Joao M 9000 1 1 ADM
1111 Joao M 9000 1 2 RRHH
2222 Maria F 8200 1 1 ADM
2222 Maria F 8200 1 2 RRHH
3333 Ana F 1500 2 1 ADM
3333 Ana F 1500 2 2 RRHH
Listar los datos de los funcionarios y departamento al que pertenece:
FUNCIONARIO.DEPTO_ID=DEPARTAMENTO.DEPTO_ID(FUNCIONARIO X DEPARTAMENTO)
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPARTAMENTO
1111 Joao M 9000 1 DEPTO_ID NOMBRE_DEPTO
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
SELECT *
FROM FUNCIONARIO, DEPARTAMENTO
WHER FUNCIONARIO.DEPTO_ID=DEPARTAMENTO.DEPRO_ID
SELECT *
FROM FUNCIONARIO AS F, DEPARTAMENTO AS D
WHERE F.DEPTO_ID=D.DEPRO_ID;
SELECT *
FROM FUNCIONARIO F, DEPARTAMENTO D
WHERE F.DEPTO_ID=D.DEPRO_ID;
Asignación: :=
Renombrado:
Dada una expresión E del álgebra relacional, la
expresión ρx (E) devuelve el resultado de la expresión
E con el nombre x.
Renombra una relación y/o sus atributos:
ρx (A1, A2, … , An) (E)
ρNotas (Estudiante,Curso,Nota) (CALIFICACION)
Notas
NOMBRE ASIGNATURA NOTA
Pepe SIS302 75
Maria SIS324 58
Pepe SIS324 50
Base de Datos I SIS-302
Operadores derivados:
Natural Join:
R3 S3 A B C D E
a 1 a x a
a 1 a x t
a 1 t x a
a 1 t x t
c 2 b y c
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPARTAMENTO
1111 Joao M 9000 1 DEPTO_ID NOMBRE_DEPTO
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
FUNCIONARIO DEPARTAMENTO
Equivalente a un Producto Cartesiano seguido de una Selección:
FUNCIONARIO.DEPTO_ID=DEPARTAMENTO.DEPTO_ID(FUNCIONARIO X
DEPARTAMENTO)
3
6
3
7
Ejemplo
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPARTAMENTO
1111 Joao M 9000 1 DEPTO_ID NOMBRE_DEPTO
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
SELECT *
FROM FUNCIONARIO F INNER JOIN DEPARTAMENTO D
ON F.DEPTO_ID=D.DEPRO_ID;
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPARTAMENTO
1111 Joao M 9000 1 DEPTO_ID NOMBRE_DEPTO
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
SELECT *
FROM FUNCIONARIO F JOIN DEPARTAMENTO D
ON F.DEPTO_ID=D.DEPTO_ID;
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPARTAMENTO
1111 Joao M 9000 1 DEPTO_ID NOMBRE_DEPTO
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
SELECT *
FROM FUNCIONARIO NATURAL JOIN DEPARTAMENTO;
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID DEPTO_ID. NOMBRE_DEPTO
1111 Joao M 9000 1 1 ADM
2222 Maria F 8200 1 1 ADM
3333 Ana F 1500 2 2 RRHH
Intersección ∩ .-
Notación: R ∩ S
R2 S2:
A B
a 2
46
Ejemplo
CALIFICACION1 CALIFICACION2
NOMBRE ASIGNATURA NOTA NOMBRE ASIGNATURA NOTA
Pepe SIS302 75 Maria SIS324 58
Maria SIS324 58 Pepe SIS324 50
CALIFICACION1 ∩ CALIFICACION2
r ∩ s que r – (r – s).
Base de Datos I SIS-302
Operación División
RS
Dadas R y S, donde S R(la cabecera de S es un subconjunto
de la cabecera de R).Se construye una nueva relacion
formada por los atributos de R que no estan en S, donde
los valores de los otros atributos concuerdan con todos los
valores de la relacion S.
Relaciones r, s:
r A B s B
1 1
2
3 2
1
1
1
3
4
6
1
2
r s: A
Relaciones r, s:
r A B C D E
s D E
a a 1 a 1
a a 1 b 1
a b 1
a a 1
a b 3
a a 1
a b 1
a b 1
r s: A B C
a
a
5
2
Ejemplo
FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID
1111 Joao M 9000 1
2222 Maria F 8200 1
3333 Ana F 1500 2
PROYECTO TRABAJA
PROY_ID NOMBRE_PROY FUNC_ID PROY_ID HORAS
10 ProdX 1111 10 25
1111 20 15
20 ProdY
2222 20 40
30 Info 3333 10 20
3333 20 20
5
3
Proyeccion Generalizada
Permite que funciones sobre los atributos sean incluidas en la lista de
la Proyección
FUNC_ID,Salario*0,25,Salario-Salario*0.25(FUNCIONARIO)
Los atributos pueden ser renombrados:
ρ(FUNC_ID,IMPUESTO,SALARIOLIQUIDO)
(FUNC_ID,Salario*0,25,Salario-Salario*0.25(FUNCIONARIO))
Funciones de Agregación:
Las funciones de agregación son funciones que toman una
colección de valores y devuelven como resultado un único
valor.
Son las siguientes:
➢ COUNT: devuelve la cantidad de tuplas de una relación que cumplan
una determinada condición.
➢ SUM: devuelve el valor correspondiente a la suma de valores de un
atributo en un conjunto de tuplas.
➢ AVG: devuelve el valor promedio (average) de un atributo en un
conjunto de tuplas.
➢ MIN: devuelve el valor mínimo de un atributo en un conjunto de
tuplas.
➢ MAX: devuelve el valor máximo de un atributo en un conjunto de
tuplas. Base de Datos I SIS-302
Donde:
E es cualquier expresión del álgebra relacional;
G1, G2, … , Gn constituye una lista de atributos que
indican cómo se realiza la agrupación,
✓ cada Fi es una función de agregación,
✓ cada Ai es el nombre de un atributo.
Base de Datos I SIS-302
5
7
Ejemplo
Dada la relacion “trabajo_por_horas” que
muestra los empleados a tiempo parcial,
aplicaremos las diferentes funciones.
5
8
Ejemplo
Si se requiere saber cuántas tuplas en total
tiene esa relación,
5
9
Ejemplo
Si se requiere saber cuánto suman los sueldos
de los empleados a tiempo parcial (suma de
todos los valores del atributo sueldo en la
relación “trabajo_por_horas”)
6
0
6
1
6
2
6
3
6
4
6
5
6
6
¿Preguntas????