Sunteți pe pagina 1din 7

16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL

Lectura 3 - Álgebra Relacional: Select, Project, Join


Conceptos básicos de álgebra relacional
Algebra, en general, consiste de operadores y operandos atómicos, por ejemplo, en el álgebra de la aritmética, los operandos atómicos son variable como 
r r, y constantes como 15. Los operadores son los usuales en la aritmética:

Suma,
Resta,
Multiplicación,
División.

Cualquier álgebra nos permite construir expresiones mediante la aplicación de operadores a operandos atómicos y/o otras expresiones del álgebra. En
general, los paréntesis son necesarios para agrupar operadores y sus operandos, por ejemplo, en aritmética tenemos expresiones tales como 
(x + y) ∗ z (x+y)∗z ó ((x + 7)/(y − 3)) + x ((x+7)/(y−3))+x.
El Álgebra Relacional es otro ejemplo del álgebra. Sus operandos atómicos son:

1. Variables que representan relaciones.


2. Constantes que son relaciones finitas.

Nota
En algunos textos de álgebra relacional o SQL, una relación es sinónimo de una tabla.

Como mencionamos, en el álgebra relacional clásica, todos los operandos y sus resultados de expresiones son conjuntos. Los operadores del álgebra
relacional tradicional se divide en cuatro grandes categorías:

a. Los conjuntos habituales de operaciones unión, intersección, y diferencia se aplica a las relaciones.


b. Las operaciones que eliminan parte de una relación: selección elimina algunas filas (o tuplas), y proyección elimina algunas columnas.
c. Las operaciones que combinan las tuplas de dos relaciones, como el producto cartesiano, que empareja las tuplas de dos relaciones en
todas las maneras posibles y varios tipos de operadores unión, los cuales forman parejas de tuplas de dos relaciones selectivamente.
d. Una operación llama “renombrar” que no afecta las tuplas de una relación, pero que cambia el esquema de relación, es decir, lo nombres
de los atributos y/o los nombres de la relación misma.

Debemos por lo general referirnos a las expresiones del álgebra relacional como consultas. A pesar de que aún no tengan los símbolos necesarios para
mostrar muchas de las expresiones del algebra relacional, se debería familiarizar con las operaciones de  grupo (a); y por lo tanto reconocer: 
R ∪ S R∪S como un ejemplo de una expresión de álgebra relacional. Donde R R y S S son operandos atómicos para relaciones, cuyos conjuntos de tuplas
son desconocidas. Esta consulta pregunta por la unión de cualquiera tuplas que están en las relaciones nombradas R R y S S.

Las tres operaciones más comunes en conjuntos son unión, intersección, y diferencia, que serán vistas en la lectura 4.

Nota
Resumiendo  Álgebra Relacional se define como un conjunto de operaciones que se ejecutan sobre las relaciones (tablas) para obtener un resultado, el cual es otra
relación.

Operaciones relacionales:
Los operadores relacionales se utilizan para filtrar, cortar o combinar tablas.

Selección(Select)
Este operador se aplica a una relación R R produciendo una nueva relación con un subconjunto de tuplas de R R. Las tuplas de la relación resultante son
las que satisfacen una condición  C C sobre algún atributo de  R R. Es decir selecciona  filas (tuplas) de una tabla según un cierto criterio  C C. El criterio 
C C  es una expresión condicional, similar a las declaraciones del tipo “if”, es “booleana” esto quiere decir que para cada tupla de  R R  toma el valor
Verdad(true) o Falso(false).

Valores de atributos con “NULL” no cumplirán ninguna condición.

Cada condición simple o cláusula C tiene el formato:<Atributo> <Comparador> <Atributo o Constante delDominio>}. donde, el
campo Comparador es un operador lógico, que pueden ser {=, ≥, >, <, ≠, ≤} {=,≥,>,<,≠,≤}.

= = : símbolo de igual que.


