Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algebra Relacional
Algebra Relacional
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 procedimientos para construir 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.
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 durante el 2003:
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
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.
4
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:
nombre( sueldo>1000000(empleado))
nombre Torres Salas R os Gonzalez Obtener el sueldo y la fecha de ingreso de Soto:
Uni on
Dado que las relaciones son conjuntos de tuplas, se pueden realizar las operaciones usuales de conjuntos como la uni on.
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.
Diferencia
Tambi en se puede usar la diferencia de conjuntos, las tuplas que est an en una relaci on pero no en la otra.
r1 r2
Para poder realizar la diferencia se deben cumplir las mismas restricciones que para la uni on Ejemplo:
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 8
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 (
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))
empleado.nombre( empleado.f echa ing>empleado2.f echa ing (empleado ( nombre=Soto (empleado2 (empleado))))
10
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.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.
11
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:
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
13
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)
14
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.
15
17
20
21
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))
22
Vistas
Hasta ahora hemos operado al nivel conceptual, directamente con las tablas de la base de datos. Muchas veces es mejor que ciertos usuarios tenga acceso a ciertos datos o vistas de los datos. Por ejemplo en una aplicaci on para jar reuniones, los empleados deben poder ver los nombres de los empleados y los departamentos a los que pertenecen pero no sus sueldos. emp.nombre,emp.cod
dept,dept.nombre (empleado
departamento)
Para crear una vista usaremos conceptualmente la sentencia create view de la siguiente forma: create view v as E d onde v es el nombre de la vista a crear y E es una expresi on de consulta. Una vista puede usarse como cualquier relaci on efectiva de la base de datos, pero cuidado una vista NO es una nueva relaci on, es simplemente una forma abreviada de referirse a una consulta. La vista se instancia cada vez que nos referimos a ella. Ejemplo: create view importantes as nombre,cod dept(sueldo1000000 (empleado))
importantes nombre Torres Salas R os Gonzalez cod dept A1 A1 A3 A3 23
Rechazar la inserci on y gatillar un error. Insertar la tupla (Gomez, null, A4, null) en la relaci on empleado
El valor null representa un valor nulo, desconocido o que no existe. Todas las comparaciones que implican null son por denici on falsas (esto ultimo tendr a implicancias pr acticas importantes). Un problema importante de la anterior actualizaci on es que, a pesar de que la relaci on empleado tiene una nueva tupla
nombre Torres Soto P erez Figueroa Salas R os Campos Venegas Carcamo Gonzalez Gomez 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 null cod dept A1 A2 A2 A1 A1 A3 A2 A1 A2 A3 A4 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 null
24
El tema de actualizaci on sobre vistas es muy interesante desde el punto de vista te orico y aun hay investigaci on en el area principalmente por el crecimiento de necesidades de integraci on de informaci on. Una posible soluci on al problema ser a haber insertado datos (m nimos) adicionales al ingresar la nueva tupla en la vista de manera de obtener el resultado deseado, o sea, haber insertado la tupla con atributo (Gomez, 1000000, A4, null) pero c omo podemos tomar esta decisi on autom aticamente?... un interesante tema para estudiar...
25