Anda di halaman 1dari 9

Modelo Funcional y Teora de Algoritmos

ALGEBRA RELACIONAL
El lgebra relacional permite entender el modelo relacional de bases de datos desde la
perspectiva matemtica. ES conjunto cerrado de operaciones
Actan sobre relaciones
Producen relaciones como resultados
Pueden combinarse para construir expresiones ms complejas

Operadores Bsicos
Unin
Diferencia
Producto Cartesiano
Seleccin
Proyeccin

Son operacionalmente completos,


permiten
expresar
cualquier
consulta a una BDR.

Operadores Derivados
Interseccin
Join
Divisin
Asociacin

No aaden nada nuevo.


Se forman combinando los
operadores bsicos.
Son tiles en determinadas
consultas.

Unin R S
La unin de dos relaciones R y S, es otra relacin que contiene las tuplas que
estn en R, o en S, o en ambas, eliminndose las tuplas duplicadas
R y S deben ser unin-compatible, es decir, definidas sobre el mismo conjunto de
atributos

Diferencia R - S
La diferencia de dos relaciones R y S, es otra relacin que contiene las tuplas que
estn en la relacin R, pero no estn en S
R y S deben ser unin-compatible

Unidad II

Pgina 1

Modelo Funcional y Teora de Algoritmos

Producto Cartesiano R x S
Define una relacin que es la concatenacin de cada una de las filas de la relacin R
con cada una de las filas de la relacin S

Seleccin predicado (R)


Es un operador unario
Define una relacin con los mismos atributos que R y que contiene solo aquellas
filas de R que satisfacen la condicin especificada (predicado)

Proyeccin

col1, . . . , coln(R)

Es un operador unario
Define una relacin que contiene un subconjunto vertical de R con los valores de
los atributos especificados, eliminando filas duplicadas en el resultado

Interseccin

RS

Define una relacin que contiene el conjunto de todas las filas que estn tanto en
la relacin R como en S
R y S deben ser unin-compatible
Equivalencia con operadores bsicos R S = R (R S)

Unidad II

Pgina 2

Modelo Funcional y Teora de Algoritmos

Divisin o Cociente R S
Define una relacin sobre el conjunto de atributos C, incluido en la relacin R, y
que contiene el conjunto de valores de C, que en las tuplas de R estn
combinadas con cada una de las tuplas de S
Condiciones
grado(R) > grado (S)
conjunto atributos de S / conjunto de atributos de R
Equivalencia con operadores bsicos
X1 = C(R); X2 = C((S X X1) R); X = X1 X2
R1

Join
Unin Natural (Natural Join)

R*S

El resultado es una relacin con los atributos de ambas relaciones y se obtiene


combinando las tuplas de ambas relaciones que tengan el mismo valor en los
atributos comunes
Normalmente la operacin de join se realiza entre los atributos comunes de dos
tablas que corresponden a la clave primaria de una tabla y la clave fornea
correspondiente de la otra tabla
Mtodo
Se realiza el producto cartesiano R x S
Se seleccionan aquellas filas del producto cartesiano para las que los atributos
comunes tengan el mismo valor
Se elimina del resultado una ocurrencia (columna) de cada uno de los
atributos comunes

Outer Join
Es una variante del Join en la que se intenta mantener toda la informacin de los
operandos, incluso para aquellas filas que no participan en el Join
Se rellenan con nulos las tuplas que no tienen correspondencia en el Join
Tres variantes
Left:se tienen en cuenta todas las filas del primer operando
Right:se tienen en cuenta todas las filas del segundo operando
Full:se tienen en cuenta todas las filas de ambos operandos

Unidad II

Pgina 3

Modelo Funcional y Teora de Algoritmos

Asociacin
Asociacin o Theta Join (q-Join)

R*FS

Define una relacin que contiene las tuplas que satisfacen el predicado F en el
producto cartesiano de R y S
El predicado F es de la forma R.ai q S.bi donde q representa un operador de
comparacin (<,, >,, =,)
El predicado no tiene por que definirse sobre atributos comunes
Equivalencia con operadores bsicos
Equijoin
Si el predicado F contiene nicamente el operador de igualdad