≠ ≠: significa no igual a, en algunos libros este símbolo esta representado por !=.
≥ ≥: mayor que o igual a.
> >: mayor que.
< <: menor que.
≤ ≤: menor que o igual a.

Los  operadores lógicos que se utilizan, también llamados operadores relacionales, nos proporcionan un resultado a partir de que se cumpla o no una
cierta condición. Son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es
verdadera, en caso contrario es falsa. Por ejemplo, 11>4 (once mayor que cuatro) es verdadera, se representa por el valor true del tipo básico boolean, en
cambio, 11<4 (once menor que cuatro) es falsa se representa por el valor false.

Las cláusulas  C C pueden conectarse con otros operadores lógicos, que al igual que los anteriores que se usaban como comparador (entre atributos o
atributo y constante), arrojan booleano (true o false) de resultado:

NOT: El operador NOT denota una salida verdadera si la entrada es falsa, y una salida falsa si la entrada es verdadera. Su notación en algebra es: ¬ ¬ 
C 1 C1.
AND: El operador AND denota una salida verdadera si y sólo si sus entradas son verdaderas. Si C1 C1 se cumple y C2 C2 también se cumple, la salida
será verdadera. La notación en algebra de un AND es: C 1 ∧ C 2 C1 ∧ C2.
OR: El operador  OR denota una salida verdadera si hay alguna de las entradas (o ambas) verdaderas. Si  C1 C1  y/o  C2 C2  es o son verdaderas, la
expresión será verdadera. La notación en algebra de un OR es: C 1 ∨ C 2 C1 ∨ C2.

Notación en Álgebra Relacional

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 1/7
16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL
Para representar  Select en álgebra relacional se utiliza la letra griega sigma  σ σ. Por lo tanto, si utilizamos la notación  σ c R σc Rqueremos decir que se
aplica la condición  C C a cada tupla de  R R. Si la condición es Verdad  true, dicha tupla pertenecerá al resultado y si es Falsa  false, dicha tupla no será
seleccionada. El esquema de la relación resultante es el mismo esquema R R, se muestran los atributos en el mismo orden que se usan en la tabla R R.

Ejemplo 1
Tabla Ingenieros
Tabla Ingenieros

id nombre edad ñ
a osTrabajados
123 Leon 39 15
234 Tomas 34 10
345 Jose 45 21
143 Josefa 25 1
idnombreedadañosTrabajados123Leon3915234Tomas3410345Jose4521143Josefa251

Seleccionar las tuplas de la tabla Ingenieros Ingenieros que cumplan con tener una edad mayor a 30 años:

Respuesta
σ edad>30 Ingenieros
σedad>30Ingenieros

En la imagen se ve que selecciona solo las filas que cumplen con la condición que se pedía (tener una edad mayor a 30 años), la tupla de “Josefa” queda
fuera de la selección por no cumplir la condición (pues 25 < 30). De esta forma la tabla queda:

Tabla Ingenieros
Tabla Ingenieros

id nombre edad ñ
a osTrabajados
123 Leon 39 15
234 Tomas 34 10
345 Jose 45 21
idnombreedadañosTrabajados123Leon3915234Tomas3410345Jose4521

Ejemplo 2
Seleccionar de la tabla Ingenieros Ingenieros las personas que tienen más de 30 años y que lleven menos de 16 años trabajando:

Respuesta
σ (edad>30∧añosTrabajados<16) Ingenieros
σ(edad>30∧añosTrabajados<16) Ingenieros

Al tener el operador lógico  AND se pide que cumplan dos condiciones simultáneamente. Primero que la edad sea mayor de 30 años, al igual que en el
ejemplo anterior, la tupla de “Josefa” queda fuera de la selección. Luego de las tuplas que quedan se evalúa la segunda condición. En la imagen se aprecia,
que solo se seleccionan las filas que no tengan X en alguna de las condiciones.

Así finalmente quedaría la tabla:

Tabla Ingenieros
Tabla Ingenieros

