Algebra Relacional (4)

35
Algebra Relacional Ing. Fabián Ruano

description

algebra relacion

Transcript of Algebra Relacional (4)

Algebra Relacional

Algebra Relacional

Ing. Fabin Ruano

Lenguaje de consulta procedimental.

Consta de Conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relacin.

Operaciones Fundamentales: seleccin, proyeccin, unin, diferencia de conjuntos, producto cartesiano y renombramiento.

Otras Operaciones: Interseccin de conjuntos, reunin natural, divisin y asignacin.

Definicin

Unarias: como su nombre lo indica operan sobre una sola relacin:

Seleccin

Proyeccin

Renombramiento

Binarias: operan sobre dos relaciones:

Unin

Diferencia de conjuntos

Producto cartesiano

Tipos de operaciones

Selecciona tuplas que satisfacen un predicado dado.

predicado (RELACION)

Por ejemplo: seleccionar de la tabla persona todas las personas con nombre igual a Maria

nombre = (PERSONA)

Operacin de Seleccin

Se permiten operaciones que utilizan:

=, , ,

Se pueden crear predicados mas grandes usando conectias o () e y () .

Por ejemplo: seleccionar de la tabla persona todas las personas con nombre igual a Maria apellido igual a Gmez

nombre = apellido = (PERSONA)

Comparaciones en el predicado (1/2)

El predicado de la seleccin puede incluir comparaciones entre dos atributos.

Por ejemplo: seleccionar de la tabla persona todas las personas que sean su propio jefe

nombre-persona = nombre-jefe(Persona)

Observacin: dado que el valor especial Nulo indica valor desconocido o inexistente, cualquier comparacin con un valor nulo es Falsa.

Comparaciones en el predicado (2/2)

Es una operacin unaria que devuelve su relacin de argumentos excluyendo algunos.

lista_atributos (RELACION)

Por ejemplo: necesitamos obtener de la tabla personal los nombres y apellidos de las personas en la base de datos. Pero la relacin tiene muchos mas atributos.

nombres, apellidos (PERSONA)

Operacin de proyeccin

Las operaciones tienen como entrada relaciones y dan como salida otras relaciones, por tanto es posible que la salida de una operacin sea el ingreso de otra.

Por ejemplo: Obtener nombres y apellidos slo de las mujeres registradas en la BD.

nombres, apellidos (

genero = (PERSONA) )

Composicin de operaciones

Es una operacin binaria que, igual que la operacin de conjuntos, une las tuplas de las relaciones implicadas. Se denota con U.

nombre-cliente (Prestamo) U nombre-cliente (CuentaAhorros)

Para que una Union sea posible se debe asegurar:

Igual aridad de relaciones: igual numero atributos

Dominios i-esimos de ambas relaciones deben ser iguales para todo i

Operacin de Unin

Permite buscar tuplas que esten en una relacin pero no en la otra. Se denota con el signo -

Por ejemplo clientes del banco que tengan cuenta pero que no tengan prestamos

nom-cliente (Cuenta) - nom-cliente (Prestamo)

Similar a la union para realizar una diferencia se debe asegurar igual aridad y dominios iguales para los i-esimos atributos de las relaciones.

Operacin de Diferencia de Conjuntos

Permite combinar informacion de cualquier par de relaciones. Se denota con el simbolo X.

Relacin_A X Relacion_B

Por ejemplo el producto cartesiano entre Persona y Curso las cuales se definen como sigue:

persona = (perID, perNombre)

curso = curID, curNombre)

Tendramos que: persona X curso = (persona.perId, persona.perNombre, curso.curID, curso.curNombre)

Operacin Producto Cartesiano

Exige que las relaciones implicadas en la operacin tengan nombres diferentes para evitar tener columnas con nombres idnticos.

Operacin Producto Cartesiano

Persona.perID Persona.perNombreCurso.curID Curso.curNombre Persona_1JuanCurso_1Quimica Persona_1 JuanCurso_2Fisica Persona_2MariaCurso_1Quimica Persona_2MariaCurso_2Fisica

