Algebra Relacional (Extra)

24
´ Algebra Relacional Un ´ algebra es un sistema matem´ atico constituido por Operandos: objetos (valores o variables) desde los cuales nuevos objetos pueden ser construidos. Operadores: s´ ımbolos que denotan nuevos objetos desde objetos dados. El ´ algebra relacional es un ´ algebra en la cual Sus operandos son relaciones (instancias) o variables que representan relaciones. Sus operadores est´ an dise˜ nados para hacer la tareas m´ as comunes que se necesitan para manipular relaciones en una base de datos. El resultado es que el ´ algebra relacional se puede utilizar como un lenguaje de consulta. En la pr´ actica el ´ algebra relacional debe ser extendida para abarcar la mayor parte de las tareas reales que se hacen con los datos. Estudiaremos en detalle los operadores cl´ asicos. 1

Transcript of Algebra Relacional (Extra)

Algebra Relacional

Un algebra es un sistema matematico constituido por

• Operandos: objetos (valores o variables) desde los cualesnuevos objetos pueden ser construidos.

• Operadores: sımbolos que denotan nuevos objetos desdeobjetos dados.

El algebra relacional es un algebra en la cual

• Sus operandos son relaciones (instancias) o variables querepresentan relaciones.

• Sus operadores estan disenados para hacer la tareas mascomunes que se necesitan para manipular relaciones en unabase de datos.

El resultado es que el algebra relacional se puede utilizarcomo un lenguaje de consulta.

En la practica el algebra relacional debe ser extendida paraabarcar la mayor parte de las tareas reales que se hacen conlos datos.

Estudiaremos en detalle los operadores clasicos.

1

Tablas

Estas seran las tablas que usaremos en la mayorıa de ejemplos

Empleado

nombre sueldo cod dept fecha ing

Torres $ 1.200.000 A1 01/01/2004Soto $ 500.000 A2 01/01/2003Perez $ 300.000 A2 01/10/2003

Figueroa $ 600.000 A1 01/03/2002Salas $ 1.500.000 A1 01/01/2002Rıos $ 2.000.000 A3 01/06/2002

Campos $ 800.000 A2 01/11/2003Venegas $ 600.000 A1 01/06/2002Carcamo $ 500.000 A2 01/04/2003Gonzalez $ 2.000.000 A3 01/10/2002

Departamento

nombre cod dept fecha creac

Informatica A1 01/03/2002Marketing A2 01/01/2002Ventas A3 01/01/2001

Recursos Humanos A4 01/01/2003

Seleccion

Operador de seleccion σ, selecciona un subconjunto de lastuplas de una relacion.

Tuplas seleccionadas son las que satisfacen cierto predicadologico P . El predicado puede depender de los atributos de larelacion y de valores constantes.

El operador σ toma una relacion como argumento y el re-sultado es una nueva relacion.

Sintaxis:

σP(r)

Seleccionar los datos del empleado Soto:

σnombre=Soto(empleado)

nombre sueldo cod dept fecha ing

Soto $ 500.000 A2 01/01/2003

Los datos de los empleados con sueldo ≥ $500.000 que in-gresaron despues del 2003:

σsueldo≥500000 ∧ fech ing≥1/1/2003(empleado)

nombre sueldo cod dept fecha ing

Soto $ 500.000 A2 01/01/2003Campos $ 800.000 A2 01/11/2003Carcamo $ 500.000 A2 01/04/2003Torres $ 1.200.000 A1 01/01/2004

2

Proyeccion

Operador de proyeccion π, proyecta una relacion sobre unsubconjunto de sus atributos.

El operador π toma una relacion como argumento y el re-sultado es una nueva relacion.

Sintaxis: πA(r)donde A representa el conjunto de atributos sobre los que

la relacion r se proyectara.

Ejemplo: obtener los nombres de los distintos departamentos

πnombre(departamento)

nombre

InformaticaMarketingVentas

Recursos Humanos

Obtener los montos de sueldo de los empleados:

πsueldo(empleado)

sueldo

$ 1.200.000$ 500.000$ 300.000$ 600.000

$ 1.500.000$ 2.000.000$ 800.000

se eliminan los repetidos! una relacion es un conjunto.

3

Composicion de Operaciones

El resultado de cada operacion es una nueva relacion ⇒ sepueden aplicar operadores a los resultados de aplicacionesprevias.

Por ejemplo:

πA(σP(r))σP(πA(r))

σP1(σP2

(r))

Obtener los nombres de los empleados que ganan mas de$1.000.000.

πnombre(σsueldo>1000000(empleado))

nombre

TorresSalasRıos

Gonzalez

