Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algebra Relacional
Algebra Relacional
Operandos: objetos (valores o variables) desde los cuales nuevos objetos pueden ser construidos. Operadores: s mbolos que denotan nuevos objetos desde objetos dados.
El lgebra relacional es un lgebra en la cual a a
Sus operandos son relaciones (instancias) o variables que representan relaciones. Sus operadores estn diseados para hacer la tareas ms a n a comunes que se necesitan para manipular relaciones en una base de datos.
El resultado es que el lgebra relacional se puede utilizar a como un lenguaje de consulta. En la prctica el lgebra relacional debe ser extendida para a a abarcar la mayor parte de las tareas reales que se hacen con los datos. Estudiaremos en detalle los operadores clsicos. a
Tablas
Estas sern las tablas que usaremos en la mayor de ejemplos a a Empleado nombre Torres Soto Prez e 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 Informtica a 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
Seleccin o
Operador de seleccin o tuplas de una relacin. o
Tuplas seleccionadas son las que satisfacen cierto predicado lgico P . El predicado puede depender de los atributos de la o relacin y de valores constantes. o El operador toma una relacin como argumento y el reo sultado es una nueva relacin. o 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:
Proyeccin o
Operador de proyeccin o , proyecta una relacin sobre un o subconjunto de sus atributos. El operador toma una relacin como argumento y el reo sultado es una nueva relacin. o Sintaxis:
A(r) nombre(departamento)
nombre Informtica a Marketing Ventas Recursos Humanos
donde A representa el conjunto de atributos sobre los que la relacin r se proyectar. o 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 relacin es un conjunto. o
3
Composicin de Operaciones o
El resultado de cada operacin es una nueva relacin se o o 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:
Unin o
Dado que las relaciones son conjuntos de tuplas, se pueden realizar las operaciones usuales de conjuntos como la unin. o
r1 r2
Se deben hacer ciertas restricciones para realizar la unin: o
Ambas relaciones deben tener el mismo nmero de atribu utos. El dominio del atributo i-simo de cada relacin debe coe o incidir.
Obtener los nombres de los empleados que ganan mas de $1.500.000 o que trabajan en el departamento con cdigo o A1.
Diferencia
Tambin se puede usar la diferencia de conjuntos, las tuplas e que estn en una relacin pero no en la otra. a o
r1 r2
Para poder realizar la diferencia se deben cumplir las mismas restricciones que para la unin o Ejemplo:
Producto Cartesiano
Representa al producto cartesiano usual de conjuntos. Combina tuplas de cualquieras dos (o ms) relaciones, hace a la combinacin de todos con todos. o Si las relaciones a operar tienen N y M tuplas de n y m componentes respectivamente, la relacin resultante del el o producto cartesiano tiene N M tuplas de n + m componentes. Sintaxis: usamos notacin inja o
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 Informtica a Informtica a Informtica a Informtica a 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 Informtica a Marketing Ventas Rec. Hum. Informtica a Marketing Ventas Rec. Hum. Informtica a Marketing Ventas Rec. Hum. Informtica a 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
depto.nombre( emp.nombre=Soto
Renombre
A veces necesitamos obtener informacin uniendo datos de o la misma tabla. Por ejemplo, obtener los nombres de todos los empleados que ingresaron despus que Soto a la empresa. e Primer intento: empleado (
Cmo nos referimos a una u otra instancia de la tabla o empleado? El operador de renombre
El operador toma una relacin y entrega la misma relacin o o pero con otro nombre, podemos referirnos a distintas instancias de la misma relacin. o Sintaxis:
x(r)
Volviendo al ejemplo, obtener los nombres de todos los empleados que ingresaron despus que Soto a la empresa, see gundo intento: empleado (
nombre=Soto(empleado2(empleado))
empleado.nombre( empleado.f echa ing>empleado2.f echa ing (empleado ( nombre=Soto (empleado2 (empleado))))
Toda relacin de la base de datos es una expresin. o o Si E1 y E2 son expresiones entonces las siguientes tambin e 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 relacin E1. o
Cada expresin generada por las reglas anteriores tiene como o resultado una relacin. o Toda relacin resultado de una expresin en el lgebra relao o a cional se puede ver como un rbol donde cada nodo interno a est etiquetado por una operacin: a o
Las hojas son relaciones efectivas de la base de datos. La relacin representada por un rbol es la relacin que o a o resulta de aplicar la operacin etiquetada en su ra a las o z relacin representadas por cada uno de los subrboles hijos. o a
Por ejemplo la relacin resultante de o (
depto.nombre( emp.nombre=Soto
Est representada por el siguiente rbol (en la pizarra...) a a A veces es ms cmodo representar expresiones extensas usa o ando rboles. a
10
r1 r2
Se deben cumplir las mismas restricciones que en la unin y o diferencia, los atributos de la relaciones involucradas deben tener los mismos dominios. La interseccin se puede crear a partir de la diferencia: o
r1 r2 = r1 (r1 r2)
Ejemplo:
Reunin Natural(Join) o
Hace un producto cartesiano de sus dos argumentos y realiza una seleccin forzando la igualdad de atributos que aparecen o en ambas relaciones. Elimina repetidos (como toda operacin de conjuntos). o 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 Prez e Figueroa Salas R os Campos Venegas Carcamo Gonzalez departamento.nombre Informtica a Marketing Marketing Informtica a Informtica a Ventas Marketing Informtica a Marketing Ventas
12
Join en General
Un forma ms general de hacer Join es especicando una a propiedad de reunin. o Se hace entonces un producto cartesiano de las dos relaciones y se realiza una seleccin forzando una propiedad ms o a general que la igualdad de atributos que aparecen en ambas relaciones. Sintaxis:
r1 P r2
donde P es la propiedad de reunin. o Ejemplo: listar todos los pares de nombres de empleados y departamentos tales que el empleado ingres a la empresa o en una fecha anterior a la de creacin del departamento o
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 asignndoles expresiones para usar despus: a e r E asigna la expresin de lgebra relaciones E a la nueva o a relacin r. o Ejemplo: temp sueldo>500000 (empleado departamento) empleado.nombre,departamento.nombre(temp) El ltimo resultado son los nombres de empleados y el deparu tamento en el que trabajan tales que el sueldo del empleado es mayor a $500.000.
14
16
19
20
Actualizacin o A veces queremos cambiar el valor de algn atributo de una u tupla sin cambiarla entera. Podr hacerse una eliminacin e a o insercin, pero resulta engorrosos muchas veces. o Usamos un nuevo operador (no reasignamos!): AE (r) que representa el hecho de cambiar el atributo A por la expresin matemtica E en la relacin r. o a o 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