Está en la página 1de 34

SIS 302 BASE DE DATOS I 19/11/2023

FACULTAD DE CIENCIAS Y
TECNOLOGÍA
INFORMATICA
Capitulo V
ALGEBRA
RELACIONAL
Departamento de Lenguajes y Sistemas Informáticos

Ing. Edgar T. Espinoza R.

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

➢ Conocer los principales lenguajes de los SGBD


comerciales:
➢ SQL (versión 92)
➢ QBE

SIS 302 BASE DE DATOS I Ing. Edgar T. Espinoza R.

Ing. Edgar Espinoza R. 1


SIS 302 BASE DE DATOS I 19/11/2023

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.

o Algebra Relacional y Calculo Relacional son equivalentes.


o Toda formula del calculo de relaciones es expresable
mediante una secuencia de operaciones de Algebra.

Algebra Relacional
Un lenguaje de consulta es aquel en el que el usuario

puede solicitar información de la base de datos. Suele ser de


más alto nivel que los lenguajes de programación
estándar,

y se clasifican en:

❖ En un lenguaje procedimental el usuario da


instrucciones al sistema para que realice una serie de

operaciones sobre la base de datos con el fin de obtener el
resultado deseado.
❖ En un lenguaje no procedimental (o declarativo) el usuario

describe la información deseada sin dar un
procedimiento concreto sobre cómo obtener esa
información.

Ing. Edgar Espinoza R. 2


SIS 302 BASE DE DATOS I 19/11/2023

El Álgebra Relacional es un lenguaje de


consulta sobre Bases de Datos Relacionales,
procedimental.
Consta de un conjunto de operaciones que toman una
o dos relaciones como entrada y producen una nueva
relación como salida.

Tipos de Operaciones del Algebra Relacional.


Operaciones Unarias (U):
Operaciones que reciben, como parámetros de entrada, datos de
UNA SOLA tabla.
Operaciones Binarias (B):
Operaciones que reciben, como parámetros de entrada, datos de
DOS tablas
Operaciones Primarias (Basicas) (P):
Operaciones que son nativas, no hay otra manera d ejecutarse o
implementarse (como la suma y resta en la aritmética).
Operaciones Secundarias (S):
Operaciones que se pueden implementar con base en las
operaciones primarias (básicas)

Ing. Edgar Espinoza R. 3


SIS 302 BASE DE DATOS I 19/11/2023

Las operaciones del álgebra relacional son:


➢Selección (U - P).
➢Proyección (U - P)
➢Renombramiento (U – P)
➢Unión (B – P)
➢Diferencia de conjuntos (B – P)
➢Producto Cartesiano (B - P)
➢Reunión Natural (B – S)
➢Intersección (B – S)
➢División (B – S)

Operaciones del Algebra Relacional


Proyección ().-

La Proyección de una relación (R) es la relación definida sobre los


atributos indicados (a, b,, ….):  A, B, …,(P)
Permite extraer columnas (atributos) de una relación, dando como
resultado un subconjunto vertical de atributos de la relación.
Elimina posibles filas duplicadas.

Notación:  A1, A2,…,An (P)

Ing. Edgar Espinoza R. 4


SIS 302 BASE DE DATOS I 19/11/2023

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

1. Listar las provincias.


2. Listar las materias y notas correspondientes
Base de Datos I SIS-302

Ing. Edgar Espinoza R. 5


SIS 302 BASE DE DATOS I 19/11/2023

Selección (σ) .-

Se utiliza la letra griega sigma (σ) para denotar la selección. El


predicado aparece como subíndice de σ.
La relación del argumento se da entre paréntesis a continuación
de σ.
Permite seleccionar un subconjunto de tuplas de una relación
(S), todas aquellas que cumplan la(s) condición(es) del predicado
P.

Notación: σP(S)

Ejemplo

Relación S A<>B (S)

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

Ing. Edgar Espinoza R. 6


SIS 302 BASE DE DATOS I 19/11/2023

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

1. Listar las notas de los alumnos aprobados.


2. Listar las materias aprobadas del alumno Pepe
Base de Datos I SIS-302