Obtener el sueldo y la fecha de ingreso de Soto:

πsueldo,fech ing(σnombre=Soto(empleado))

sueldo fecha ing

$ 500.000 01/01/2003

4

Union

Dado que las relaciones son conjuntos de tuplas, se puedenrealizar las operaciones usuales de conjuntos como la union.

Sintaxis: usamos notacion infija

r1 ∪ r2

Se deben hacer ciertas restricciones para realizar la union:

• Ambas relaciones deben tener el mismo numero de atrib-utos.

• El dominio del atributo i-esimo de cada relacion debe co-incidir.

Obtener los nombres de los empleados que ganan mas de$1.500.000 o que trabajan en el departamento con codigoA1.

πnombre(σsueldo>1500000(empleado)∪ σcod dept=A1(empleado))

nombre

TorresFigueroa

SalasRıos

VenegasGonzalez

5

Diferencia

Tambien se puede usar la diferencia de conjuntos, las tuplasque estan en una relacion pero no en la otra.

Sintaxis: usamos notacion infija

r1 − r2

Para poder realizar la diferencia se deben cumplir las mismasrestricciones que para la union

Ejemplo:

πnombre(alumno) −πnombre(σcarrera=Bioinformatica(alumno))

Resulta en una relacion que contiene a todos los nombres delos alumnos excepto de los alumnos de la carrera de Bioin-formatica.

6

Producto Cartesiano

Representa al producto cartesiano usual de conjuntos.

Combina tuplas de cualquieras dos (o mas) relaciones, hacela combinacion de todos con todos.

Si las relaciones a operar tienen N y M tuplas de n y mcomponentes respectivamente, la relacion resultante del elproducto cartesiano tiene N × M tuplas de n + m compo-nentes.

Sintaxis: usamos notacion infija

r1 × r2

No hay restricciones a los dominios de las relaciones similaresa las anteriores operaciones.

Nos permite reunir datos de dos relaciones distintas.

Cuidado con los nombres repetidos! se deben renombrar cier-tos atributos para no tener porblemas.

departamento× departamentonombre cd fec creac nombre cd fec creac

Informatica A1 01/03/2002 Informatica A1 01/03/2002Informatica A1 01/03/2002 Marketing A2 01/01/2002Informatica A1 01/03/2002 Ventas A3 01/01/2001Informatica A1 01/03/2002 Rec. Hum. A4 01/01/2003Marketing A2 01/01/2002 Informatica A1 01/03/2002Marketing A2 01/01/2002 Marketing A2 01/01/2002Marketing A2 01/01/2002 Ventas A3 01/01/2001Marketing A2 01/01/2002 Rec. Hum. A4 01/01/2003Ventas A3 01/01/2001 Informatica A1 01/03/2002Ventas A3 01/01/2001 Marketing A2 01/01/2002Ventas A3 01/01/2001 Ventas A3 01/01/2001Ventas A3 01/01/2001 Rec. Hum. A4 01/01/2003

Rec. Hum. A4 01/01/2003 Informatica A1 01/03/2002Rec. Hum. A4 01/01/2003 Marketing A2 01/01/2002Rec. Hum. A4 01/01/2003 Ventas A3 01/01/2001Rec. Hum. A4 01/01/2003 Rec. Hum. A4 01/01/2003

7

Producto Cartesiano: Ejemplos

Obtener el nombre del departamento en el que Soto trabaja:Primero hacemos la union cartesiana igualando un atributo

σdepto.cod depto=emp.cod depto(empleado× departamento)

Ahora podemos hacer la seleccion y proyeccion

πdepto.nombre(σemp.nombre=Soto

(σdepto.cod depto=emp.cod depto(empleado× departamento)))

departamento.nombre

Marketing

8

Renombre

A veces necesitamos obtener informacion uniendo datos dela misma tabla.

Por ejemplo, obtener los nombres de todos los empleadosque ingresaron despues que Soto a la empresa.

Primer intento:

empleado× (σnombre=Soto(empleado))

¿Como nos referimos a una u otra instancia de la tablaempleado?

El operador de renombre ρ soluciona el problema.

El operador ρ toma una relacion y entrega la misma relacionpero con otro nombre, podemos referirnos a distintas instan-cias de la misma relacion.

Sintaxis:ρx(r)

Volviendo al ejemplo, obtener los nombres de todos los em-pleados que ingresaron despues que Soto a la empresa, se-gundo intento:

