algebra relacional

35
Algebra Relacional Ing. Fabián Ruano

Upload: moe

Post on 13-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Algebra Relacional. Ing. Fabián Ruano. Definición. Lenguaje de consulta procedimental. Consta de Conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Algebra Relacional

Algebra RelacionalIng. Fabián Ruano

Page 2: Algebra Relacional

Lenguaje de consulta procedimental. Consta de Conjunto de operaciones que toman

como entrada una o dos relaciones y producen como resultado una nueva relación.

Operaciones Fundamentales: selección, proyección, unión, diferencia de conjuntos, producto cartesiano y renombramiento.

Otras Operaciones: Intersección de conjuntos, reunión natural, división y asignación.

Definición

Page 3: Algebra Relacional

Unarias: como su nombre lo indica operan sobre una sola relación:◦ Selección◦ Proyección◦ Renombramiento

Binarias: operan sobre dos relaciones:◦ Unión◦ Diferencia de conjuntos◦ Producto cartesiano

Tipos de operaciones

Page 4: Algebra Relacional

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 = <<Maria>> (PERSONA)

Operación de Selección

Page 5: Algebra Relacional

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 Gómez

σnombre = <<Maria>> ˅ apellido = <<Gómez>> (PERSONA)

Comparaciones en el predicado (1/2)

Page 6: Algebra Relacional

El predicado de la selección 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)

Observación: dado que el valor especial Nulo indica “valor desconocido o inexistente”, cualquier comparación con un valor nulo es Falsa.

Comparaciones en el predicado (2/2)

Page 7: Algebra Relacional

Es una operación unaria que devuelve su relación 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 relación tiene muchos mas atributos.

Πnombres, apellidos (PERSONA)

Operación de proyección

Page 8: Algebra Relacional

Las operaciones tienen como entrada relaciones y dan como salida otras relaciones, por tanto es posible que la salida de una operación sea el ingreso de otra. Por ejemplo: Obtener nombres y apellidos sólo de las mujeres registradas en la BD.

πnombres, apellidos (

σgenero = <<femenino>> (PERSONA) )

Composición de operaciones

Page 9: Algebra Relacional

Es una operación binaria que, igual que la operación 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

Operación de Unión

Page 10: Algebra Relacional

Permite buscar tuplas que esten en una relación 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.

Operación de Diferencia de Conjuntos

Page 11: Algebra Relacional

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

Relación_A X Relacion_BPor ejemplo el producto cartesiano entre Persona y Curso las cuales se definen como sigue:

persona = (perID, perNombre)curso = curID, curNombre)

Tendríamos que: persona X curso = (persona.perId, persona.perNombre, curso.curID, curso.curNombre)

Operación Producto Cartesiano

Page 12: Algebra Relacional

Exige que las relaciones implicadas en la operación tengan nombres diferentes para evitar tener columnas con nombres idénticos.

Operación Producto Cartesiano

Persona.perID Persona.perNombre Curso.curID

Curso.curNombre

Persona_1 Juan Curso_1 Quimica

Persona_1 Juan Curso_2 Fisica

… … … …

Persona_2 Maria Curso_1 Quimica

Persona_2 Maria Curso_2 Fisica

Page 13: Algebra Relacional

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)

Operación renombramiento

Page 14: Algebra Relacional

Estas operaciones no añaden potencia al algebra, pero simplifican las consultas habituales.

Cada operación re-emplaza un conjunto de operaciones “normales”.- Intersección de conjuntos- Reunión natural- División

Otras operaciones

Page 15: Algebra Relacional

Todos los clientes que tienen un préstamo concedido y una cuenta abierta:

Πnombre-cliente(prestatario) ∩ Πnombre-

cliente(impositor)Se denota por el símbolo ∩. Una intersección expresada mediante operaciones básicas sería:

R ∩ S = R – (R – S)

Intersección de conjuntos

Page 16: Algebra Relacional

Operación binaria que permite combinar ciertas selecciones y un producto cartesiano en una sola operación. Se denota por el símbolo: ⋈ La reunión natural expresada en operaciones básicas equivale a:R ⋈ S =

ΠRUS (σr.A1 = s.a1 ˄ r.a2 = s.a2 ˄ … ˄ r.an = s.an (R x S) )

Reunión natural (natural join) (1/2)

Page 17: Algebra Relacional

Teniendo por ejemplo la selección de clientes con préstamos:

Πnombre-cliente, préstamo (σprestatario.num_prestamo =

prestamo.num_prestamo (prestatario x préstamo))

Podemos expresar lo mismo mediante una reunión natural, asi:

Πnombre-cliente, préstamo (prestatario |X| préstamo)

Reunión natural (natural join) (2/2)

Page 18: Algebra Relacional

Cuando resulta conveniente escribir una expresion por partes o cuando se repite parte de una expresión se puede hacer uso de una “variable” temporal mediante asignación.

temp1 Πr,s(R) temp2 Πr,s((temp1 x S) – Πr-s,s(R))resultado = temp1 – temp2

Asignación

Page 19: Algebra Relacional

