Está en la página 1de 9

Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I

_____
Ing. Neicer Campos Vsquez

ALGEBRA RELACIONAL

Introduccin
El lgebra relacional consiste en un conjunto de operadores que se aplican a una o dos
relaciones y producen como resultado otra relacin. Una consulta se formaliza en este lenguaje
como una expresin compuesta de operadores, variables relcionales que representan los
operandos, y consantes. Se utilizar un ejemplo para ir presentando los operadores y su
semntica. Supongamos la relacin clientes:
NroCli Nombre Fecha_Alta Saldo
1 Enrique 14/09/1996 100
2 Fernando 21/07/1998 -60
3 German 19/12/1994 500
4 Alejandro 02/01/1999 90


Seleccin
El primer operador que se va a presentar es la seleccin Seleccin . Este es un operador
unario, por lo que toma como operando a una sola relacin y su valor es cierto subconjunto de
las tuplas de esa relacin. Por ejemplo, si queremos saber cules clientes tienen saldo positivo,
la sentencia:

saldo>0
(Clientes)

producir el siguiente resultado:
NroCli Nombre Fecha_Alta Saldo
1 Enrique 14/09/1996 100
3 German 19/12/1994 500
4 Alejandro 02/01/1999 90

para determinar todas los clientes que se dieron de alta desde el ao 1998 hasta la actualidad:

Fecha_Alta > '01/01/1998'


(Clientes)


lo que producir el siguiente resultado:
NroCli Nombre Fecha_Alta Saldo
2 Fernando 21/07/1998 -60
4 Alejandro 02/01/1999 90
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez


la condicin puede se tan compleja como sea necesario, por ejemplo, lista los clientes que tienen
saldo negativo y se han dado de alta durante el ao 1998:

Saldo<0 . Fecha_Alta > '01/01/1998' . Fecha_Alta s '31/12/1998'


(Clientes)


producir el siguiente resultado:
NroCli Nombre Fecha_Alta Saldo
2 Fernando 21/07/1998 -60


El operador podramos definirlo de la siguiente manera:
Sea una frmula booleana cuyos operandos son nmeros de columna o constantes,
combinados con los comparadores =, !=, <, >, >, s, y los operadores
lgicos . (conjuncin), v (disyuncin), y ~ (negacin). Entonces

(R) se define como el


conjunto de tuplas en R tales que la frnula es cierta si substituimos cada ocurrencia de un
nmero de columna J por t[j].


