Está en la página 1de 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.

Tablas
Estas ser an las tablas que usaremos en la mayor a de ejemplos Empleado nombre Torres Soto P erez Figueroa Salas R os Campos Venegas Carcamo Gonzalez sueldo $ 1.200.000 $ 500.000 $ 300.000 $ 600.000 $ 1.500.000 $ 2.000.000 $ 800.000 $ 600.000 $ 500.000 $ 2.000.000 cod dept A1 A2 A2 A1 A1 A3 A2 A1 A2 A3 f echa ing 01/01/2004 01/01/2003 01/10/2003 01/03/2002 01/01/2002 01/06/2002 01/11/2003 01/06/2002 01/04/2003 01/10/2002

Departamento nombre Inform atica Marketing Ventas Recursos Humanos cod dept A1 A2 A3 A4 f echa creac 01/03/2002 01/01/2002 01/01/2001 01/01/2003

Selecci on
Operador de selecci on tuplas de una relaci on.

, selecciona un subconjunto de las

Tuplas seleccionadas son las que satisfacen cierto predicado l ogico P . El predicado puede depender de los atributos de la relaci on y de valores constantes. El operador toma una relaci on como argumento y el resultado es una nueva relaci on. Sintaxis:

P (r )
Seleccionar los datos del empleado Soto:

nombre=Soto(empleado)
nombre Soto sueldo $ 500.000 cod dept A2 f echa ing 01/01/2003

Los datos de los empleados con sueldo $500.000 que ingresaron despues del 2003:

sueldo500000 f ech ing1/1/2003(empleado)


nombre Soto Campos Carcamo Torres sueldo $ 500.000 $ 800.000 $ 500.000 $ 1.200.000 cod dept A2 A2 A2 A1 f echa ing 01/01/2003 01/11/2003 01/04/2003 01/01/2004

Proyecci on
Operador de proyecci on , proyecta una relaci on sobre un subconjunto de sus atributos. El operador toma una relaci on como argumento y el resultado es una nueva relaci on. Sintaxis:

A (r ) nombre(departamento)
nombre Inform atica Marketing Ventas Recursos Humanos

donde A representa el conjunto de atributos sobre los que la relaci on r se proyectar a. Ejemplo: obtener los nombres de los distintos departamentos

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 relaci on es un conjunto.
3

Composici on de Operaciones
El resultado de cada operaci on es una nueva relaci on se pueden aplicar operadores a los resultados de aplicaciones previas. Por ejemplo:

A(P (r)) P (A(r)) P1 (P2 (r))


Obtener los nombres de los empleados que ganan m as de $1.000.000.

nombre( sueldo>1000000(empleado))
nombre Torres Salas R os Gonzalez Obtener el sueldo y la fecha de ingreso de Soto:

sueldo,f ech ing ( nombre=Soto(empleado))


sueldo $ 500.000 f echa ing 01/01/2003

Uni on
Dado que las relaciones son conjuntos de tuplas, se pueden realizar las operaciones usuales de conjuntos como la uni on.

Sintaxis: usamos notaci on inja

r1 r2
Se deben hacer ciertas restricciones para realizar la uni on:

Ambas relaciones deben tener el mismo n umero de atributos. El dominio del atributo i- esimo de cada relaci on debe coincidir.
Obtener los nombres de los empleados que ganan mas de $1.500.000 o que trabajan en el departamento con c odigo A1.

nombre( sueldo>1500000(empleado) cod dept=A1(empleado))


nombre Torres Figueroa Salas R os Venegas Gonzalez

Diferencia
Tambi en se puede usar la diferencia de conjuntos, las tuplas que est an en una relaci on pero no en la otra.

Sintaxis: usamos notaci on inja

r1 r2
Para poder realizar la diferencia se deben cumplir las mismas restricciones que para la uni on Ejemplo:

nombre(alumno) nombre( carrera=Bioinformatica(alumno))


Resulta en una relaci on que contiene a todos los nombres de los alumnos excepto de los alumnos de la carrera de Bioinform atica.

Producto Cartesiano
Representa al producto cartesiano usual de conjuntos. Combina tuplas de cualquieras dos (o m as) relaciones, hace la combinaci on de todos con todos. Si las relaciones a operar tienen N y M tuplas de n y m componentes respectivamente, la relaci on resultante del el producto cartesiano tiene N M tuplas de n + m componentes. Sintaxis: usamos notaci on inja

