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 relacin. o Las operaciones fundamentales del Algebra relacional son: Seleccin o Proyeccin o Unin o Diferencia Producto cartesiano Renombramiento

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

Algebra Relacional

Seleccin o

Seleccin de tuplas dado un predicado lgico. o o 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

Proyeccin () o

Seleccin de uno o varios atributos de una relacin. o o 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

Composicin o

Composicin: Combinacin de dos o mas operadores del o o Algebra relacional. Por ejemplo codigo valor >10codigo<500 (Productos) Expresin de A.R: Composicin de varias operaciones de A.R o o

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

Algebra Relacional

Unin () o

Unin de conjuntos de tuplas. o Por ejemplo cc,saldo (ctas corriente) cc,saldo (ctas ahorro) retornar el conjunto 1 de los saldos y cdulas de las cuentas de a e ahorros y de crdito. En SQL: e

SELECT CODIGO FROM PRODUCTOS UNION SELECT CODIGO FROM CLIENTES;

sin repeticin o
Algebra Relacional

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

Diferencia de Conjuntos ()

Diferencia de Conjuntos de tuplas. Por ejemplo codigo (Estudiantes) est codigo mat codigo= CC 080 (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 retornar la combinacin entre a o cada estudiante en Estudiantes con todos los cursos en la relacin o Cursos. En SQL:

SELECT * FROM ESTUDIANTES, CURSOS

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

Algebra Relacional

Renombramiento ()

Cambio del nombre de una relacin y/o sus atributos. o Por ejemplo emp(c,n,t) (cod,nom,tel Empleado) retorna una relacin o 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 expresin si facilitan la escritura de consultas habituales. o Entre estas operaciones estn: Interseccin, Reunin natural, zeta a o o y externa, divisin, etc. o

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

Algebra Relacional

Interseccin de Conjuntos () o

Interseccin entre conjuntos de tuplas. o r s r (r s)

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

Algebra Relacional

Reunin Natural ( ) o

Producto cartesiano pero existe el criterio de reunin dado por los o 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

Reunin Zeta ( o

Producto cartesiano pero existe un criterio de reunin explicito o r

s = (r s)

Por ejemplo, p.nombre,c.nombre (p (Profesor ) p.codigo=c.pro codigo c (Curso)) retorna una relacin que contiene el nombre de cada profesor y sus o 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

Reunin externa (= ) -Derecha o izquierdao

Realiza el join pero si no hay match genera un valor nulo. Es util 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 expresin: o 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

Asignacin () o

Asignacin como en un lenguaje de programacin: o o 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

Divisin (r s) o

Est en el esquema R S y son las tuplas de r que estn a a relacionadas con todas las tuplas de s. Formalmente, sea r (R) y s(S) relaciones y S R, r s es una relacin del esquema R S y t r s si: o
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 agregacin o

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

Son funciones que toman un conjunto de valores y retornan un valor unico segn un criterio de agrupamiento. Condiciones: u
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

Continuacin... o

Ejemplo: mat codigo,periodo G count(mat codigo) (Matricula) cuenta por cada cdigo de materia y per o odo 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

Continuacin... o
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 per odo: 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

continuacin... o
Escribir las siguientes consultas en A.R
1

Seleccionar los Nmeros de factura con su respectivo nombre u 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

4 5 6 7 8

También podría gustarte