Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algebra Relacional
Algebra Relacional
Algebra Relacional
Un lgebra es un sistema matemtico constituido por a a
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 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 durante el 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
4
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 atribuu tos. El dominio del atributo i-simo de cada relacin debe coine o cidir.
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 8
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 relao cin pero con otro nombre, podemos referirnos a distintas o 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))))
10
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 a o usando rboles. a
11
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
13
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)
14
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.
15
17
20
21
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))
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 aplicacin para jar reuniones, los emo pleados 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 dnde v es el nombre de la vista a crear y E es una expresin o o de consulta. Una vista puede usarse como cualquier relacin efectiva de o la base de datos, pero cuidado una vista NO es una nueva relacin, es simplemente una forma abreviada de referirse a o 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 insercin y gatillar un error. o Insertar la tupla (Gomez, null, A4, null) en la relacin empleado o
El valor null representa un valor nulo, desconocido o que no existe. Todas las comparaciones que implican null son por denicin falsas (esto ltimo tendr implicancias prcticas o u a a importantes). Un problema importante de la anterior actualizacin es que, o a pesar de que la relacin empleado tiene una nueva tupla o
nombre Torres Soto Prez e 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 actualizacin sobre vistas es muy interesante deso de el punto de vista terico y aun hay investigacin en el rea o o a principalmente por el crecimiento de necesidades de integracin de informacin. o o Una posible solucin al problema ser haber insertado datos o a (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 cmo podemos tomar esta decisin automticamente?... un o o a interesante tema para estudiar...
25