r1 r2
No hay restricciones a los dominios de las relaciones similares a las anteriores operaciones. Nos permite reunir datos de dos relaciones distintas. Cuidado con los nombres repetidos! se deben renombrar ciertos atributos para no tener porblemas. departamento departamento
nombre Inform atica Inform atica Inform atica Inform atica Marketing Marketing Marketing Marketing Ventas Ventas Ventas Ventas Rec. Hum. Rec. Hum. Rec. Hum. Rec. Hum. cd A1 A1 A1 A1 A2 A2 A2 A2 A3 A3 A3 A3 A4 A4 A4 A4 f ec creac 01/03/2002 01/03/2002 01/03/2002 01/03/2002 01/01/2002 01/01/2002 01/01/2002 01/01/2002 01/01/2001 01/01/2001 01/01/2001 01/01/2001 01/01/2003 01/01/2003 01/01/2003 01/01/2003 nombre Inform atica Marketing Ventas Rec. Hum. Inform atica Marketing Ventas Rec. Hum. Inform atica Marketing Ventas Rec. Hum. Inform atica Marketing Ventas Rec. Hum. cd A1 A2 A3 A4 A1 A2 A3 A4 A1 A2 A3 A4 A1 A2 A3 A4 f ec creac 01/03/2002 01/01/2002 01/01/2001 01/01/2003 01/03/2002 01/01/2002 01/01/2001 01/01/2003 01/03/2002 01/01/2002 01/01/2001 01/01/2003 01/03/2002 01/01/2002 01/01/2001 01/01/2003 7

Producto Cartesiano: Ejemplos


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

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