El lgebra relacional con ejemplos en SQL


Aqu se introducen los fundamentos del lgebra relacional y se les relaciona con la estructura
del lenguaje de consulta de bases de datos relacionales SQL, para conectar la teora con la
prctica.

Breve recordatorio del modelo (formal) relacional


El modelo relacional de bases de datos se basa en un modelo formal especificado de acuerdo a
la teora de conjuntos. Una base de datos en este modelo es simplemente un conjunto de
relaciones. Estas relaciones las vemos informalmente como tablas en los gestores de bases
de datos relacionales, pero no hay que olvidar que se basan en una cierta representacin
matemtica.
Una relacin de nombre R se define sobre el un conjunto de atributos Ai y se denota
como R(A1,

A2,

...

An).A

la

definicin

del

conjunto

de

atributos

se

le

denomina esquema de la relacin. En contraste, la extensin de la relacin de


esquema R(A1, A2, ... , An) es un conjunto de tuplasti (i = 1, 2, ..., m),
donde cada tupla es un conjunto de pares:
t i = {<A1:v[i,1]>, <A2:v[i,2]> ... <An:v[i, n])>}
Unidad II

Pgina 4

Modelo Funcional y Teora de Algoritmos


y, para cada par <Aj:v[i,j]>, se cumple que v[i,j] es un valor que
pertenece dominio(Aj), o bien un valor especial que denominaremos nulo.
Para seguir la discusin terica utilizaremos un ejemplo de una base de datos para modelar la
actividad docente de los profesores de un departamento. Comenzaremos por un esquema muy
sencillo, con dos relaciones que se muestran a continuacin.

Siguiendo la notacin anterior, por ejemplo, tenemos una relacin DEPARTAMENTOS(nombre,


grado-experimentalidad, telefono). Una posible tupla sera la siguiente:
t1 = {<nombre: Matemticas>, <grado-experimentalidad:1.5>,
<fax:918845689>}

Qu es el lgebra relacional?
Es un conjunto de operaciones matemticas definidas sobre el modelo de conjuntos que se
acaba de resumir, que permite especificar formalmente consultas a bases de datos relacionales.

Por qu estudiar el lgebra relacional?


Para comprender con ms precisin lo que hacen los lenguajes de consulta como SQL.

El lgebra relacional es un conjunto de operaciones


El lgebra relacional se define como un conjunto de operaciones. Una caracterstica importante
de todas las operaciones del lgebra relacional es que tanto los operandos como el
resultado son relaciones. Esta propiedad se denomina cierre (o clausura) relacional.
Esto tiene dos consecuencias evidentes pero importantes:
1. El resultado de una operacin puede utilizarse como operando en otra.
2. El resultado de una operacin es una relacin con todas las caractersticas del modelo
relacional: no puede haber tuplas repetidas, las tuplas no estn ordenadas, etc.
Dado que en muchas ocasiones trabajaremos con los resultados de operaciones como
operandos de otras, es conveniente poder dar nombres a los resultados de ciertas operaciones.
Esta es la operacin de redenominacin (:=). Es simplemente lo siguiente:
R:=expr
Unidad II

Pgina 5

Modelo Funcional y Teora de Algoritmos


Con esto expresamos que el resultado de la expresin de lgebra relacional expr (que es una
relacin en toda regla) pasaremos a llamarla R. Tambin es til redenominar los atributos de
una relacin, con la misma notacin:
R(A 1 , A 2 , ... , A n ):= S(B 1 , B 2 , ... , B n )
Lgicamente, cada atributo Bi tendr que estar definido sobre el mismo dominio que Ai. Para
ver las operaciones las dividiremos en dos grupos, las especficamente relacionales y las que
son tpicas de la teora de conjuntos.
En el lenguaje SQL se pueden redenominar atributos mediante la clusula AS. Por ejemplo:
SELECT "grado-experimentalidad", nombre as denominacion
FROM DEPARTAMENTOS

