El documento describe el álgebra relacional, un sistema matemático para manipular relaciones en bases de datos. Sus operandos son relaciones y sus operadores permiten realizar tareas comunes como seleccionar, proyectar y unir relaciones. El álgebra relacional puede usarse como un lenguaje de consulta para extraer y combinar datos de manera flexible.
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
Al
1. ´
Algebra Relacional
Un ´lgebra es un sistema matem´tico constituido por
a a
• 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 est´n dise˜ados para hacer la tareas m´s
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 pr´ctica 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 cl´sicos.
a
1
2. Tablas
Estas ser´n las tablas que usaremos en la mayor´ de ejemplos
a ıa
Empleado
nombre sueldo cod dept f echa ing
Torres $ 1.200.000 A1 01/01/2004
Soto $ 500.000 A2 01/01/2003
P´rez
e $ 300.000 A2 01/10/2003
Figueroa $ 600.000 A1 01/03/2002
Salas $ 1.500.000 A1 01/01/2002
R´ıos $ 2.000.000 A3 01/06/2002
Campos $ 800.000 A2 01/11/2003
Venegas $ 600.000 A1 01/06/2002
Carcamo $ 500.000 A2 01/04/2003
Gonzalez $ 2.000.000 A3 01/10/2002
Departamento
nombre cod dept f echa creac
Inform´tica
a A1 01/03/2002
Marketing A2 01/01/2002
Ventas A3 01/01/2001
Recursos Humanos A4 01/01/2003
3. Selecci´n
o
Operador de selecci´n
o σ , selecciona un subconjunto de las
tuplas de una relaci´n.
o
Tuplas seleccionadas son las que satisfacen cierto predicado
l´gico P . El predicado puede depender de los atributos de la
o
relaci´n y de valores constantes.
o
El operador σtoma una relaci´n como argumento y el re-
o
sultado es una nueva relaci´n.
o
Sintaxis:
σ P (r)
Seleccionar los datos del empleado Soto:
σ nombre=Soto(empleado)
nombre sueldo cod dept f echa 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 ∧ f ech ing≥1/1/2003(empleado)
nombre sueldo cod dept f echa ing
Soto $ 500.000 A2 01/01/2003
Campos $ 800.000 A2 01/11/2003
Carcamo $ 500.000 A2 01/04/2003
Torres $ 1.200.000 A1 01/01/2004
2
4. Proyecci´n
o
Operador de proyecci´n
o π, proyecta una relaci´n sobre un
o
subconjunto de sus atributos.
El operador π toma una relaci´n como argumento y el re-
o
sultado es una nueva relaci´n.
o
Sintaxis:
πA(r)
donde A representa el conjunto de atributos sobre los que
la relaci´n r se proyectar´.
o a
Ejemplo: obtener los nombres de los distintos departamentos
π nombre(departamento)
nombre
Inform´tica
a
Marketing
Ventas
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 relaci´n es un conjunto.
o
3
5. Composici´n de Operaciones
o
El resultado de cada operaci´n es una nueva relaci´n ⇒ se
o o
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´s de
a
$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 f echa ing
$ 500.000 01/01/2003
4
6. Uni´n
o
Dado que las relaciones son conjuntos de tuplas, se pueden
realizar las operaciones usuales de conjuntos como la uni´n.
o
Sintaxis: usamos notaci´n infija
o
r1 ∪ r2
Se deben hacer ciertas restricciones para realizar la uni´n:
o
• Ambas relaciones deben tener el mismo n´mero de atrib-
u
utos.
• El dominio del atributo i-´simo de cada relaci´n debe co-
e o
incidir.
Obtener los nombres de los empleados que ganan mas de
$1.500.000 o que trabajan en el departamento con c´digo
o
A1.
π nombre(σ sueldo>1500000(empleado) ∪ σ cod dept=A1(empleado))
nombre
Torres
Figueroa
Salas
R´ıos
Venegas
Gonzalez
5
7. Diferencia
Tambi´n se puede usar la diferencia de conjuntos, las tuplas
e
que est´n en una relaci´n pero no en la otra.
a o
Sintaxis: usamos notaci´n infija
o
r1 − r2
Para poder realizar la diferencia se deben cumplir las mismas
restricciones que para la uni´n
o
Ejemplo:
π nombre(alumno) − π nombre(σ carrera=Bioinformatica(alumno))
Resulta en una relaci´n que contiene a todos los nombres de
o
los alumnos excepto de los alumnos de la carrera de Bioin-
form´tica.
a
6
8. Producto Cartesiano
Representa al producto cartesiano usual de conjuntos.
Combina tuplas de cualquieras dos (o m´s) relaciones, hace
a
la combinaci´n de todos con todos.
o
Si las relaciones a operar tienen N y M tuplas de n y m
componentes respectivamente, la relaci´n resultante del el
o
producto cartesiano tiene N × M tuplas de n + m compo-
nentes.
Sintaxis: usamos notaci´n infija
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 cier-
tos atributos para no tener porblemas.
departamento × departamento
nombre cd f ec creac nombre cd f ec creac
Inform´tica
a A1 01/03/2002 Inform´tica
a A1 01/03/2002
Inform´tica
a A1 01/03/2002 Marketing A2 01/01/2002
Inform´tica
a A1 01/03/2002 Ventas A3 01/01/2001
Inform´tica
a A1 01/03/2002 Rec. Hum. A4 01/01/2003
Marketing A2 01/01/2002 Inform´tica
a A1 01/03/2002
Marketing A2 01/01/2002 Marketing A2 01/01/2002
Marketing A2 01/01/2002 Ventas A3 01/01/2001
Marketing A2 01/01/2002 Rec. Hum. A4 01/01/2003
Ventas A3 01/01/2001 Inform´tica
a A1 01/03/2002
Ventas A3 01/01/2001 Marketing A2 01/01/2002
Ventas A3 01/01/2001 Ventas A3 01/01/2001
Ventas A3 01/01/2001 Rec. Hum. A4 01/01/2003
Rec. Hum. A4 01/01/2003 Inform´tica
a A1 01/03/2002
Rec. Hum. A4 01/01/2003 Marketing A2 01/01/2002
Rec. Hum. A4 01/01/2003 Ventas A3 01/01/2001
Rec. Hum. A4 01/01/2003 Rec. Hum. A4 01/01/2003
7
9. Producto Cartesiano: Ejemplos
Obtener el nombre del departamento en el que Soto trabaja:
Primero hacemos la uni´n cartesiana igualando un atributo
o
σ depto.cod depto=emp.cod depto(empleado × departamento)
Ahora podemos hacer la selecci´n y proyecci´n
o o
π depto.nombre(σ emp.nombre=Soto
( σ depto.cod depto=emp.cod depto(empleado × departamento)))
departamento.nombre
Marketing
8
10. Renombre
A veces necesitamos obtener informaci´n uniendo datos de
o
la misma tabla.
Por ejemplo, obtener los nombres de todos los empleados
que ingresaron despu´s que Soto a la empresa.
e
Primer intento:
empleado × ( σ nombre=Soto(empleado))
¿C´mo nos referimos a una u otra instancia de la tabla
o
empleado?
El operador de renombre ρ soluciona el problema.
El operador ρ toma una relaci´n y entrega la misma relaci´n
o o
pero con otro nombre, podemos referirnos a distintas instan-
cias de la misma relaci´n.
o
Sintaxis:
ρx(r)
Volviendo al ejemplo, obtener los nombres de todos los em-
pleados que ingresaron despu´s que Soto a la empresa, se-
e
gundo intento:
empleado × ( σ nombre=Soto(ρempleado2(empleado))
Ahora podemos hacer:
π empleado.nombre(σ empleado.f echa ing>empleado2.f echa ing
(empleado × (σ nombre=Soto (ρempleado2 (empleado))))
9
11. o o ´
Formalizaci´n y Notaci´n de Arbol
El ´lgebra relacional es un lenguaje de expresiones. Toda
a
expresi´n se puede generar a partir de las siguientes reglas:
o
• Toda relaci´n de la base de datos es una expresi´n.
o o
• Si E1 y E2 son expresiones entonces las siguientes tambi´n
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 relaci´n E1.
o
Cada expresi´n generada por las reglas anteriores tiene como
o
resultado una relaci´n.
o
Toda relaci´n resultado de una expresi´n en el ´lgebra rela-
o o a
cional se puede ver como un ´rbol donde cada nodo interno
a
est´ etiquetado por una operaci´n:
a o
• Las hojas son relaciones efectivas de la base de datos.
• La relaci´n representada por un ´rbol es la relaci´n que
o a o
resulta de aplicar la operaci´n etiquetada en su ra´ a las
o ız
relaci´n representadas por cada uno de los sub´rboles hijos.
o a
Por ejemplo la relaci´n resultante de
o
π depto.nombre(σ emp.nombre=Soto
( σ depto.cod depto=emp.cod depto(empleado × departamento)))
Est´ representada por el siguiente ´rbol (en la pizarra...)
a a
A veces es m´s c´modo representar expresiones extensas us-
a o
ando ´rboles.
a
10
13. Operaciones Adicionales, Intersecci´n
o
Las operaciones anteriores son suficientes para definir toda
el algebra relacional.
Algunas consultas habituales son complejas de realizar con
combinaciones de operaciones simples, usamos algunos op-
eradores adicionales.
Intersecci´n
o
La intersecci´n usual de conjuntos.
o
Sintaxis: usamos notaci´n infija
o
r1 ∩ r2
Se deben cumplir las mismas restricciones que en la uni´n y
o
diferencia, los atributos de la relaciones involucradas deben
tener los mismos dominios.
La intersecci´n se puede crear a partir de la diferencia:
o
r1 ∩ r2 = r1 − (r1 − r2)
Ejemplo:
π nombre(alumno preg) ∩ π nombre(alumno posg)
resulta en una relaci´n que contiene los nombres de todos
o
los alumnos que son simult´neamente de pre y posgrado.
a
11
14. Reuni´n Natural(Join)
o
Hace un producto cartesiano de sus dos argumentos y realiza
una selecci´n forzando la igualdad de atributos que aparecen
o
en ambas relaciones.
Elimina repetidos (como toda operaci´n de conjuntos).
o
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 Inform´tica
a
Soto Marketing
P´rez
e Marketing
Figueroa Inform´tica
a
Salas Inform´tica
a
R´ıos Ventas
Campos Marketing
Venegas Inform´tica
a
Carcamo Marketing
Gonzalez Ventas
12
15. Join en General
Un forma m´s general de hacer Join es especificando una
a
propiedad de reuni´n.
o
Se hace entonces un producto cartesiano de las dos rela-
ciones y se realiza una selecci´n forzando una propiedad m´s
o a
general que la igualdad de atributos que aparecen en ambas
relaciones.
Sintaxis:
r1 ⋉P r2
⋊
donde P es la propiedad de reuni´n.
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 creaci´n del departamento
o
π emp.nombre,depto.nombre(
empleado ⋉(f echa
⋊ ing<f echa creac) departamento)
13
16. Relaciones Temporales
A veces las consultas se hacen muy extensas.
Una forma de simplificarlas es usando relaciones temporales
y asign´ndoles expresiones para usar despu´s:
a e
r ← E asigna la expresi´n de ´lgebra relaciones E a la nueva
o a
relaci´n r.
o
Ejemplo:
temp ← σsueldo>500000 (empleado ⋉ departamento)
⋊
πempleado.nombre,departamento.nombre(temp)
El ´ltimo resultado son los nombres de empleados y el depar-
u
tamento en el que trabajan tales que el sueldo del empleado
es mayor a $500.000.
14
17. C´lculo Relacional de Tuplas
a
El c´lculo relacional de tuplas es un lenguaje no procedural.
a
Con el ´lgebra relacional damos un procedimiento para una
a
expresi´n.
o
πA1 ,B1 (σA1 =v (rA ⋉ rB ))
⋊
En el c´lculo relacional de tuplas especificamos la informaci´n
a o
deseada sin dar un procedimiento para obtenerla.
{t|P (t)}
Este ´ltimo conjunto representa a la relaci´n de todas las
u o
tuplas t que cumplen la propiedad l´gica P .
o
Supongamos que necesitamos s´lo los nombres de los em-
o
pleados que tienen sueldo mayor a $500.000.
En ´lgebra relacional usamos el operador
a π para obtener
s´lo los nombres. En el c´lculo relacional de tuplas debemos
o a
usar la construcci´n existe “∃”:
o
∃ t ∈ r(Q(t))
que significa: “existe una tupla t en la relaci´n r que cumple
o
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´n empleado para la cual los valores de t
o
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 define s´lo en el atributo nombre, es
o
el ´nico atributo no cuantificado. El resultado es una relaci´n
u o
con s´lo un atributo.
o
15
18. C´lculo Relacional de Tuplas: Ejemplos
a
Supongamos que necesitamos los datos de todos los emplea-
dos del departamento de Marketing y no sabemos el c´digo
o
del departamento.
En ´lgebra relacional usamos el operador ⋉ para obtener los
a ⋊
datos de ambas tablas.
En el c´lculo relacional de tuplas debemos usar tambi´n la
a e
construcci´n existe:
o
{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´n o
empleado tales que existe una tupla s en la relaci´n departamento
o
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´mo expresamos consultas del tipo “los nombres de todos
o
los alumnos que no son de bioinform´tica, suponiendo que
a
contamos con las relaciones alumno y alumno bioinf ormatica?
Necesitamos el operador l´gico de negaci´n “¬”.
o o
{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´n alumno que comparte el atrib-
o
uto nombre con t y NO existe una tupla u en la relaci´n o
alumno bioinf ormatica que comparta el atributo nombre con
t”.
16
19. C´lculo Relacional de Tuplas: Ejemplos (cont.)
a
En general podemos usar “casi” cualquier expresi´n l´gica
o o
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´n departamento con la que comparte
o
el atributo nombre y que para toda tupla u en la relaci´n o
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´n los nombres de los departamentos
a
cuyos empleados tienen todos un sueldo mayor a $500.000.
¿C´mo hacemos esta consulta en ´lgebra relacional?
o a
¿Por qu´ “casi” todas las expresiones l´gicas? ¿Qu´ resulta
e o e
de la siguiente consulta?
{t | ¬(t ∈ empleado)}
¡Resulta una relaci´n con un n´mero infinito de tuplas!
o u
¡Tuplas que ni siquiera se encuentran en nuestra base de
datos!
No aceptamos entonces este tipo de consultas, aceptamos
s´lo consultas seguras.
o
Una consulta {t | P (t)} es segura si el resultado son valores
que pertenecen a dom(P ), donde dom(P ) es la uni´n de los
o
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
20. C´lculo Relacional de Dominios
a
Es un lenguaje de consulta sobre el modelo relacional no
procedural.
A diferencia del c´lculo relacional de tuplas, consulta acerca
a
valores del dominio de los atributos de las relaciones, no de
las tuplas de ´stas.
e
Una consulta en c´lculo relacional de dominios es de la sigu-
a
iente forma:
{< x1 , x2 , . . . , xn > | P (x1 , x2 , . . . , xn )}
d´nde x1 , x2 , . . . , xn se llaman variables de dominio y P es una
o
f´rmula proposicional sobre las variables del dominio.
o
Ejemplo: Obtener el nombre, el c´digo y la fecha de creaci´n
o o
de los departamentos creados despu´s del 2003
e
{< 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´s simple representar consultas para atributos
a
espec´
ıficos en el c´lculo de dominios que en el c´lculo de
a a
tuplas.
Tambi´n existe una noci´n muy similar de consultas seguras
e o
en el c´lculo de tuplas. Las consultas que se salen del dominio
a
no son seguras.
18
21. ´
Algebra vs C´lculo Relacional
a
El c´lculo relacional nos entrega dos lenguajes de consulta
a
en una base de datos bajo el modelo relacional.
A veces se hace mucho m´s “natural” expresar consultas en
a
un lenguaje de c´lculo relacional que con el ´lgebra relacional.
a a
Ventaja: se expresa “lo que se quiere” sin necesitar explicar
c´mo obtenerlo (sin especificar un procedimiento).
o
Resultado muy importante:
El ´lgebra relacional, el c´lculo relacional de tuplas y el
a a
c´lculo relacional de dominios tienen el mismo poder
a
expresivo ⇒ pueden responder el mismo tipo
de consultas en una base de datos relacional.
Interesante porque el c´lculo relacional est´ basado en l´gica
a a o
de primer orden que tiene mucha teor´ estudiada.
ıa
Con l´gica podemos demostrar que ciertas consultas no se
o
o ´
pueden lograr con s´lo Algebra Relacional.
El ejemplo can´nico de consulta que no se puede realizar es
o
la clausura transitiva.
• Relaci´n de vuelos con n´mero indefinido de escalas
o u
• Relaci´n de ancestros
o
Otro ejemplo no realizable, contar: determinar si la cantidad
de tuplas de una relaci´n es par
o
19
22. Modificaci´n de la Base de Datos
o
Hasta ahora hemos visto como obtener informaci´n desde la
o
Base de Datos.
Es necesario entregar herramientas para poder alterar el es-
tado de la Base de Datos.
Eliminaci´n, Inserci´n, Actualizaci´n son algunas de las tar-
o o o
eas necesarias, usaremos el ´lgebra relacional.
a
Eliminaci´n
o
Usamos el operador de diferencia (−) y asignaci´n (←)
o
r ←r−E
donde r es una relaci´n y E una expresi´n del ´lgebra rela-
o o a
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,f ech ing (r1)
empleado ← empleado − r2
nombre sueldo cod dept f echa ing
Torres $ 1.200.000 A1 01/01/2004
Figueroa $ 600.000 A1 01/03/2002
Salas $ 1.500.000 A1 01/01/2002
R´ıos $ 2.000.000 A3 01/06/2002
Venegas $ 600.000 A1 01/06/2002
Gonzalez $ 2.000.000 A3 01/10/2002
20
23. Modificaci´n de la Base de Datos (cont.)
o
Inserci´n
o
Usamos el operador de uni´n
o
r ←r∪E
donde r es una relaci´n y E una expresi´n del ´lgebra rela-
o o a
cional.
Agregar el departamento de Finanzas con c´digo A5 y fecha
o
de creaci´n 5/8/2004
o
departamento ← departamento ∪ {(Finanzas, A5, 5/8/2004)}
nombre cod dept f echa creac
Inform´tica
a A1 01/03/2002
Marketing A2 01/01/2002
Ventas A3 01/01/2001
Recursos Humanos A4 01/01/2003
Finanzas A5 05/08/2004
Actualizaci´n
o
A veces queremos cambiar el valor de alg´n atributo de una
u
tupla sin cambiarla entera. Podr´ hacerse una eliminaci´n e
ıa o
inserci´n, pero resulta engorrosos muchas veces.
o
Usamos un nuevo operador δ (no reasignamos!):
δA←E (r)
que representa el hecho de cambiar el atributo A por la ex-
presi´n matem´tica E en la relaci´n 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
δsueldo←sueldo∗1,1 (σsueldo≥1000000 (empleado))
δsueldo←sueldo∗1,2 (σsueldo<1000000 (empleado))
21
24. Cuidado con el orden!!!
nombre sueldo cod dept f echa ing
Torres $ 1.320.000 A1 01/01/2004
Soto $ 600.000 A2 01/01/2003
P´rez
e $ 360.000 A2 01/10/2003
Figueroa $ 720.000 A1 01/03/2002
Salas $ 1.650.000 A1 01/01/2002
R´ıos $ 2.200.000 A3 01/06/2002
Campos $ 960.000 A2 01/11/2003
Venegas $ 720.000 A1 01/06/2002
Carcamo $ 600.000 A2 01/04/2003
Gonzalez $ 2.200.000 A3 01/10/2002