Ahora podemos hacer la selecci on y proyecci on (

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


departamento.nombre Marketing

depto.nombre( emp.nombre=Soto

Renombre
A veces necesitamos obtener informaci on uniendo datos de la misma tabla. Por ejemplo, obtener los nombres de todos los empleados que ingresaron despu es que Soto a la empresa. Primer intento: empleado (

nombre=Soto(empleado)) soluciona el problema.

C omo nos referimos a una u otra instancia de la tabla empleado? El operador de renombre

El operador toma una relaci on y entrega la misma relaci on pero con otro nombre, podemos referirnos a distintas instancias de la misma relaci on. Sintaxis:

x (r )

Volviendo al ejemplo, obtener los nombres de todos los empleados que ingresaron despu es que Soto a la empresa, segundo intento: empleado (

nombre=Soto(empleado2(empleado))

Ahora podemos hacer:

empleado.nombre( empleado.f echa ing>empleado2.f echa ing (empleado ( nombre=Soto (empleado2 (empleado))))

Formalizaci on y Notaci on de Arbol


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

Toda relaci on de la base de datos es una expresi on. Si E1 y E2 son expresiones entonces las siguientes tambi en son 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 relaci on E1.

Cada expresi on generada por las reglas anteriores tiene como resultado una relaci on. Toda relaci on resultado de una expresi on en el algebra relacional se puede ver como un arbol donde cada nodo interno est a etiquetado por una operaci on:

Las hojas son relaciones efectivas de la base de datos. La relaci on representada por un arbol es la relaci on que resulta de aplicar la operaci on etiquetada en su ra z a las relaci on representadas por cada uno de los sub arboles hijos.
Por ejemplo la relaci on resultante de (

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

depto.nombre( emp.nombre=Soto

Est a representada por el siguiente arbol (en la pizarra...) A veces es m as c omodo representar expresiones extensas usando arboles.
10

Operaciones Adicionales, Intersecci on


Las operaciones anteriores son sucientes para denir toda el algebra relacional. Algunas consultas habituales son complejas de realizar con combinaciones de operaciones simples, usamos algunos operadores adicionales. Intersecci on La intersecci on usual de conjuntos. Sintaxis: usamos notaci on inja

r1 r2
Se deben cumplir las mismas restricciones que en la uni on y diferencia, los atributos de la relaciones involucradas deben tener los mismos dominios. La intersecci on se puede crear a partir de la diferencia:

r 1 r 2 = r 1 (r 1 r 2 )
Ejemplo:

nombre(alumno preg) nombre(alumno posg)


resulta en una relaci on que contiene los nombres de todos los alumnos que son simult aneamente de pre y posgrado.
11

Reuni on Natural(Join)
Hace un producto cartesiano de sus dos argumentos y realiza una selecci on forzando la igualdad de atributos que aparecen en ambas relaciones. Elimina repetidos (como toda operaci on de conjuntos). Sintaxis:

r1 r2

Ejemplo: listar todos los empleados y el nombre del departamento en el que trabajan

emp.nombre,dept.nombre(empleado departamento)
empleado.nombre Torres Soto P erez Figueroa Salas R os Campos Venegas Carcamo Gonzalez departamento.nombre Inform atica Marketing Marketing Inform atica Inform atica Ventas Marketing Inform atica Marketing Ventas

12

Join en General
Un forma m as general de hacer Join es especicando una propiedad de reuni on. Se hace entonces un producto cartesiano de las dos relaciones y se realiza una selecci on forzando una propiedad m as general que la igualdad de atributos que aparecen en ambas relaciones. Sintaxis:

r1 P r2

donde P es la propiedad de reuni on. Ejemplo: listar todos los pares de nombres de empleados y departamentos tales que el empleado ingres o a la empresa en una fecha anterior a la de creaci on del departamento

empleado (f echa

emp.nombre,depto.nombre(
ing<f echa creac)

departamento)

13

Relaciones Temporales
A veces las consultas se hacen muy extensas. Una forma de simplicarlas es usando relaciones temporales y asign andoles expresiones para usar despu es: r E asigna la expresi on de algebra relaciones E a la nueva relaci on r . Ejemplo: temp sueldo>500000 (empleado departamento) empleado.nombre,departamento.nombre(temp) El ultimo resultado son los nombres de empleados y el departamento en el que trabajan tales que el sueldo del empleado es mayor a $500.000.

14

C alculo Relacional de Tuplas


El c alculo relacional de tuplas es un lenguaje no procedural. Con el algebra relacional damos un procedimiento para una expresi on. A1 ,B1 (A1 =v (rA rB )) En el c alculo relacional de tuplas especicamos la informaci on deseada sin dar un procedimiento para obtenerla. {t|P (t)} Este ultimo conjunto representa a la relaci on de todas las tuplas t que cumplen la propiedad l ogica P . Supongamos que necesitamos s olo los nombres de los empleados que tienen sueldo mayor a $500.000. En algebra relacional usamos el operador para obtener s olo los nombres. En el c alculo relacional de tuplas debemos usar la construcci on existe : t r (Q(t)) que signica: existe una tupla t en la relaci on r que cumple el predicado Q(t). Ejemplo: obtener los nombres de los empleados que tienen sueldo 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 una tupla s en la relaci on empleado para la cual los valores de t y s son iguales en el atributo nombre y el valor de s en el atributo sueldo es mayor que 500000. La variable de tupla t se dene s olo en el atributo nombre, es el unico atributo no cuanticado. El resultado es una relaci on con s olo un atributo.
15

C alculo Relacional de Tuplas: Ejemplos


Supongamos que necesitamos los datos de todos los empleados del departamento de Marketing y no sabemos el c odigo del departamento. En algebra relacional usamos el operador para obtener los datos de ambas tablas. En el c alculo relacional de tuplas debemos usar tambi en la construcci on 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 relaci on empleado tales que existe una tupla s en la relaci on departamento para la cual los valores de t y s son iguales en el atributo cod depto y el valor de s en el atributo nombre es marketing . C omo expresamos consultas del tipo los nombres de todos los alumnos que no son de bioinform atica, suponiendo que contamos con las relaciones alumno y alumno bioinf ormatica? Necesitamos el operador l ogico de negaci on . {t | s alumno (s[nombre] = t[nombre]) u alumno bioinf ormatica (u[nombre] = t[nombre])} Se lee: el conjunto de todas las tuplas t tales que existe una tupla s en la relaci on alumno que comparte el atributo nombre con t y NO existe una tupla u en la relaci on alumno bioinf ormatica que comparta el atributo nombre con t.

16

C alculo Relacional de Tuplas: Ejemplos (cont.)


En general podemos usar casi cualquier expresi on l ogica para 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, existe una tupla s en la relaci on departamento con la que comparte el atributo nombre y que para toda tupla u en la relaci on empleado, si u comparte el atributo cod depto con s entonces el valor del atributo sueldo de u es mayor que 500000. En este conjunto est an los nombres de los departamentos cuyos empleados tienen todos un sueldo mayor a $500.000. C omo hacemos esta consulta en algebra relacional? Por qu e casi todas las expresiones l ogicas? Qu e resulta de la siguiente consulta? {t | (t empleado)} Resulta una relaci on con un n umero innito de tuplas! Tuplas que ni siquiera se encuentran en nuestra base de datos! No aceptamos entonces este tipo de consultas, aceptamos s olo consultas seguras. Una consulta {t | P (t)} es segura si el resultado son valores que pertenecen a dom(P ), donde dom(P ) es la uni on de los dominios de todas las relaciones que aparecen en P . {t | (t empleado)} no es segura {t | t alumno (t alumno bioinf ormatica)} si es segura.
17

C alculo Relacional de Dominios


Es un lenguaje de consulta sobre el modelo relacional no procedural. A diferencia del c alculo relacional de tuplas, consulta acerca valores del dominio de los atributos de las relaciones, no de las tuplas de estas. Una consulta en c alculo relacional de dominios es de la siguiente forma: {< x1 , x2 , . . . , xn > | P (x1 , x2 , . . . , xn )} d onde x1 , x2 , . . . , xn se llaman variables de dominio y P es una f ormula proposicional sobre las variables del dominio. Ejemplo: Obtener el nombre, el c odigo y la fecha de creaci on de los departamentos creados despu es 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 los departamentos en los que trabajan {< e, d > | a, b, c, f (< e, a, b, c > empleado < d, b, f > departamento} A veces es m as simple representar consultas para atributos espec cos en el c alculo de dominios que en el c alculo de tuplas. Tambi en existe una noci on muy similar de consultas seguras en el c alculo de tuplas. Las consultas que se salen del dominio no son seguras.
18

Algebra vs C alculo Relacional


El c alculo relacional nos entrega dos lenguajes de consulta en una base de datos bajo el modelo relacional. A veces se hace mucho m as natural expresar consultas en un lenguaje de c alculo relacional que con el algebra relacional. Ventaja: se expresa lo que se quiere sin necesitar explicar c omo obtenerlo (sin especicar un procedimiento). Resultado muy importante: El algebra relacional, el c alculo relacional de tuplas y el c alculo relacional de dominios tienen el mismo poder expresivo pueden responder el mismo tipo de consultas en una base de datos relacional. Interesante porque el c alculo relacional est a basado en l ogica de primer orden que tiene mucha teor a estudiada. Con l ogica podemos demostrar que ciertas consultas no se lgebra Relacional. pueden lograr con s olo A El ejemplo can onico de consulta que no se puede realizar es la clausura transitiva.

Relaci on de vuelos con n umero indenido de escalas Relaci on de ancestros


Otro ejemplo no realizable, contar: determinar si la cantidad de tuplas de una relaci on es par

19

Modicaci on de la Base de Datos


Hasta ahora hemos visto como obtener informaci on desde la Base de Datos. Es necesario entregar herramientas para poder alterar el estado de la Base de Datos. Eliminaci on, Inserci on, Actualizaci on son algunas de las tareas necesarias, usaremos el algebra relacional. Eliminaci on Usamos el operador de diferencia () y asignaci on () r rE donde r es una relaci on y E una expresi on del algebra relacional. 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,f ech ing (r1) empleado empleado r2
nombre Torres Figueroa Salas R os Venegas Gonzalez sueldo $ 1.200.000 $ 600.000 $ 1.500.000 $ 2.000.000 $ 600.000 $ 2.000.000 cod dept A1 A1 A1 A3 A1 A3 f echa ing 01/01/2004 01/03/2002 01/01/2002 01/06/2002 01/06/2002 01/10/2002

20

Modicaci on de la Base de Datos (cont.)


Inserci on Usamos el operador de uni on r rE donde r es una relaci on y E una expresi on del algebra relacional. Agregar el departamento de Finanzas con c odigo A5 y fecha de creaci on 5/8/2004 departamento departamento {(Finanzas, A5, 5/8/2004)}
nombre Inform atica Marketing Ventas Recursos Humanos Finanzas cod dept A1 A2 A3 A4 A5 f echa creac 01/03/2002 01/01/2002 01/01/2001 01/01/2003 05/08/2004

Actualizaci on A veces queremos cambiar el valor de alg un atributo de una tupla sin cambiarla entera. Podr a hacerse una eliminaci on e inserci on, pero resulta engorrosos muchas veces. Usamos un nuevo operador (no reasignamos!): AE (r ) que representa el hecho de cambiar el atributo A por la expresi on matem atica E en la relaci on r . Subir el sueldo de todos los empleados en %10 si su sueldo actual es mayor que $1.000.000 y en %20 si es menor sueldosueldo1,1 (sueldo1000000 (empleado)) sueldosueldo1,2 (sueldo<1000000 (empleado))
21

Cuidado con el orden!!!


nombre Torres Soto P erez Figueroa Salas R os Campos Venegas Carcamo Gonzalez sueldo $ 1.320.000 $ 600.000 $ 360.000 $ 720.000 $ 1.650.000 $ 2.200.000 $ 960.000 $ 720.000 $ 600.000 $ 2.200.000 cod dept A1 A2 A2 A1 A1 A3 A2 A1 A2 A3 f echa ing 01/01/2004 01/01/2003 01/10/2003 01/03/2002 01/01/2002 01/06/2002 01/11/2003 01/06/2002 01/04/2003 01/10/2002

También podría gustarte