Operaciones especficamente relacionales


La proyeccin permite elegir algunos atributos
La operacin de proyeccin permite seleccionar algunos atributos de una relacin (sea
sta una relacin o el resultado de otras operaciones). Formalmente, dada una relacin R(A1,
A2, ... , An), y un subconjutno de atributos de esa relacin (Ai, Aj, ..., Ak), la
proyeccin sobre esos atributos se denota como R(Ai, Aj, ..., Ak), y contiene las partes
de las tuplas con los valores de los atributos proyectados.
Es importante notar lo siguiente en las proyecciones:

Como el resultado de cualquier operacin de lgebra relacional es una relacin, las tuplas
repetidas en el resultado de la proyeccin se eliminarn.
El orden de los atributos en la proyeccin no tiene que ser el mismo que en la relacin
original.

La operacin de proyeccin en el lenguaje de consulta SQL se realiza simplemente


especificando el subconjunto de atributos en la clusula SELECT.
SELECT Ai, Aj, ..., Ak FROM R
Por ejemplo, si tuvisemos la siguiente extensin de la tabla PROFESORES:

dni
apellidos nombre fecha-nacimiento es-doctor telfono-mvil D_nombre
32323
Prez Juan 30/10/1965
true
65454545
Matemticas
4434343 Dez
Jos 30/10/1970
true
65789767
Historia
23423432 Snchez Juan 30/10/1980
false
66789899
Matemticas
La siguiente sentencia SELECT hace una proyeccin del nombre y los apellidos.
SELECT nombre, apellidos FROM PROFESORES

Unidad II

Pgina 6

Modelo Funcional y Teora de Algoritmos


Es importante notar que la siguiente sentencia no devolvera una relacin, ya que tendra dos
tuplas repetidas.
SELECT nombre FROM profesores
Para asegurar que el resultado es una relacin en el sentido matemtico, hay que utilizar el
modificador DISTINCT.
SELECT DISTINCT nombre FROM profesores

La seleccin permite elegir algunas tuplas


La seleccin es una operacin que elige algunas tuplas de una relacin y elimina el resto. La
nueva

relacin

contiene

por

tanto

solo

tuplas

seleccionadas

que

cumplen

una

determinada condicin de seleccin C La condicin de seleccin es una condicin lgica que


permita decidir qu incluir y qu no.
Los atributos de la seleccin son los mismos que los de la relacin original, y todas las tuplas de
la seleccin cumplen la condicin C. Por ejemplo:
R := DEPARTAMENTOS(grado-experimentalidad >1.0)
Q := PROFESORES(no es-doctor y telfono-mvil <> null)
En SQL, la seleccin se especifica mediante la clusula WHERE. Por ejemplo:
SELECT * FROM DEPARTAMENTOS
WHERE grado-experimentalidad > 1.0
SELECT * FROM PROFESORES
WHERE not es doctor and telfono-mvil IS NOT NULL.

La combinacin o reunin (join) permite cruzar los valores de tablas


relacionadas
La combinacin toma dos relaciones y devuelve una relacin con las tuplas que resultan de
concatenar tuplas de la primera con tuplas de la segunda y despus seleccionar las que
cumplen
una condicin
de
combinacin
C.
Una
combinacin
entre
las
relaciones R y Q mediante la condicin C se denota como R[C]Q.
Por ejemplo, si queremos obtener la informacin de profesores y departamentos combinada,
utilizaremos como combinacin la igualdad de la clave ajena en PROFESORES con la clave
primaria en DEPARTAMENTOS:
DPT:=DEPARTAMENTOS
PROFESORES[D_nombre = DPT.nombre]DPT

Unidad II

Pgina 7

Modelo Funcional y Teora de Algoritmos


En SQL, la combinacin se hace incluyendo ms de una relacin en la clusula FROM, y la
condicin C se coloca como clusula WHERE.
SELECT *

