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 relaci on. Las operaciones fundamentales del Algebra relacional son: Selecci on Proyecci on Uni on Diferencia Producto cartesiano Renombramiento

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

Algebra Relacional

Selecci on

Selecci on de tuplas dado un predicado l ogico. 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

Proyecci on ( )

Selecci on de uno o varios atributos de una relaci on. 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

Composici on

Composici on: Combinaci on de dos o mas operadores del Algebra relacional. Por ejemplo codigo valor >10codigo <500 (Productos ) Expresi on de A.R: Composici on de varias operaciones de A.R

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

Algebra Relacional

Uni on ()

Uni on de conjuntos de tuplas. Por ejemplo cc ,saldo (ctas corriente ) cc ,saldo (ctas ahorro ) retornar a el conjunto 1 de los saldos y c edulas de las cuentas de ahorros y de cr edito. En SQL:

SELECT CODIGO FROM PRODUCTOS UNION SELECT CODIGO FROM CLIENTES;

sin repetici on
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 a la combinaci on entre cada estudiante en Estudiantes con todos los cursos en la relaci on Cursos . En SQL:

SELECT * FROM ESTUDIANTES, CURSOS

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

Algebra Relacional

Renombramiento ()

Cambio del nombre de una relaci on y/o sus atributos. Por ejemplo emp(c ,n,t ) (cod ,nom,tel Empleado ) retorna una relaci on 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 expresi on si facilitan la escritura de consultas habituales. Entre estas operaciones est an: Intersecci on, Reuni on natural, zeta y externa, divisi on, etc.

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

Algebra Relacional

Intersecci on de Conjuntos ()

Intersecci on entre conjuntos de tuplas. r s r (r s )

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

Algebra Relacional

Reuni on Natural ( )

Producto cartesiano pero existe el criterio de reuni on dado por los atributos comunes r s = R S (r .a1=s .a1...r .an=s .an r s )

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

Algebra Relacional

Reuni on Zeta (

Producto cartesiano pero existe un criterio de reuni on explicito r

s = (r s )

Por ejemplo, p.nombre ,c .nombre (p (Profesor ) p.codigo =c .pro codigo c (Curso )) retorna una relaci on 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

Reuni on 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 expresi on: 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

Asignaci on ()

Asignaci on como en un lenguaje de programaci on: 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

Divisi on (r s )

Est a en el esquema R S y son las tuplas de r que est an 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 R S (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 agregaci on

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

Continuaci on...

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

Continuaci on...
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

continuaci on...
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

4 5 6 7 8

También podría gustarte