Proyeccin
As como la seleccin extrae un subconjunto de tuplas, el prximo operador
llamado proyeccin y denotado [ estrae un subconjunto de las columnas. Por ejemplo, si
queremos una lista de los distintos saldos que hay en las cuentas de nuestros clientes, la
consulta [
saldo
(Clientes) produce una relacin cuya nica columna es saldo y que contiene
una tupla por cada valor distinto de saldo que aparece en clientes:
Saldo
100
-60
500
90

La siguiente consulta produce los pares de cdigos Nombre, saldo:
[
nombre, saldo
(Clientes)

Nombre Saldo
Enrique 100
Fernando -60
German 500
Alejandro 90
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez


Como el resultado de aplicar un operador algebraico es siempre una relacin, es posible
componer operadores, formando expresiones. Por ejemplo, la siguiente consulta nos dar los
nombres de los clientes que tiene un saldo positivo:
[
nombre
(
saldo>0
(Clientes))

Nombre
Enrique
German
Alejandro


Unin
Dado que una relacin es un conjunto de tuplas, podemos aplicar a dos relaciones las
operaciones booleanas habituales aplicables a conjuntos. En particular, vamos a utilizar la union
y la diferencia.
Para ello crearemos dos relaciones, f_parciales, con fechas de exmenes parciales y f_finales,
con fechas de exmenes finales:
Parciales
Materia Fecha
Logica 09/05/2001
Matemtica 1 10/05/2001
Matemtica 2 10/05/2001
Geometra 10/05/2001
lgebra 10/05/2001
Datos I 11/05/2001
Datos II 11/05/2001
Programacin I 11/05/2001
Programacin II 12/05/2001
Compiladores 13/05/2001
Finales
Materia Fecha
Fisica 09/05/2001
Matemtica 1 15/05/2001
Matemtica 2 15/05/2001
Geometra 15/05/2001
lgebra 15/05/2001
Datos I 16/05/2001
Datos II 16/05/2001
Programacin I 16/05/2001
Programacin II 17/05/2001
Compiladores 18/05/2001


Si ahora necesitamos un listado de todas las materias, con sus fechas de exmenes, con la
consulta:
f_parciales f_finales
obtendremos el resultado:
Materia Fecha
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez

Logica 09/05/2001
Matemtica 1 10/05/2001
Matemtica 2 10/05/2001
Geometra 10/05/2001
lgebra 10/05/2001
Datos I 11/05/2001
Datos II 11/05/2001
Programacin I 11/05/2001
Programacin II 12/05/2001
Compiladores 13/05/2001
Matemtica 1 15/05/2001
Matemtica 2 15/05/2001
Geometra 15/05/2001
lgebra 15/05/2001
Datos I 16/05/2001
Datos II 16/05/2001
Programacin I 16/05/2001
Programacin II 17/05/2001
Compiladores 18/05/2001

Formalmente, si R y S son dos relaciones del mismo rango, R S es el conjunto de tuplas que
pertenecen a R o a S.

Diferencia
La operacin diferencia nos permite extraer tuplas qhe no satisfagan cierta propiedad. Por
ejemplo, supongamos que queremos hallar las materias que tienen la fecha de parcial pero no la
de final. Con la siguiente consulta:
[
materia
(f_parciales) - [
materia
(f_finales) obtendremos el resultado:
Materia Fecha
Lgica 09/05/2001

Formalmente, si R y S son dos relaciones del mismo rango, R - S es el conjunto de todas las
tuplas que pertenecen a R pero no a S.
Notemos que la operacin booleana de interseccin de conjuntos se puede sintetizar usando la
diferencia, mediante la identidad:
R ) S = R - (R - S)

donde R ) S denota todas tuplas que pertenecen a R y tambin a S.
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez


Producto Cartesiano
Hasta ahora no hemos visto ningn operador que nos permita tomar una tupla u extenderla
agregndole informacin proveniente de otra tupla en otra relacin. Esta es la funcin del
producto cartesiano. Dadas dos relaciones R y S de rango r y s respectivamente, el producto
cartesiano es una relacin de rango r + s conteniendo todas las tuplas cuyas r primeras
columnas formen una tupla que pertenece en R y cuyas s restantes columnas forman una tupla
que pertenece a S.
Si hacemos la siguiente consulta:
R S

obtendremos el siguiente resultado:
Materia Fecha Materia Fecha
Logica 09/05/2001 Fisica 09/05/2001
Logica 09/05/2001 Matemtica 1 15/05/2001
Logica 09/05/2001 Matemtica 2 15/05/2001
Logica 09/05/2001 Geometra 15/05/2001
Logica 09/05/2001 lgebra 15/05/2001
Logica 09/05/2001 Datos I 16/05/2001
Logica 09/05/2001 Datos II 16/05/2001
Logica 09/05/2001 Programacin I 16/05/2001
Logica 09/05/2001 Programacin II 17/05/2001
Logica 09/05/2001 Compiladores 18/05/2001
Matemtica 1 10/05/2001 Fisica 09/05/2001
Matemtica 1 10/05/2001 Matemtica 1 15/05/2001
Matemtica 1 10/05/2001 Matemtica 2 15/05/2001
Matemtica 1 10/05/2001 Geometra 15/05/2001
Matemtica 1 10/05/2001 lgebra 15/05/2001
Matemtica 1 10/05/2001 Datos I 16/05/2001
Matemtica 1 10/05/2001 Datos II 16/05/2001
Matemtica 1 10/05/2001 Programacin I 16/05/2001
Matemtica 1 10/05/2001 Programacin II 17/05/2001
Matemtica 1 10/05/2001 Compiladores 18/05/2001
Matemtica 2 10/05/2001 Fisica 09/05/2001
Matemtica 2 10/05/2001 Matemtica 1 15/05/2001
Matemtica 2 10/05/2001 Matemtica 2 15/05/2001
Matemtica 2 10/05/2001 Geometra 15/05/2001
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez

Matemtica 2 10/05/2001 lgebra 15/05/2001
Matemtica 2 10/05/2001 Datos I 16/05/2001
Matemtica 2 10/05/2001 Datos II 16/05/2001
Matemtica 2 10/05/2001 Programacin I 16/05/2001
Matemtica 2 10/05/2001 Programacin II 17/05/2001
Matemtica 2 10/05/2001 Compiladores 18/05/2001
Geometra 10/05/2001 Fisica 09/05/2001
Geometra 10/05/2001 Matemtica 1 15/05/2001
Geometra 10/05/2001 Matemtica 2 15/05/2001
Geometra 10/05/2001 Geometra 15/05/2001
Geometra 10/05/2001 lgebra 15/05/2001
Geometra 10/05/2001 Datos I 16/05/2001
Geometra 10/05/2001 Datos II 16/05/2001
Geometra 10/05/2001 Programacin I 16/05/2001
Geometra 10/05/2001 Programacin II 17/05/2001
Geometra 10/05/2001 Compiladores 18/05/2001
lgebra 10/05/2001 Fisica 09/05/2001
lgebra 10/05/2001 Matemtica 1 15/05/2001
lgebra 10/05/2001 Matemtica 2 15/05/2001
lgebra 10/05/2001 Geometra 15/05/2001
lgebra 10/05/2001 lgebra 15/05/2001
lgebra 10/05/2001 Datos I 16/05/2001
lgebra 10/05/2001 Datos II 16/05/2001
lgebra 10/05/2001 Programacin I 16/05/2001
lgebra 10/05/2001 Programacin II 17/05/2001
lgebra 10/05/2001 Compiladores 18/05/2001
Datos I 11/05/2001 Fisica 09/05/2001
Datos I 11/05/2001 Matemtica 1 15/05/2001
Datos I 11/05/2001 Matemtica 2 15/05/2001
Datos I 11/05/2001 Geometra 15/05/2001
Datos I 11/05/2001 lgebra 15/05/2001
Datos I 11/05/2001 Datos I 16/05/2001
Datos I 11/05/2001 Datos II 16/05/2001
Datos I 11/05/2001 Programacin I 16/05/2001
Datos I 11/05/2001 Programacin II 17/05/2001
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez

Datos I 11/05/2001 Compiladores 18/05/2001
Datos II 11/05/2001 Fisica 09/05/2001
Datos II 11/05/2001 Matemtica 1 15/05/2001
Datos II 11/05/2001 Matemtica 2 15/05/2001
Datos II 11/05/2001 Geometra 15/05/2001
Datos II 11/05/2001 lgebra 15/05/2001
Datos II 11/05/2001 Datos I 16/05/2001
Datos II 11/05/2001 Datos II 16/05/2001
Datos II 11/05/2001 Programacin I 16/05/2001
Datos II 11/05/2001 Programacin II 17/05/2001
Datos II 11/05/2001 Compiladores 18/05/2001
Programacin I 11/05/2001 Fisica 09/05/2001
Programacin I 11/05/2001 Matemtica 1 15/05/2001
Programacin I 11/05/2001 Matemtica 2 15/05/2001
Programacin I 11/05/2001 Geometra 15/05/2001
Programacin I 11/05/2001 lgebra 15/05/2001
Programacin I 11/05/2001 Datos I 16/05/2001
Programacin I 11/05/2001 Datos II 16/05/2001
Programacin I 11/05/2001 Programacin I 16/05/2001
Programacin I 11/05/2001 Programacin II 17/05/2001
Programacin I 11/05/2001 Compiladores 18/05/2001
Programacin II 12/05/2001 Fisica 09/05/2001
Programacin II 12/05/2001 Matemtica 1 15/05/2001
Programacin II 12/05/2001 Matemtica 2 15/05/2001
Programacin II 12/05/2001 Geometra 15/05/2001
Programacin II 12/05/2001 lgebra 15/05/2001
Programacin II 12/05/2001 Datos I 16/05/2001
Programacin II 12/05/2001 Datos II 16/05/2001
Programacin II 12/05/2001 Programacin I 16/05/2001
Programacin II 12/05/2001 Programacin II 17/05/2001
Programacin II 12/05/2001 Compiladores 18/05/2001
Compiladores 13/05/2001 Fisica 09/05/2001
Compiladores 13/05/2001 Matemtica 1 15/05/2001
Compiladores 13/05/2001 Matemtica 2 15/05/2001
Compiladores 13/05/2001 Geometra 15/05/2001
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez

Compiladores 13/05/2001 lgebra 15/05/2001
Compiladores 13/05/2001 Datos I 16/05/2001
Compiladores 13/05/2001 Datos II 16/05/2001
Compiladores 13/05/2001 Programacin I 16/05/2001
Compiladores 13/05/2001 Programacin II 17/05/2001
Compiladores 13/05/2001 Compiladores 18/05/2001
En general, el resultado de un producto cartesiano no ser de inters en s mismo, sino que le
aplicaremos otros operadores para obtener la respuesta deseada. Por ejemplo, supongamos una
consulta, en la cual necesitemos listar, para cada materia, su fecha de parcial y su fecha de
final:
[
f_parciales.Materia, f_parciales.fecha,
f_finales.fecha
(
f_parciales.materia=f_finales.materia(f_parciales
f_finales))



El resultado ser:
Materia Fecha Fecha
Matemtica 1 10/05/2001 15/05/2001
Matemtica 2 10/05/2001 15/05/2001
Geometra 10/05/2001 15/05/2001
lgebra 10/05/2001 15/05/2001
Datos I 11/05/2001 16/05/2001
Datos II 11/05/2001 16/05/2001
Programacin I 11/05/2001 16/05/2001
Programacin II 12/05/2001 17/05/2001
Compiladores 13/05/2001 18/05/2001



Junta
La familia de operadores de junta permite expresar en forma ms concisa la combinacin de un
producto cartesiano seguido de una seleccin. Dada una relacin R de rango r y una relacin S
de rango arbitrario,
R |X| S
i j

donde es uno de los comparadores =, =, <, >, >, s, i es un nmero de columna de R, y j es un
nmero de columna de S, es equivalente a:
Instituto Educacin Superior Pblico Ciro Alegra Bazn III Ciclo 2014 - I
_____
Ing. Neicer Campos Vsquez

i r+j-1
(R X S)
.
Por ejemplo, la consulta sobre fechas de parciales y finales para cada materia mencionada
anteriormente, puede escribirse usando junta como:
[
f_parciales.Materia, f_parciales.fecha,
f_finales.fecha
(f_parciales |X| f_finales)f_parciales.m
ateria=f_finales.materia

Finalmente, el operador de junta natural es aplicable solamente cuando las columnas de las
relaciones que participan en la operacin tienen el mismo nombre; en cuyo caso no es necesario
explicitar la condicin de junta, ya que juntaremos por las columnas que tienen el mismo
nombre.

Divisin o Cociente
La operacin divisin es til para un tipo especial de consultas que se present ocasionalmente
en aplicaciones de bases de datos. Un ejemplo es: "obtener los nombres de los empleados que
trabajan en todos los proyectos en los que trabaja 'Juan Perez'". La operacin divisin se aplica
a dos relaciones R(Z) S(X), donde X c Z. Sea Y = Z - X; es decir, sea Y el conjunto de
atributos de R que no son atributos de S, el resultado de la divisin es una relacin T(Y) que
incluye una tupla t si una tupla t
R
cuyo t
R
[Y]=t aparece en R, con t
R
[X]=t
S
para cada tupla t
S
en
S. Esto significa que, para cada tupla t que aparezca en el resultado T de la divisin, los valores
de t deben aparecer en R en combinacin con todas las tuplas de S.
Con operadores bsicos, el operador divisin se puede expresar de la siguiente manera:
R S = [
Y
(R) - [
Y
((S X [
Y
(R) - R)

También podría gustarte