Upload
jorgeaguero
View
224
Download
0
Embed Size (px)
DESCRIPTION
algebra relacion
Citation preview
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_2FisicaEl 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)