Útil en consultas que tienen la expresión “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 ÷ R2La relación resultado solo tiene como columna la

columnanombre-cliente.

División

Page 20: Algebra Relacional

Ampliaciones de las operaciones del algebra relacional:

- Proyección generalizada- Funciones de agregación- Reunión externa- Valores nulos

Algebra Relacional Extendida

Page 21: Algebra Relacional

Esta función amplía la proyección permitiendo que se utilicen funciones aritméticas en la lista de proyección.

ΠF1, F2, F3 (E)Ejemplo: teniendo una relación de tarjetas de crédito con el cupo gastado, obtener el cupo disponible.

Πnumero_tarjeta, (cupo_total – cupo_gastado) AS cupo_disponible

(TarjetaCrédito)

Proyección generalizada

Page 22: Algebra Relacional

Toman una colección de valores y retornan un único valor.

- SUM: retorna la suma de los valores- AVG: retorna la media de los valores- MIN: retorna el mínimo de los valores- MAX: retorna el máximo de los valores- COUNT: retorna el número de elementos del

conjunto

Funciones agregación (1/4)

Page 23: Algebra Relacional

Suma total de sueldos de los empleados de la empresa:GSUM(sueldo) (EMPLEADOS)

Funciones de agregación (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)

Page 24: Algebra Relacional

Suma de los sueldos por sucursal:nombre-sucursal G nombre-sucursal, SUM(sueldo)

(Empleados)La anterior función 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-sucursal sum(sueldo) Centro 5.300 Leganés 3.100 Navacerrada 8.100

Funciones de agregación (3/4)

Page 25: Algebra Relacional

Forma general:g1, g2…gn G f1(a1), f2(a2).. Fm(am)(E)

Donde: g1,g2,…gn constituye la lista de atributos que indica como se realiza la agrupación.fi es una función de agregación y ai es un nombre del atributo.

Funciones de agregación (4/4)

Page 26: Algebra Relacional

Es una extensión de la operación reunión para trabajar con información que falta.Teniendo:

Empleado (nombre-empleado, calle, ciudad)

TrabajoTiempoCompleto(nombre-empleado, sueldo)Se quiere generar una relación con nombre-empleado, calle, ciudad y sueldo (este ultimo sólo si el empleados es tiempo-completo)

Reunión externa (outer join) (1/5)

Page 27: Algebra Relacional

Si hacemos: Empleados |X| TrabajoTiempoCompleto

Se perdería la información de los empleados que no estén en la relación TrabajoTiempoCompleto. Para ello hacemos un reunión externa por la izquierda.

Empledos ]X| TrabajoTiempoCompletoToma 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

Reunión externa (outer join) (2/5)

Page 28: Algebra Relacional

Reunión externa (outer join) (3/5)

Page 29: Algebra Relacional

Reunión externa por la derecha es simétrica a la reunión externa por la izquierda. Las tuplas que no coincidan con ninguna tupla de la relación de la izquierda se rellenan con valores nulos. Con el mismo ejemplo pero con reuniónexterna por la derecha: Empledos |X[ TrabajoTiempoCompleto

Reunión externa (outer join) (4/5)

Page 30: Algebra Relacional

Reunión externa completa: hace la unión entre la reunión externa por la izquierda y la reunión externa por la derecha. Rellena las tuplas de la relación izquierda que no coincidan con las de la derecha con valores Nulos y viceversa. Para el ejemplo:

Empleados ]X[ TrabajoTiempoCompleto

Reunión externa (outer join) (5/5)

Page 31: Algebra Relacional

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 operación (+ - * /) que incluya uno o mas valores nulos debe devolver nulo.

Valores Nulos (1/5)

Page 32: Algebra Relacional

Cualquier comparación (<,<=, >, >=, ≠) que incluya un valor nulo se evalúa 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)

Page 33: Algebra Relacional

NO: (no desconocido) = desconocido Selección: la operación evalua el

predicado, si este devuelve cierto se añade la tupla al resultado. Si el predicado devuelve falto o desconocido no se añade.

Reunión: al ser un producto cartesiano con una selección, aplica la misma norma de la selección.

Proyección: trata los nulos como cualquier otro valor al eliminar duplicados.

Valores Nulos (3/5)

Page 34: Algebra Relacional

Unión, Intersección y diferencia: tratan los nulos igual que la proyección. Se consideran iguales las tuplas que tienen todos los campos duplicados, incluso si algunos de los campos tienen valores nulos en ambas tuplas.

Proyección generalizada: Las tuplas duplicadas que contienen valores nulos se tratan como en la proyecciónCuando hay nulos en los atributos agregados la operación borra los nulos del resultado antes de aplicar la agregación.

Valores Nulos (4/5)

Page 35: Algebra Relacional

Reunión externa: se comportan como las operaciones de reunión, excepto sobre las tuplas que no aparecen en el resultado. Estas tuplas se pueden añadir al resultado dependiendo del tipo de operación (]X|, |X[ ó ]X[) añadiendo nulos.

Valores Nulos (5/5)