Instrucciones sintácticamente correctas:


Posibilidad 1:
marca=“Chevrolet” (placa,modelo (CARRO))
Posibilidad 2:
placa,modelo (marca=“Chevrolet” (CARRO))
SELECT placa, marca
CARRO(Placa, Marca, Modelo, Capacidad) FROM CARRO
PK WHERE marca=‘Chevrolet’

En general, se permiten las comparaciones que utilizan


=, ≠, <, ≤, > o ≥ en el predicado de selección.
Además, se pueden combinar varios predicados en uno
mayor utilizando tanto el operador y (∧) como el
operador o (∨). Base de Datos I SIS-302

Ing. Edgar Espinoza R. 7


SIS 302 BASE DE DATOS I 19/11/2023

Unión U.-

Devuelve una relación que incluye las tuplas que están en R o


en S o en ambas.
Las relaciones que se unan han de tener los mismos tipos de
atributos (deben ser compatibles), y se eliminan las tuplas
repetidas.

Notación: R ∪ S

Base de Datos I SIS-302

Relaciones R1, S1:


R1 S1
A B A B
a 1 a 2
a 2 b 3
b 1
R1  S1: A B
a 1
a 2
b 1
b 3
16

Ing. Edgar Espinoza R. 8


SIS 302 BASE DE DATOS I 19/11/2023

Por tanto, para que una operación unión R ∪ S sea


válida hay que exigir que se cumplan dos condiciones:

1. Las relaciones R y S deben ser del mismo grado. Es


decir, deben tener el mismo número de atributos.
2. Los dominios de los atributos i-ésimos de R y de S
deben ser iguales para todo i.

Ejemplo. Dadas las relaciones:

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

SIS 302 BASE DE DATOS I Ing. Edgar T. Espinoza R.

Ing. Edgar Espinoza R. 9


SIS 302 BASE DE DATOS I 19/11/2023

Ejemplo. Dadas las relaciones:

(placa,marca (CARRO  BUS))