empleado× (σnombre=Soto(ρempleado2(empleado))

Ahora podemos hacer:

πempleado.nombre(σempleado.fecha ing>empleado2.fecha ing

(empleado× (σnombre=Soto(ρempleado2(empleado))))

9

Formalizacion y Notacion de Arbol

El algebra relacional es un lenguaje de expresiones. Todaexpresion se puede generar a partir de las siguientes reglas:

• Toda relacion de la base de datos es una expresion.

• Si E1 y E2 son expresiones entonces las siguientes tambienson expresiones:

◦ E1 ∪ E2

◦ E1 − E2

◦ E1 × E2

◦ σP(E1) donde P es un predicado con atributos de E1

◦ πA(E1) donde A es una lista de atributos de E1

◦ ρx(E1) donde x es el nuevo nombre de la relacion E1.

Cada expresion generada por las reglas anteriores tiene comoresultado una relacion.

Toda relacion resultado de una expresion en el algebra rela-cional se puede ver como un arbol donde cada nodo internoesta etiquetado por una operacion:

• Las hojas son relaciones efectivas de la base de datos.

• La relacion representada por un arbol es la relacion queresulta de aplicar la operacion etiquetada en su raız a lasrelacion representadas por cada uno de los subarboles hijos.

Por ejemplo la relacion resultante de

πdepto.nombre(σemp.nombre=Soto

(σdepto.cod depto=emp.cod depto(empleado× departamento)))

Esta representada por el siguiente arbol (en la pizarra...)

A veces es mas comodo representar expresiones extensas us-ando arboles.

10

————————————————-

Operaciones Adicionales, Interseccion

Las operaciones anteriores son suficientes para definir todael algebra relacional.

Algunas consultas habituales son complejas de realizar concombinaciones de operaciones simples, usamos algunos op-eradores adicionales.

Interseccion

La interseccion usual de conjuntos.

Sintaxis: usamos notacion infija

r1 ∩ r2

Se deben cumplir las mismas restricciones que en la union ydiferencia, los atributos de la relaciones involucradas debentener los mismos dominios.

La interseccion se puede crear a partir de la diferencia:

r1 ∩ r2 = r1 − (r1 − r2)

Ejemplo:

πnombre(alumno preg) ∩πnombre(alumno posg)

resulta en una relacion que contiene los nombres de todoslos alumnos que son simultaneamente de pre y posgrado.

11

Reunion Natural(Join)

Hace un producto cartesiano de sus dos argumentos y realizauna seleccion forzando la igualdad de atributos que aparecenen ambas relaciones.

Elimina repetidos (como toda operacion de conjuntos).

Sintaxis: r1 ⋊⋉ r2

Ejemplo: listar todos los empleados y el nombre del departa-mento en el que trabajan

πemp.nombre,dept.nombre(empleado ⋊⋉ departamento)

empleado.nombre departamento.nombre

Torres InformaticaSoto MarketingPerez Marketing

Figueroa InformaticaSalas InformaticaRıos Ventas

Campos MarketingVenegas InformaticaCarcamo MarketingGonzalez Ventas

12

Join en General

Un forma mas general de hacer Join es especificando unapropiedad de reunion.

Se hace entonces un producto cartesiano de las dos rela-ciones y se realiza una seleccion forzando una propiedad masgeneral que la igualdad de atributos que aparecen en ambasrelaciones.

Sintaxis: r1 ⋊⋉P r2donde P es la propiedad de reunion.

Ejemplo: listar todos los pares de nombres de empleados ydepartamentos tales que el empleado ingreso a la empresaen una fecha anterior a la de creacion del departamento

πemp.nombre,depto.nombre(empleado ⋊⋉(fecha ing<fecha creac) departamento)

13

Relaciones Temporales

A veces las consultas se hacen muy extensas.

Una forma de simplificarlas es usando relaciones temporalesy asignandoles expresiones para usar despues:

r ← E asigna la expresion de algebra relaciones E a la nuevarelacion r.

Ejemplo:

temp← σsueldo>500000(empleado ⋊⋉ departamento)

πempleado.nombre,departamento.nombre(temp)

El ultimo resultado son los nombres de empleados y el depar-tamento en el que trabajan tales que el sueldo del empleadoes mayor a $500.000.

14

Calculo Relacional de Tuplas

El calculo relacional de tuplas es un lenguaje no procedural.

Con el algebra relacional damos un procedimiento para unaexpresion.

πA1,B1(σA1=v(rA ⋊⋉ rB))

En el calculo relacional de tuplas especificamos la informaciondeseada sin dar un procedimiento para obtenerla.

{t|P (t)}

Este ultimo conjunto representa a la relacion de todas lastuplas t que cumplen la propiedad logica P .

Supongamos que necesitamos solo los nombres de los em-pleados que tienen sueldo mayor a $500.000.

En algebra relacional usamos el operador π para obtenersolo los nombres. En el calculo relacional de tuplas debemosusar la construccion existe “∃”:

∃ t ∈ r(Q(t))

que significa: “existe una tupla t en la relacion r que cumpleel predicado Q(t)”.

Ejemplo: obtener los nombres de los empleados que tienensueldo mayor a $500.000.

{t | ∃s ∈ empleado (t[nombre] = s[nombre]∧ s[sueldo] > 500000)}

Se lee: “el conjunto de todas las tuplas tales que existe unatupla s en la relacion empleado para la cual los valores de ty s son iguales en el atributo nombre y el valor de s en elatributo sueldo es mayor que 500000”.

La variable de tupla t se define solo en el atributo nombre, esel unico atributo no cuantificado. El resultado es una relacioncon solo un atributo.

15

Calculo Relacional de Tuplas: Ejemplos

Supongamos que necesitamos los datos de todos los emplea-dos del departamento de Marketing y no sabemos el codigodel departamento.

En algebra relacional usamos el operador ⋊⋉ para obtener losdatos de ambas tablas.

En el calculo relacional de tuplas debemos usar tambien laconstruccion existe:

{t | t ∈ empleado ∧ ∃s ∈ departamento (s[cod depto] =t[cod depto] ∧ s[nombre] = marketing)}

Se lee: “el conjunto de todas las tuplas t de la relacionempleado tales que existe una tupla s en la relacion departamentopara la cual los valores de t y s son iguales en el atributocod depto y el valor de s en el atributo nombre es marketing”.

¿Como expresamos consultas del tipo “los nombres de todoslos alumnos que no son de bioinformatica, suponiendo quecontamos con las relaciones alumno y alumno bioinformatica?

Necesitamos el operador logico de negacion “¬”.

{t | ∃s ∈ alumno (s[nombre] = t[nombre])∧ ¬∃u ∈ alumno bioinformatica (u[nombre] = t[nombre])}

Se lee: “el conjunto de todas las tuplas t tales que existeuna tupla s en la relacion alumno que comparte el atrib-uto nombre con t y NO existe una tupla u en la relacionalumno bioinformatica que comparta el atributo nombre cont”.

16

Calculo Relacional de Tuplas: Ejemplos (cont.)

En general podemos usar “casi” cualquier expresion logicapara seleccionar tuplas.

Podemos usar las construcciones para todo “∀”, implica que

“⇒”, etc.

{t | ∃s ∈ depatamento (s[nombre] = t[nombre] ∧∀u ∈ empleado (u[cod depto] = s[cod depto]⇒ u[sueldo] >

500000))}

Se lee: “el conjunto de todas las tuplas t tales que, existeuna tupla s en la relacion departamento con la que comparteel atributo nombre y que para toda tupla u en la relacionempleado, si u comparte el atributo cod depto con s entoncesel valor del atributo sueldo de u es mayor que 500000.

En este conjunto estan los nombres de los departamentoscuyos empleados tienen todos un sueldo mayor a $500.000.¿Como hacemos esta consulta en algebra relacional?

¿Por que “casi” todas las expresiones logicas? ¿Que resultade la siguiente consulta?

{t | ¬(t ∈ empleado)}

¡Resulta una relacion con un numero infinito de tuplas!¡Tuplas que ni siquiera se encuentran en nuestra base dedatos!

No aceptamos entonces este tipo de consultas, aceptamossolo consultas seguras.

Una consulta {t | P (t)} es segura si el resultado son valoresque pertenecen a dom(P ), donde dom(P ) es la union de losdominios de todas las relaciones que aparecen en P .

{t | ¬(t ∈ empleado)} no es segura{t | t ∈ alumno ∧ ¬(t ∈ alumno bioinformatica)} si es segura.

17

Calculo Relacional de Dominios

Es un lenguaje de consulta sobre el modelo relacional noprocedural.

A diferencia del calculo relacional de tuplas, consulta acercavalores del dominio de los atributos de las relaciones, no delas tuplas de estas.

Una consulta en calculo relacional de dominios es de la sigu-iente forma:

{< x1, x2, . . . , xn > | P (x1, x2, . . . , xn)}

donde x1, x2, . . . , xn se llaman variables de dominio y P es unaformula proposicional sobre las variables del dominio.

Ejemplo: Obtener el nombre, el codigo y la fecha de creacionde los departamentos creados despues del 2003

{< a, b, c > | < a, b, c >∈ departamento ∧ c > 1/1/2003}

Ejemplo: Obtener el nombre de los empleados que ganan$800.000

{< n > | ∃a, b, c (< n, a, b, c >∈ empleado ∧ a = 800000)}

Ejemplo: Obtener los nombres de los empleados y de losdepartamentos en los que trabajan

{< e, d > | ∃a, b, c, f (< e, a, b, c >∈ empleado ∧

< d, b, f >∈ departamento}

A veces es mas simple representar consultas para atributosespecıficos en el calculo de dominios que en el calculo detuplas.

Tambien existe una nocion muy similar de consultas seguras

en el calculo de tuplas. Las consultas que se salen del dominiono son seguras.

18

Algebra vs Calculo Relacional

El calculo relacional nos entrega dos lenguajes de consultaen una base de datos bajo el modelo relacional.

A veces se hace mucho mas “natural” expresar consultas enun lenguaje de calculo relacional que con el algebra relacional.

Ventaja: se expresa “lo que se quiere” sin necesitar explicarcomo obtenerlo (sin especificar un procedimiento).

Resultado muy importante:

El algebra relacional, el calculo relacional de tuplas y el

calculo relacional de dominios tienen el mismo poder

expresivo ⇒ pueden responder el mismo tipo

de consultas en una base de datos relacional.

Interesante porque el calculo relacional esta basado en logicade primer orden que tiene mucha teorıa estudiada.

Con logica podemos demostrar que ciertas consultas no sepueden lograr con solo Algebra Relacional.

El ejemplo canonico de consulta que no se puede realizar esla clausura transitiva.

• Relacion de vuelos con numero indefinido de escalas

• Relacion de ancestros

Otro ejemplo no realizable, contar: determinar si la cantidadde tuplas de una relacion es par

19

Modificacion de la Base de Datos

Hasta ahora hemos visto como obtener informacion desde laBase de Datos.

Es necesario entregar herramientas para poder alterar el es-tado de la Base de Datos.

Eliminacion, Insercion, Actualizacion son algunas de las tar-eas necesarias, usaremos el algebra relacional.

Eliminacion

Usamos el operador de diferencia (−) y asignacion (←)

r ← r − E

donde r es una relacion y E una expresion del algebra rela-cional.

Eliminar los datos de Soto

empleado← empleado−σnombre=Soto(empleado)

Eliminar todos los empleados del departamento de Marketing

r1 ←σdep.nombre=Marketing(empleado ⋊⋉ departamento)r2 ←πemp.nombre,sueldo,emp.cod depto,fech ing(r1)empleado← empleado− r2

nombre sueldo cod dept fecha ing

Torres $ 1.200.000 A1 01/01/2004Figueroa $ 600.000 A1 01/03/2002

Salas $ 1.500.000 A1 01/01/2002Rıos $ 2.000.000 A3 01/06/2002

Venegas $ 600.000 A1 01/06/2002Gonzalez $ 2.000.000 A3 01/10/2002

20

Modificacion de la Base de Datos (cont.)

Insercion

Usamos el operador de union

r ← r ∪ E

donde r es una relacion y E una expresion del algebra rela-cional.

Agregar el departamento de Finanzas con codigo A5 y fechade creacion 5/8/2004

departamento← departamento ∪ {(Finanzas,A5,5/8/2004)}

nombre cod dept fecha creac

Informatica A1 01/03/2002Marketing A2 01/01/2002Ventas A3 01/01/2001

Recursos Humanos A4 01/01/2003Finanzas A5 05/08/2004

Actualizacion

A veces queremos cambiar el valor de algun atributo de unatupla sin cambiarla entera. Podrıa hacerse una eliminacion einsercion, pero resulta engorrosos muchas veces.

Usamos un nuevo operador δ (no reasignamos!):

δA←E(r)

que representa el hecho de cambiar el atributo A por la ex-presion matematica E en la relacion r.

Subir el sueldo de todos los empleados en %10 si su sueldoactual es mayor que $1.000.000 y en %20 si es menor

δsueldo←sueldo∗1,1(σsueldo≥1000000(empleado))δsueldo←sueldo∗1,2(σsueldo<1000000(empleado))

21

Cuidado con el orden!!!

nombre sueldo cod dept fecha ing

Torres $ 1.320.000 A1 01/01/2004Soto $ 600.000 A2 01/01/2003Perez $ 360.000 A2 01/10/2003

Figueroa $ 720.000 A1 01/03/2002Salas $ 1.650.000 A1 01/01/2002Rıos $ 2.200.000 A3 01/06/2002

Campos $ 960.000 A2 01/11/2003Venegas $ 720.000 A1 01/06/2002Carcamo $ 600.000 A2 01/04/2003Gonzalez $ 2.200.000 A3 01/10/2002