Está en la página 1de 22

Algebra

Relacional
Carlos A. Olarte (carlosolarte@puj.edu.co)
BDI

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Contenido

Operaciones Fundamentales

Operaciones Adicionales

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Operaciones Fundamentales

Conjunto de operaciones que toman como argumentos relaciones y


retornan una nueva relacion.

Las operaciones fundamentales del Algebra


relacional son:
Seleccion
Proyeccion
Union
Diferencia
Producto cartesiano
Renombramiento

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Seleccion

Seleccion de tuplas dado un predicado logico.


Por ejemplo, valor >10codigo<500 (Productos) selecciona los
productos cuyo valor es mayor a 10 y su codigo menor a 500. En
SQL:

SELECT * FROM PRODUCTOS


WHERE VALOR > 10
AND CODIGO <500;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Proyeccion ()

Seleccion de uno o varios atributos de una relacion.


Por ejemplo codigo (Productos) retorna todas las tuplas de
productos pero solo con el atributo codigo. En SQL:

SELECT CODIGO
FROM PRODUCTOS;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Composicion

Composicion: Combinacion de dos o mas operadores del

Algebra
relacional.
Por ejemplo codigo valor >10codigo<500 (Productos)
Expresion de A.R: Composicion de varias operaciones de A.R

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Union ()

Uni
on de conjuntos de tuplas.
Por ejemplo cc,saldo (ctas corriente) cc,saldo (ctas ahorro)
retornara el conjunto 1 de los saldos y cedulas de las cuentas de
ahorros y de credito. En SQL:

SELECT CODIGO FROM PRODUCTOS


UNION
SELECT CODIGO FROM CLIENTES;

sin repetici
on

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Diferencia de Conjuntos ()

Diferencia de Conjuntos de tuplas.


Por ejemplo
codigo (Estudiantes) est codigo mat codigo=0 CC 0800 (Matriculas)
selecciona los estudiantes que no han matriculado la materia
CC 080. En SQL

SELECT CODIGO FROM ESTUDIANTES


MINUS
SELECT EST_CODIGO FROM MATRICULAS
WHERE MAT_CODIGO = CC080;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Producto Cartesiano ()

Producto cartesiano entre Conjuntos de tuplas.


Por ejemplo Estudiantes Cursos retornara la combinacion entre
cada estudiante en Estudiantes con todos los cursos en la relacion
Cursos. En SQL:

SELECT *
FROM ESTUDIANTES, CURSOS

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Renombramiento ()

Cambio del nombre de una relacion y/o sus atributos.


Por ejemplo emp(c,n,t) (cod,nom,tel Empleado) retorna una relacion
con nombre emp y atributos (c, n, t). En SQL se hace uso de alias
para implementar el renombramiento, por ejemplo:

SELECT COD C, NOM N, TEL T


FROM EMPLEADOS EMP;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Operaciones Adicionales

A partir de las operaciones fundamentales del Algebra


relacional, es
posible generar nuevas que aunque no aumentan poder de
expresion si facilitan la escritura de consultas habituales.
Entre estas operaciones estan: Interseccion, Reunion natural, zeta
y externa, division, etc.

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Interseccion de Conjuntos ()

Interseccion entre conjuntos de tuplas.


r s r (r s)

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Reunion Natural (./)

Producto cartesiano pero existe el criterio de reunion dado por los


atributos comunes
r ./ s = RS (r .a1=s.a1...r .an=s.an r s)

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Reunion Zeta (./ )


Producto cartesiano pero existe un criterio de reunion explicito
r ./ s = (r s)
Por ejemplo,
p.nombre,c.nombre (p (Profesor ) ./p.codigo=c.pro codigo c (Curso))
retorna una relacion que contiene el nombre de cada profesor y sus
respectivos cursos a cargo. En SQL:

SELECT P.NOMBRE, C.NOMBRE


FROM PROFESORES P,
CURSOS C
WHERE P.CODIGO = C.PRO_CODIGO;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Reunion externa (=./) -Derecha o izquierda-

Realiza el join pero si no hay match genera un valor nulo. Es u


til
cuando el atributo FK puede ser nulo. Por ejemplo, si no todos los
cursos del ejemplo anterior tienen un profesor asignado, se debe
utilizar la siguiente expresion:
nombre (Profesor ) ./=P.codigo=C .Pro codigo nombre (Curso) En SQL :
SELECT P.NOMBRE, C.NOMBRE
FROM PROFESORES P,
CURSOS C
WHERE C.PRO_CODIGO = P.CODIGO(+);

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Asignacion ()

Asignacion como en un lenguaje de programacion:


r1 codigo,nombre (Profesores)
r2 nombre,pro codigo (Cursos)
r3 r1 ./r1 .codigo=r2 .pro codigo r2
r4 r1 nombre,r2 nombre (r3 )

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Division (r s)

Esta en el esquema R S y son las tuplas de r que estan


relacionadas con todas las tuplas de s.
Formalmente, sea r (R) y s(S) relaciones y S R, r s es una
relaci
on del esquema R S y t r s si:
1
2

t RS (r )
Para toda ts de s hay una tupla tr de r tal que:
1
2

tr [S] = ts [S]
rt [R S] = t

Ejercicio: Escribir la consulta SQL para r (R) s(S)

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Funciones de agregacion

g 1..gn Gf 1,f 2,f 3

Son funciones que toman un conjunto de valores y retornan un


valor u
nico seg
un un criterio de agrupamiento. Condiciones:
1

Todas las tuplas del grupo tienen los mismos valores para
g 1..gn

Las tuplas de diferentes grupos tienen valores distintos para


g 1..gn

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Continuacion...

Ejemplo: mat codigo,periodo G count(mat codigo) (Matricula) cuenta por


cada c
odigo de materia y perodo los alumnos matriculados. En
SQL:

SELECT MAT_CODIGO, PERIODO,


COUNT(MAT_CODIGO)
FROM MATRICULAS
GROUP BY MAT_CODIGO;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Continuacion...
Para contar el total de alumnos de la universidad:
Gcount(codigo) (Estudiantes). En SQL
SELECT COUNT(CODIGO)
FROM ESTUDIANTES;
Para calcular el promedio de notas de cada grupo por cada
perodo: mat codigo,periodo Gavg (nota) (Matricula). En SQL:
SELECT MAT_CODIGO, PERIODO,
AVG(NOTA) PROMEDIO
FROM MATRICULAS
GROUP BY MAT_CODIGO, PERIODO;

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

Ejercicio

Dado el siguiente esquema de B.D:


Producto(cod, nombre, precio)
Ciudad(cod, nombre)
Cliente(cc, Nombre, ciu cod)
Sucursal(cod, nombre, ciu cod)
Factura(Num, suc cod, Fecha, Cli Cod)
Detalle(Fac Num, Fac Suc Cod, Pro Cod, Cant, Unit)

Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

continuacion...
Escribir las siguientes consultas en A.R
1

Seleccionar los N
umeros de factura con su respectivo nombre
de sucursal

Seleccionar los clientes que no han sido registrados en ninguna


factura

Seleccionar todos los clientes junto con sus facturas (si las
tiene)

Seleccionar el total de facturas del mes X

Seleccionar el total de facturas por sucursal del mes X

Seleccionar el producto mas vendido

Seleccionar el producto mas vendido por sucursal

Encontrar el o los clientes que han comprado en todas las


sucursales

Encontrar los clientes que solo han comprado en la sucursal X


Carlos A. Olarte (carlosolarte@puj.edu.co) BDI

Algebra
Relacional

También podría gustarte