Los campos comunes son placa y marca:
(placa,marca (CARRO) placa,marca (BUS)

(placa,marca (CARRO)  placa,marca (BUS)

Diferencia (–).-

La operación diferencia de conjuntos, denotada por (–),


permite buscar las tuplas que estén en una relación pero no en
la otra. La expresión r – s da como resultado una relación que
contiene las tuplas que están en r pero no en s.
Como en el caso de la operación unión, hay que asegurarse de
que las diferencias de conjuntos se realicen entre relaciones
compatibles.

Ing. Edgar Espinoza R. 10


SIS 302 BASE DE DATOS I 19/11/2023

Relaciones R1, S1:


R1 S1
A B A B
a 1 a 2
a 2 b 3
b 1

R1 - S1:
A B
a 1
b 1
21

Ejemplo. Dadas las relaciones:

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

SIS 302 BASE DE DATOS I Ing. Edgar T. Espinoza R.

Ing. Edgar Espinoza R. 11


SIS 302 BASE DE DATOS I 19/11/2023

Producto Cartesiano X.-

El producto cartesiano de dos relaciones R y S, R X S,


es otra relación, definida sobre la unión de las
cabeceras de R y S, cuyas tuplas se forman
concatenando cada tupla de R con cada una de las
tuplas de S en todas las formas posibles

Notación: R X S

Base de Datos I SIS-302

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

Ing. Edgar Espinoza R. 12


SIS 302 BASE DE DATOS I 19/11/2023

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

Obtener la lista de los estudiantes reprobados

Ing. Edgar Espinoza R. 13


SIS 302 BASE DE DATOS I 19/11/2023

Ejemplo Dadas las siguientes tablas:

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)

Listar los datos de los funcionarios y departamento al que pertenece:

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

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

SELECT *
FROM FUNCIONARIO, DEPARTAMENTO
WHER FUNCIONARIO.DEPTO_ID=DEPARTAMENTO.DEPRO_ID

Ing. Edgar Espinoza R. 14


SIS 302 BASE DE DATOS I 19/11/2023

Nombre de Atributos Ambiguos


En conulta con dos o mas atributos con el mismo nombre
(en tablas diferentes), los nombres de esos atributos
deben ser renombrados con el nombre de sus tablas para
evitar ambiguedades
Los nombress de las tablas pueden ser renombrado por nombres
mas cortos, para simplificar su escritura.

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: :=

Asigna una relación que es resultado de operaciones


algebraicas a una nueva relación.

NotasPepe:= σNOMBRE = “Pepe” (CALIFICACION)


NotasPepe
NOMBRE ASIGNATURA NOTA
Pepe SIS302 75
Pepe SIS324 50
Base de Datos I SIS-302

Ing. Edgar Espinoza R. 15


SIS 302 BASE DE DATOS I 19/11/2023

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:

Ing. Edgar Espinoza R. 16


SIS 302 BASE DE DATOS I 19/11/2023

Natural Join:

Suele resultar deseable simplificar ciertas consultas


que exigen un producto cartesiano. Generalmente, las
consultas que implican un producto cartesiano
incluyen un operador selección sobre el resultado del
producto cartesiano.
El operador “Natural Join (Reunión Natural)” hace un
producto cartesiano de sus dos argumentos y realiza
una selección forzando la igualdad de atributos que
aparecen en ambas relaciones, eliminando repetidos:

Notación: R S Base de Datos I SIS-302

Relación R3, S3:


R3 A B C D S3 B D E
a 1 a x 1 x a
b 2 t x 3 x b
t 4 b y 1 x t
a 1 t x 2 y c
c 2 b y 3 y e

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

Ing. Edgar Espinoza R. 17


SIS 302 BASE DE DATOS I 19/11/2023

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

Listar los datos de los funcionarios y departamento al que pertenece:

FUNCIONARIO FUNCIONARIO.DEPTO_ID=DEPARTAMENTO.DEPTO_ID 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

FUNCIONARIO DEPARTAMENTO
Equivalente a un Producto Cartesiano seguido de una Selección:
FUNCIONARIO.DEPTO_ID=DEPARTAMENTO.DEPTO_ID(FUNCIONARIO X
DEPARTAMENTO)

3
6

Join Condicional COND

La Reunión de dos relaciones, respecto a una cierta


condición de reunión, es otra relación constituida por
todos los pares de tuplas t1 y t2, concatenadas, tales
que, en cada par, las correspondientes tuplas
satisfacen la condición especificada (COND).

Igual que en Natural Join, pero cambiando la


condición sobre los atributos comunes por la
especificación.

Ing. Edgar Espinoza R. 18


SIS 302 BASE DE DATOS I 19/11/2023

3
7

Se corresponde con un producto cartesiano


seguido de una restricción:

Ejemplo

Listar los datos de los funcionarios y departamento al que pertenece:

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;

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

Ing. Edgar Espinoza R. 19


SIS 302 BASE DE DATOS I 19/11/2023

Listar los datos de los funcionarios y departamento al que pertenece:

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;

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

Listar los datos de los funcionarios y departamento al que pertenece:

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

Implícitamente, los atributos con el mismo nombre son usados en la


condición de join como comparador de igualdad.

Ing. Edgar Espinoza R. 20


SIS 302 BASE DE DATOS I 19/11/2023

Listar los nombres de los dependientes del funcionario Joao


FUNCIONARIO
FUNC_ID NOMBRE_FUNC SEXO SALARIO DEPTO_ID
1111 Joao M 9000 1
2222 Maria F 8200 1
3333 Ana F 1500 2 DEPENDIENTE
FUNC_ID NOMBRE_DEPENDIENTE PARENTESCO
1111 Luiza Hija
1111 Victor Hijo
3333 Paulo Esposo
SELECT NOMBRTE_DEPENDIENTE INCORRECTO, LOOS
FROM FUNCIONARIO NATURAL JOIN DEPARTAMENTO ATRIBUTOS FUNC_ID Y
WHERE NOMBRE_FUNC=‘Joao’; SEXO TIENEN EL MISMO
NOMBRE EN SUS TABLAS
SELECT NOMBRTE_DEPENDIENTE
FROM FUNCIONARIO F JOIN DEPARTAMENTO D ON F.FUNC_ID=D.FUNC_ID
WHERE NOMBRE_FUNC=‘Joao’;

Full outer Join:

Como el natural join, pero incluye también los


elementos que están en una sola de las relaciones
(poniendo NULL sobre los elementos correspondientes
de la otra relación)
Notación: R S
ESTUDIANTE
NOMBRE CIUDAD
Pepe Potosi ESTUDIANTE CALIFICACION
Maria Sucre
Lucia La Paz E.NOMBRE CIUDAD C.NOMBRE ASIGNATURA NOTA
Pepe Potosi Pepe SIS302 75
CALIFICACION
NOMBRE ASIGNATURA NOTA Pepe Potosi Pepe SIS324 50
Pepe SIS302 75 Maria Sucre Maria SIS324 58
Maria SIS324 58 Lucia La Paz NULL NULL NULL
Pepe SIS324 50 NULL NULL Juan SIS302 94
Juan SIS302 94
Base de Datos I SIS-302

Ing. Edgar Espinoza R. 21


SIS 302 BASE DE DATOS I 19/11/2023

Left outer Join:

Como el natural join, pero incluye también los


elementos que están en la relación de la izquierda
(poniendo NULL sobre los elementos correspondientes
de la otra relación)
ESTUDIANTE Notación: R S
NOMBRE CIUDAD
Pepe Potosi ESTUDIANTE CALIFICACION
Maria Sucre
E.NOMBRE CIUDAD C.NOMBRE ASIGNATURA NOTA
Lucia La Paz Pepe Potosi Pepe SIS302 75
Pepe Potosi Pepe SIS324 50
CALIFICACION
Maria Sucre Maria SIS324 58
NOMBRE ASIGNATURA NOTA
Lucia La Paz NULL NULL NULL
Pepe SIS302 75
Maria SIS324 58
Pepe SIS324 50
Juan SIS302 94
Base de Datos I SIS-302

Right outer Join:

Como el natural join, pero incluye también los


elementos que están en la relación de la derecha
(poniendo NULL sobre los elementos correspondientes
de la otra relación)
ESTUDIANTE
Notación: R S
NOMBRE CIUDAD
Pepe Potosi ESTUDIANTE CALIFICACION
Maria Sucre
E.NOMBRE CIUDAD C.NOMBRE ASIGNATURA NOTA
Lucia La Paz
Pepe Potosi Pepe SIS302 75
CALIFICACION Pepe Potosi Pepe SIS324 50
NOMBRE ASIGNATURA NOTA Maria Sucre Maria SIS324 58
Pepe SIS302 75 NULL NULL Juan SIS302 94
Maria SIS324 58
Pepe SIS324 50
Juan SIS302 94
Base de Datos I SIS-302

Ing. Edgar Espinoza R. 22


SIS 302 BASE DE DATOS I 19/11/2023

Intersección ∩ .-

La intersección, como en Teoría de conjuntos,


corresponde al conjunto de todas las tuplas que están
en R y en S, contiene las tuplas que están en ambas
relaciones, siendo R y S relaciones compatibles:

Notación: R ∩ S

Base de Datos I SIS-302

Relaciones R2, S2:


R2 S2
A B A B
a 1 a 2
a 2 b 3
b 1

R2  S2:
A B
a 2
46

Ing. Edgar Espinoza R. 23


SIS 302 BASE DE DATOS I 19/11/2023

Ejemplo

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


Maria SIS324 58

Base de Datos I SIS-302

Obsérvese que se puede volver a escribir cualquier


expresión del álgebra relacional utilizando la
intersección de conjuntos sustituyendo la
operación intersección por un par de operaciones
de diferencia de conjuntos, de la manera
siguiente:
r ∩ s = r – (r – s)
Por tanto, la intersección de conjuntos no es una
operación fundamental y no añade potencia al álgebra
relacional. Sencillamente, es más conveniente escribir

r ∩ s que r – (r – s).
Base de Datos I SIS-302

Ing. Edgar Espinoza R. 24


SIS 302 BASE DE DATOS I 19/11/2023

Operación División 
RS
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.

La division de una relacion R (dividendo), por otra relacion


S (divisor) es una relacion R (cociente) tal que al realizarse
su combinacion con el divisor, todas las tuplas resultants
se encuentran en el dividendo.

Relaciones r, s:
r A B s B
 1 1
 2
 3 2
 1
 1
 1
 3
 4
 6
 1
 2
r  s: A


Ing. Edgar Espinoza R. 25


SIS 302 BASE DE DATOS I 19/11/2023

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

Obtener los ID de los funcionarios que trabajan


en todos los proyectos en los que Joao trabaja

Ing. Edgar Espinoza R. 26


SIS 302 BASE DE DATOS I 19/11/2023

5
3

Algebra Relacional Extendida:

Operaciones adicionales del Algebra Relacional


para atender solicitudes comunes en los SGBDR
➢ Proyección Generalizada
➢ Funciones de Agregación
➢ Join Externa (Outer Join)

Mejoran el poder expresivo del Algebra


Relacional original

Base de Datos I SIS-302

Proyeccion Generalizada
Permite que funciones sobre los atributos sean incluidas en la lista de
la Proyección

Notación:  F1, F2,…,Fn (R)


Ejemplo:

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))

