algebrarelacional

22
´ Algebra Relacional Carlos A. Olarte ([email protected]) BDI Carlos A. Olarte ([email protected]) BDI ´ Algebra Relacional

Upload: belen-calderon-antonio

Post on 31-Aug-2014

71 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: algebrarelacional

Algebra Relacional

Carlos A. Olarte ([email protected])BDI

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 2: algebrarelacional

Contenido

1 Operaciones Fundamentales

2 Operaciones Adicionales

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 3: algebrarelacional

Operaciones Fundamentales

Conjunto de operaciones que toman como argumentos relaciones yretornan una nueva relacion.Las operaciones fundamentales del Algebra relacional son:

Seleccion σ

Proyeccion π

Union ∪Diferencia −Producto cartesiano ×Renombramiento ρ

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 4: algebrarelacional

Seleccion σ

Seleccion de tuplas dado un predicado logico.Por ejemplo, σvalor>10∧codigo<500(Productos) selecciona losproductos cuyo valor es mayor a 10 y su codigo menor a 500. EnSQL:

SELECT * FROM PRODUCTOSWHERE VALOR > 10

AND CODIGO <500;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 5: algebrarelacional

Proyeccion (π)

Seleccion de uno o varios atributos de una relacion.Por ejemplo πcodigo(Productos) retorna todas las tuplas deproductos pero solo con el atributo codigo. En SQL:

SELECT CODIGOFROM PRODUCTOS;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 6: algebrarelacional

Composicion

Composicion: Combinacion de dos o mas operadores delAlgebra relacional.Por ejemplo πcodigoσvalor>10∧codigo<500(Productos)

Expresion de A.R: Composicion de varias operaciones de A.R

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 7: algebrarelacional

Union (∪)

Union de conjuntos de tuplas.Por ejemplo πcc,saldo(ctas corriente) ∪ πcc,saldo(ctas ahorro)retornarıa el conjunto 1 de los saldos y cedulas de las cuentas deahorros y de credito. En SQL:

SELECT CODIGO FROM PRODUCTOSUNIONSELECT CODIGO FROM CLIENTES;

1sin repeticionCarlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 8: algebrarelacional

Diferencia de Conjuntos (−)

Diferencia de Conjuntos de tuplas.Por ejemploπcodigo(Estudiantes)− πest codigoσmat codigo=′CC080′(Matriculas)selecciona los estudiantes que no han matriculado la materiaCC080. En SQL

SELECT CODIGO FROM ESTUDIANTESMINUSSELECT EST_CODIGO FROM MATRICULASWHERE MAT_CODIGO = ’CC080’;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 9: algebrarelacional

Producto Cartesiano (×)

Producto cartesiano entre Conjuntos de tuplas.Por ejemplo Estudiantes × Cursos retornarıa la combinacion entrecada estudiante en Estudiantes con todos los cursos en la relacionCursos. En SQL:

SELECT *FROM ESTUDIANTES, CURSOS

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 10: algebrarelacional

Renombramiento (ρ)

Cambio del nombre de una relacion y/o sus atributos.Por ejemplo ρemp(c,n,t)(πcod ,nom,telEmpleado) retorna una relacioncon nombre emp y atributos (c , n, t). En SQL se hace uso de aliaspara implementar el renombramiento, por ejemplo:

SELECT COD C, NOM N, TEL TFROM EMPLEADOS EMP;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 11: algebrarelacional

Operaciones Adicionales

A partir de las operaciones fundamentales del Algebra relacional, esposible generar nuevas que aunque no aumentan poder deexpresion si facilitan la escritura de consultas habituales.Entre estas operaciones estan: Interseccion, Reunion natural, zetay externa, division, etc.

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 12: algebrarelacional

Interseccion de Conjuntos (∩)

Interseccion entre conjuntos de tuplas.

r ∩ s ≡ r − (r − s)

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 13: algebrarelacional

Reunion Natural (./)

Producto cartesiano pero existe el criterio de reunion dado por losatributos comunes

r ./ s = πR∪S(σr .a1=s.a1...r .an=s.anr × s)

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 14: algebrarelacional

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 susrespectivos cursos a cargo. En SQL:

SELECT P.NOMBRE, C.NOMBREFROM PROFESORES P,

CURSOS CWHERE P.CODIGO = C.PRO_CODIGO;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 15: algebrarelacional

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

Realiza el join pero si no hay match genera un valor nulo. Es utilcuando el atributo FK puede ser nulo. Por ejemplo, si no todos loscursos del ejemplo anterior tienen un profesor asignado, se debeutilizar la siguiente expresion:πnombre(Profesor) ./=P.codigo=C .Pro codigo πnombre(Curso) En SQL :

SELECT P.NOMBRE, C.NOMBREFROM PROFESORES P,CURSOS CWHERE C.PRO_CODIGO = P.CODIGO(+);

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 16: algebrarelacional

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 ← πr1nombre,r2nombre(r3)

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 17: algebrarelacional

Division (r ÷ s)

Esta en el esquema R − S y son las tuplas de r que estanrelacionadas con todas las tuplas de s.Formalmente, sea r(R) y s(S) relaciones y S ⊆ R, r ÷ s es unarelacion del esquema R − S y t ∈ r ÷ s si:

1 t ∈ πR−S(r)2 Para toda ts de s hay una tupla tr de r tal que:

1 tr [S ] = ts [S ]2 rt [R − S ] = t

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

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 18: algebrarelacional

Funciones de agregacion g1..gnGf 1,f 2,f 3

Son funciones que toman un conjunto de valores y retornan unvalor unico segun un criterio de agrupamiento. Condiciones:

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

2 Las tuplas de diferentes grupos tienen valores distintos parag1..gn

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 19: algebrarelacional

Continuacion...

Ejemplo: mat codigo,periodo G count(mat codigo)(Matricula) cuenta porcada codigo de materia y perıodo los alumnos matriculados. EnSQL:

SELECT MAT_CODIGO, PERIODO,COUNT(MAT_CODIGO)FROM MATRICULASGROUP BY MAT_CODIGO;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 20: algebrarelacional

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 cadaperıodo: mat codigo,periodoGavg(nota)(Matricula). En SQL:

SELECT MAT_CODIGO, PERIODO,AVG(NOTA) PROMEDIOFROM MATRICULASGROUP BY MAT_CODIGO, PERIODO;

Carlos A. Olarte ([email protected]) BDI Algebra Relacional

Page 21: algebrarelacional

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 ([email protected]) BDI Algebra Relacional

Page 22: algebrarelacional

continuacion...

Escribir las siguientes consultas en A.R

1 Seleccionar los Numeros de factura con su respectivo nombrede sucursal

2 Seleccionar los clientes que no han sido registrados en ningunafactura

3 Seleccionar todos los clientes junto con sus facturas (si lastiene)

4 Seleccionar el total de facturas del mes X

5 Seleccionar el total de facturas por sucursal del mes X

6 Seleccionar el producto mas vendido

7 Seleccionar el producto mas vendido por sucursal

8 Encontrar el o los clientes que han comprado en todas lassucursales

9 Encontrar los clientes que solo han comprado en la sucursal X

Carlos A. Olarte ([email protected]) BDI Algebra Relacional