id nombre edad ñ
a osTrabajados
123 Leon 39 15
234 Tomas 34 10
idnombreedadañosTrabajados123Leon3915234Tomas3410

Proyección (Project)
El operador Proyección se utiliza para producir una nueva relación desde R R. Esta nueva relación contiene sólo algunos de los atributos de R R, es decir,
realiza la selección de algunas de las columnas de una tabla R R.

Notación en Álgebra Relacional


Project en Álgebra Relacional se representa por la letra griega pi:

π (A1 ,...,An ) R
π(A1,...,An)R

El resultado es una relación seleccionando solo los atributos A 1 , . . . , A n A1,...,An de la relación R R. Si A 1 , . . . , A n A1,...,An no incluye una llave (o clave),
podrían producirse tuplas repetidas en el resultado, las cuales serán eliminadas.

Ejemplo 1

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 2/7
16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL
Tabla Ingenieros
Tabla Ingenieros

id nombre edad ñ
a osTrabajados
123 Leon 39 15
234 Tomas 34 10
345 Jose 45 21
143 Josefa 25 1
idnombreedadañosTrabajados123Leon3915234Tomas3410345Jose4521143Josefa251

Escoger columnas de id y nombre de la tabla de Ingenieros Ingenieros:

Respuesta
π (id,nombre) Ingenieros
π(id,nombre)Ingenieros

La tabla finalmente queda como:

Tabla Ingenieros
Tabla Ingenieros

id nombre
123 Leon
234 Tomas
345 Jose
143 Josefa
idnombre123Leon234Tomas345Jose143Josefa

Ejemplo 2
Seleccionar id y nombre de los Ingenieros Ingenieros que tienen más de 30 años.

Respuesta
π (id,nombre) (σ edad>30 Ingenieros)
π(id,nombre)(σedad>30Ingenieros)

Se aprecia que las tuplas que no cumplan con la condición de selección quedan fuera del resultado, luego se realiza un  Projectsobre las filas del
resultado, separando solo las columnas que contienen los atributos id y nombre. Finalmente la tabla queda de la siguiente manera:

Tabla Ingenieros
Tabla Ingenieros

id nombre
123 Leon
234 Tomas
345 Jose
idnombre123Leon234Tomas345Jose

Producto cartesiano (Cross-Product)


En teoría de conjuntos, el  producto cartesiano de dos conjuntos es una operación que resulta en otro conjunto cuyos elementos son todos los pares
ordenados que pueden formarse tomando el primer elemento del par del primer conjunto, y el segundo elemento del segundo conjunto. En el Álgebra
Relacional se mantiene esta idea con la diferencia que  R R  y  S S  son relaciones, entonces los miembros de  R R  y  S S  son tuplas, que generalmente
consisten de más de un componente, cuyo resultado de la vinculación de una tupla de  R R  con una tupla de  S S  es una tupla más larga, con un
componente para cada uno de los componentes de las tuplas constituyentes. Es decir Cross-product define una relación que es la concatenación de cada
una de las filas de la relación R R con cada una de las filas de la relación S S.

Notación en Álgebra Relacional


Para representar Cross-product en Álgebra Relacional se utiliza la siguiente terminología:

R×S
R×S

Por convención para la sentencia anterior, los componentes de R Rpreceden a los componentes de S S en el orden de atributos para el resultado, creando
así una nueva relación con todas las combinaciones posibles de tuplas de R R y S S. El número de tuplas de la nueva relación resultante es la multiplicación
de la cantidad de tuplas de R R por la cantidad de tuplas que tenga S S (producto de ambos). Si R R y  S S tienen algunos atributos en común, entonces se
debe inventar nuevos nombres para al menos uno de cada par de atributos idénticos. Para eliminar la ambigüedad de un atributo a, que se encuentra en 
R R y S S, se usa R. a R.a para el atributo de R R y S. a S.apara el atributo de S S.
Cabe mencionar que por notación que: R × S ≠ S × R R×S≠S×R