Ing. Edgar Espinoza R. 27


SIS 302 BASE DE DATOS I 19/11/2023

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

La forma general de la operación de agregación


G es la siguiente:

G1, G2, … , Gn G F1(A1), F2(A2), … , Fm (Am) (E)

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

Ing. Edgar Espinoza R. 28


SIS 302 BASE DE DATOS I 19/11/2023

5
7

Ejemplo
Dada la relacion “trabajo_por_horas” que
muestra los empleados a tiempo parcial,
aplicaremos las diferentes funciones.

Base de Datos I SIS-302

5
8

Ejemplo
Si se requiere saber cuántas tuplas en total
tiene esa relación,

Averiguar el número de sucursales que


aparecen en la relación trabajo_por_horas.

Base de Datos I SIS-302

Ing. Edgar Espinoza R. 29


SIS 302 BASE DE DATOS I 19/11/2023

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”)

Base de Datos I SIS-302

6
0

Si se desea hallar la suma total de sueldos de


todos los empleados a tiempo parcial en cada
sucursal del banco por separado, en lugar de
hallar la suma de sueldos de todo el banco.

Base de Datos I SIS-302

Ing. Edgar Espinoza R. 30


SIS 302 BASE DE DATOS I 19/11/2023

6
1

Si se requiere saber el promedio de los