FROM PROFESORES AS P, DEPARTAMENTOS AS D

WHERE P.D_nombre = D.nombre

La equicombinacin
La equicombinacin (equireunin o equijoin) es una combinacin que en la condicin C solo
tiene igualdades. Es especialmente importante porque permite obtener informacin relacionada
por las claves ajenas de las tablas.

Combinacin natural
Cuando se hace una equicombinacin, la relacin resultante tiene los atributos de las dos
relaciones originales. Dado que se est exigiendo igualdad de valores en al menos un atributo,
la relacin resultante tendr atributos con informacin repetida (tantos como atributos hayan
sido comparados en la condicin C). La combinacin natural es una variante de la
equicombinacin donde se eliminan esos atributos superfluos.
En SQL, la combinacin natural puede hacerse combinndola con una proyeccin de los
atributos de las dos relaciones que excluya alguno de las Operaciones de teora de conjuntos.

Operaciones de teora de conjuntos


La unin de relaciones es la unin de conjuntos
La unin de dos relaciones devuelve una nueva relacin que contiene todas las tuplas que
aparecan en cualquiera de las relaciones originales, o en ambas.
As, la operacin de unin de dos relaciones R y T, que denominaremos UNION(R, T) slo se
puede aplicar el operador unin a dos relaciones que tengan los mismos atributos, o que sean
compatibles (es decir, que se pueda establecer una biyeccin entre los atributos de las dos
relaciones).
Es importante tener en cuenta lo siguiente:

Se eliminarn las tuplas repetidas. Se entiende que en las dos relaciones no debe haber tuplas
con la misma clave primaria y el resto de la informacin diferente.
Si tenemos dividida la informacin de los profesores antiguos y los nuevos en dos relaciones
(por ejemplo, por motivos de rendimiento), pero queremos obtener un listado histrico de
todos ellos, podemos utilizar el operador UNION de SQL.
SELECT * FROM PROFESORES
UNION
SELECT * FROM EX-PROFESORES
El operador UNION requiere que los atributos de las relaciones devueltas por las
dos SELECT sean del mismo tipo segn el orden de aparicin. Si en una de las tablas este

Unidad II

Pgina 8

Modelo Funcional y Teora de Algoritmos


orden fuese diferente, habra que utilizar una proyeccin que alterase el orden. Los nombres de
atributos de la nueva relacin sern los de la primera SELECT.
La interseccin de relaciones toma dos relaciones y devuelve una relacin con las tuplas que
aparecan en ambas relaciones originales. Como la unin, la interseccin solo puede aplicarse a
relaciones con atributos compatibles.
La siguiente consulta en SQL por tanto debera devolver una relacin vaca:
SELECT * FROM PROFESORES
INTERSECT
SELECT * FROM EX-PROFESORES

El producto cartesiano combina todas las tuplas de dos relaciones


El producto cartesiano es una operacin que toma dos relaciones y obtiene una nueva relacin
cuyas tuplas son la concatenacin de las tuplas de la primera relacin con las tuplas de la
segunda. En general, si la primera relacin de entrada tena N tuplas y la segunda M tuplas, el
producto cartesiano produce NM tuplas, aunque en ocasiones sern menos dado que las
tuplas repetidas habrn de eliminarse.
El producto cartesiano de dos relaciones en SQL se obtiene simplemente colocando ms de una
tabla en la clusula FROM.
SELECT * FROM PROFESORES, DEPARTAMENTOS
El producto cartesiano raramente se utiliza en la prctica, pero es interesante conocerlo para
diferenciarlo de la operacin de combinacin (join).

Referencias
Cavero, P. P. (2002). oei. Recuperado el 02 de 04 de 2012, de www.oei.com
Sicilia, M. A. (s.f.). Connexions. Recuperado el 05 de 04 de 2012, de
http://cnx.org/content/m18351/latest/

Unidad II

Pgina 9

Anda mungkin juga menyukai