Ejemplo 1

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 3/7
16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL

Con las tablas dadas realice el Cross-product de R R con S S:

Con azul se resaltan las tuplas que provienen de R R que preseden y se mezclan con las de S S resaltadas en verde.

Con las tablas dadas realice el Cross-product de S S con R R:

Ejemplo 2
Dada las siguientes tablas:

Tabla Ingenieros
Tabla Ingenieros

id nombre d#
123 Leon 39
234 Tomas 34
143 Josefa 25
idnombred#123Leon39234Tomas34143Josefa25

Tabla Proyectos
Tabla Proyectos

proyecto duracion
ACU0034 300
USM7345 60
proyectoduracionACU0034300USM734560

Escriba la tabla resultante al realizar la siguiente operación:

Ingenieros × Proyectos
Ingenieros×Proyectos

Respuesta
Ingenieros × Proyectos
Ingenieros×Proyectos

id nombre d# proyecto duracion


123 Leon 39 ACU0034 300
123 Leon 39 USM7345 60
234 Tomas 34 ACU0034 300
234 Tomas 34 USM7345 60
143 Josefa 25 ACU0034 300
143 Josefa 25 USM7345 60
idnombred#proyectoduracion123Leon39ACU0034300123Leon39USM734560234Tomas34ACU0034300234Tomas34USM734560143Josefa25ACU0034300

NaturalJoin
Este operador se utiliza cuando se tiene la necesidad de unir relaciones vinculando sólo las tuplas que coinciden de alguna manera. NaturalJoin une sólo
los pares de tuplas de R R y S S que sean comunes. Más precisamente una tupla r de R R y una tupla s de S S se emparejan correctamente si y sólo si r y s
coinciden en cada uno de los valores de los atributos comunes, el resultado de la vinculación es una tupla, llamada  joined tuple. Entonces, al
realizar NaturalJoin se obtiene una relación con los atributos de ambas relaciones y se obtiene combinando las tuplas de ambas relaciones que tengan el
mismo valor en los atributos comunes.

Notación en Álgebra Relacional

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 4/7
16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL
Para denotar NaturalJoin se utiliza la siguiente simbología: R ⊳⊲ S R⊳⊲S.
Equivalencia con operadores básicos
NaturalJoin puede ser escrito en términos de algunos operadores ya vistos, la equivalencia es la siguiente:

R ⊳⊲ S = π R.A1 ,...,R.An ,S.A1 ,...,S.An (σ R.A1 =S.A1 ∧...∧R.An =S.An (R × S))


R⊳⊲S=πR.A1,...,R.An,S.A1,...,S.An(σR.A1=S.A1∧...∧R.An=S.An(R×S))

Método
1. Se realiza el producto cartesiano R × S R×S .
2. Se seleccionan aquellas filas del producto cartesiano para las que los atributos comunes tengan el mismo valor.
3. Se elimina del resultado una ocurrencia (columna) de cada uno de los atributos comunes.

Ejemplo 1
R
R

a b c
1 2 3
4 5 6
abc123456

S
S

c d
7 5
6 2
3 4
cd756234

Con las tablas dadas realice el NaturalJoin de R R y S S:

El atributo que tienen en común R R y S S es el atributo c, entonces las tuplas se unen donde c tiene el mismo valor en R R y S S

R ⊳⊲ S
R⊳⊲S

a b c d
1 2 3 4
4 5 6 2
abcd12344562

Ejemplo 2
Realizar NaturalJoin a las siguientes tablas:

Tabla Ingenieros
Tabla Ingenieros

id nombre d#
123 Leon 39
234 Tomas 34
143 Josefa 25
090 Maria 34
idnombred#123Leon39234Tomas34143Josefa25090Maria34

Tabla Proyectos
Tabla Proyectos

d# proyecto
39 ACU0034
34 USM7345
d#proyecto39ACU003434USM7345

Respuesta
Ingenieros ⊳⊲ Proyectos
Ingenieros⊳⊲Proyectos