sueldos de los empleados a tiempo parcial
(promedio de todos los valores del atributo
sueldo en la relación “trabajo_por_horas”)

Base de Datos I SIS-302

6
2

si se desea hallar el promedio de sueldos de los


empleados a tiempo parcial en cada sucursal del
banco por separado, en lugar de hallar el
promedio de sueldos de todo el banco.

Base de Datos I SIS-302

Ing. Edgar Espinoza R. 31


SIS 302 BASE DE DATOS I 19/11/2023

6
3

Si se requiere el sueldo más bajo de los


empleados a tiempo parcial (el menor de
todos los valores del atributo sueldo en la
relación “trabajo_por_horas”)

Base de Datos I SIS-302

6
4

Si se desea hallar el sueldo más bajo de los


empleados a tiempo parcial en cada sucursal
del banco por separado, en lugar de hallar el
sueldo más bajo de todo el banco.

Base de Datos I SIS-302

Ing. Edgar Espinoza R. 32


SIS 302 BASE DE DATOS I 19/11/2023

6
5

Si se requiere el sueldo más alto de los


empleados a tiempo parcial (el mayor de todos
los valores del atributo sueldo en la relación
“trabajo_por_horas”)

Base de Datos I SIS-302

6
6

Si se desea hallar el sueldo más alto de los


empleados a tiempo parcial en cada sucursal
del banco por separado, en lugar de hallar el
sueldo más alto de todo el banco.

Base de Datos I SIS-302

Ing. Edgar Espinoza R. 33


SIS 302 BASE DE DATOS I 19/11/2023

¿Preguntas????

Ing. Edgar Espinoza R. 34

También podría gustarte