El operador renombramiento permite ponerle nombre a las relaciones resultado de operaciones de algebra relacional. Se denota con la letra

x(E)

La anterior expresion retorna la expresion E con el nombre x. Tambien se pueden renombrar los atributos de E.

x(a1, a2, , an)(E)

Operacin renombramiento

Estas operaciones no aaden potencia al algebra, pero simplifican las consultas habituales.

Cada operacin re-emplaza un conjunto de operaciones normales.

Interseccin de conjuntos

Reunin natural

Divisin

Otras operaciones

Todos los clientes que tienen un prstamo concedido y una cuenta abierta:

nombre-cliente(prestatario) nombre-cliente(impositor)

Se denota por el smbolo . Una interseccin expresada mediante operaciones bsicas sera:

R S = R (R S)

Interseccin de conjuntos

Operacin binaria que permite combinar ciertas selecciones y un producto cartesiano en una sola operacin. Se denota por el smbolo:

La reunin natural expresada en operaciones bsicas equivale a:

R S =

RUS (r.A1 = s.a1 r.a2 = s.a2 r.an = s.an (R x S) )

Reunin natural (natural join) (1/2)

Teniendo por ejemplo la seleccin de clientes con prstamos:

nombre-cliente, prstamo (prestatario.num_prestamo = prestamo.num_prestamo (prestatario x prstamo))

Podemos expresar lo mismo mediante una reunin natural, asi:

nombre-cliente, prstamo (prestatario |X| prstamo)

Reunin natural (natural join) (2/2)

Cuando resulta conveniente escribir una expresion por partes o cuando se repite parte de una expresin se puede hacer uso de una variable temporal mediante asignacin.

temp1 r,s(R)

temp2 r,s((temp1 x S) r-s,s(R))

resultado = temp1 temp2

Asignacin

til en consultas que tienen la expresin para todos. Por ejemplo: todos los clientes que tengan abierta una cuenta en todas las sucursales ubicadas en Bogot.

R1 nombre-sucursal (ciudad-sucursal = Bogot (sucursal))

R2 nombre-cliente, nombre-sucursal (cliente |X| sucursal)

Resultado = R1 R2

La relacin resultado solo tiene como columna la columna

nombre-cliente.

Divisin

Ampliaciones de las operaciones del algebra relacional:

Proyeccin generalizada

Funciones de agregacin

Reunin externa

Valores nulos

Algebra Relacional Extendida

Esta funcin ampla la proyeccin permitiendo que se utilicen funciones aritmticas en la lista de proyeccin.

F1, F2, F3 (E)

Ejemplo: teniendo una relacin de tarjetas de crdito con el cupo gastado, obtener el cupo disponible.

numero_tarjeta, (cupo_total cupo_gastado) AS cupo_disponible (TarjetaCrdito)

Proyeccin generalizada

Toman una coleccin de valores y retornan un nico valor.

SUM: retorna la suma de los valores

AVG: retorna la media de los valores

MIN: retorna el mnimo de los valores

MAX: retorna el mximo de los valores

COUNT: retorna el nmero de elementos del conjunto

Funciones agregacin (1/4)

Suma total de sueldos de los empleados de la empresa:

GSUM(sueldo) (EMPLEADOS)

Funciones de agregacin (2/4)

Promedio de sueldos de los empleados de la empresa:

GAVG(sueldo) (EMPLEADOS)

El mayor y menor sueldo de los empleados de una empresa:

GMAX(sueldo), MIN(sueldo) (EMPLEADOS)

Suma de los sueldos por sucursal:

nombre-sucursal G nombre-sucursal, SUM(sueldo) (Empleados)

La anterior funcin tomar todos los sueldos de los empleados de una sucursal, los sumar y los asociar a la sucursal correspondiente, presentando un listado como el siguiente:

nombre-sucursalsum(sueldo)