id nombre d# proyecto
123 Leon 39 ACU0034
234 Tomas 34 USM7345
090 Maria 34 USM7345
idnombred#proyecto123Leon39ACU0034234Tomas34USM7345090Maria34USM7345

ThetaJoin

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 5/7
16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL
Define una relación que contiene las tuplas que satisfacen el predicado C C en el  Cross-Product de  R × S R×S. Conecta relaciones cuando los valores de
determinadas columnas tienen una interrelación específica. La condición  C C es de la forma  R.ai<operador_de_comparación> S.bi, esta condición es del
mismo tipo que se utiliza Select . El predicado no tiene por que definirse sobre atributos comunes. El término “join” suele referirse a ThetaJoin.

Notación en Álgebra Relacional


La notación de ThetaJoin es el mismo símbolo que se utiliza para NaturalJoin, la diferencia radica en que ThetaJoin lleva el predicado C C:

R ⊳⊲ C S
R⊳⊲CS

C = <Atributo> <Comparador> <Atributo o Constante delDominio> Donde: <Comparador> ∈ {=, ≥, >, <, ≠, ≤} ∈{=,≥,>,<,≠,≤}

Equivalencia con operadores básicos


Al igual NaturalJoin, ThetaJoin puede ser escrito en función de los operadores vistos anteriormente:

R ⊳⊲ C S = σ F (R × S)
R⊳⊲CS=σF(R×S)

Método
1. Se forma el producto cartesiano R × S R×S .
2. Se selecciona, en el producto, solo la tupla que cumplan la condición C C.

Ejemplo 1
R
R

a b c d
1 3 5 7
3 2 9 1
2 3 5 4
abcd135732912354

S
S

a c e
1 5 2
1 5 9
3 9 2
2 3 7
ace152159392237

Escriba la tabla resultante al realizar la siguiente operación:

R ⊳⊲ (a>=e) S
R⊳⊲(a>=e)S

Respuesta

Se compara el atributo  a de la primera fila de  R R con cada uno de los valores del atributo  e de la tabla  S S. En este caso ninguna de las comparaciones
devuelve el valor verdadero (true).

Luego se compara el atributo  a  de la segunda fila de  R R  con cada uno de los valores del atributo  e  de la tabla  S S. En este caso 2 comparaciones
devuelven el valor verdadero (true), por lo que en la relación de resultado quedará la segunda fila de R R mezclada con la primera y tercera fila de S S.

De igual forma ahora se compara el valor de a de la tercera tupla de R R, nuevamente 2 tuplas de S S cumplen con la condición.

S
S

R.a b R.c d S.a S.c e


3 2 9 1 1 5 2
3 2 9 1 3 9 2
2 3 5 4 1 5 2
2 3 5 4 3 9 2

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 6/7
16/8/2017 Lectura 3 - Álgebra Relacional: Select, Project, Join — Curso ALMA SQL
R.abR.cdS.aS.ce3291152329139223541522354392

Ejemplo 2
Con el esquema conceptual siguiente, hallar los nombres de los directores de cada departamento:

Dpto(numDpto , nombre, nIFDirector, fechaInicio) Dpto(numDpto_, nombre, nIFDirector, fechaInicio)


−−−−−−−−
Empleado(−
nIF
−− , nombre, direccion, salario, dpto, nIFSupervisor) Empleado(nIF_, nombre, direccion, salario, dpto, nIFSupervisor)

Respuesta
π (Dpto.nombre,empleado.nombre) (Dpto ⊳⊲ nIFDirector=NIF Empleado)
π(Dpto.nombre,empleado.nombre)(Dpto⊳⊲nIFDirector=NIFEmpleado)

Tuplas con “Null” en los “Atributos de la Reunión”, no se incluyen en el resultado.

http://csrg.inf.utfsm.cl/~jfuentes/_build/html/lectures/week1/lecture3.html 7/7

S-ar putea să vă placă și