Centro5.300

Legans3.100

Navacerrada8.100

Funciones de agregacin (3/4)

Forma general:

g1, g2gn G f1(a1), f2(a2).. Fm(am)(E)

Donde:

g1,g2,gn constituye la lista de atributos que indica como se realiza la agrupacin.

fi es una funcin de agregacin y ai es un nombre del atributo.

Funciones de agregacin (4/4)

Es una extensin de la operacin reunin para trabajar con informacin que falta.

Teniendo:

Empleado (nombre-empleado, calle, ciudad)

TrabajoTiempoCompleto(nombre-empleado, sueldo)

Se quiere generar una relacin con nombre-empleado, calle, ciudad y sueldo (este ultimo slo si el empleados es tiempo-completo)

Reunin externa (outer join) (1/5)

Si hacemos:

Empleados |X| TrabajoTiempoCompleto

Se perdera la informacin de los empleados que no estn en la relacin TrabajoTiempoCompleto. Para ello hacemos un reunin externa por la izquierda.

Empledos ]X| TrabajoTiempoCompleto

Toma todas las tuplas de Empleados y las relaciona con las de TrabajoTiempoCompleto, si existe un empleado sin su correspondiente en TrabajoTiempoCompleto los campos faltantes se completan con NULL

Reunin externa (outer join) (2/5)

Reunin externa (outer join) (3/5)

Reunin externa por la derecha es simtrica a la reunin externa por la izquierda. Las tuplas que no coincidan con ninguna tupla de la relacin de la izquierda se rellenan con valores nulos. Con el mismo ejemplo pero con reuninexterna por la derecha: Empledos |X[ TrabajoTiempoCompleto

Reunin externa (outer join) (4/5)

Reunin externa completa: hace la unin entre la reunin externa por la izquierda y la reunin externa por la derecha. Rellena las tuplas de la relacin izquierda que no coincidan con las de la derecha con valores Nulos y viceversa. Para el ejemplo:

Empleados ]X[ TrabajoTiempoCompleto

Reunin externa (outer join) (5/5)

A tener en cuenta cuando se involucran valores nulos en las operaciones:

Las operaciones y comparaciones con valores nulos deben evitarse siempre que sea posible

Dado que el valor nulo indica desconocido o inexistente cualquier operacin (+ - * /) que incluya uno o mas valores nulos debe devolver nulo.

Valores Nulos (1/5)

Cualquier comparacin (=, ) que incluya un valor nulo se evala al valor especial desconocido.

Y: (cierto y desconocido) = desconocido

(falso y desconocido) = falso

(desconocido y desconocido) = desconocido

O: (cierto o desconocido) = cierto

(falso o desconocido) = desconocido

(desconocido o desconocido) = desconocido

Valores Nulos (2/5)

NO: (no desconocido) = desconocido

Seleccin: la operacin evalua el predicado, si este devuelve cierto se aade la tupla al resultado. Si el predicado devuelve falto o desconocido no se aade.

Reunin: al ser un producto cartesiano con una seleccin, aplica la misma norma de la seleccin.

Proyeccin: trata los nulos como cualquier otro valor al eliminar duplicados.

Valores Nulos (3/5)

Unin, Interseccin y diferencia: tratan los nulos igual que la proyeccin. Se consideran iguales las tuplas que tienen todos los campos duplicados, incluso si algunos de los campos tienen valores nulos en ambas tuplas.

Proyeccin generalizada: Las tuplas duplicadas que contienen valores nulos se tratan como en la proyeccin

Cuando hay nulos en los atributos agregados la operacin borra los nulos del resultado antes de aplicar la agregacin.

Valores Nulos (4/5)

Reunin externa: se comportan como las operaciones de reunin, excepto sobre las tuplas que no aparecen en el resultado. Estas tuplas se pueden aadir al resultado dependiendo del tipo de operacin (]X|, |X[ ]X[) aadiendo nulos.

Valores Nulos (5/5)