Está en la página 1de 13

Algebra Relacional

Introducción

El álgebra relacional es un lenguaje de consulta procedimental. Consta de un conjunto de


operaciones que toman como entrada una o dos relaciones y producen como resultado
una nueva relación.

Conjunto de operadores para consultar BD- Rs (Base de Datos - Relacionales).


Define conjunto de operaciones estándar en BD- Rs.
Operadores que reciben relaciones y devuelven relaciones:
Sobre conjuntos de tuplas:
Unión, Intersección, Diferencia, Producto Cartesiano.
Específicos para BDs Rel.
Selección, Proyección, Join.

Operaciones relacionales unarias

Se denominan operaciones unarias porque operan sobre una sola relación.

Selección

Permite obtener las tuplas que cumplen una cierta condición.

Sintaxis:
σ<condición>(< relación >)
donde:
 <condición> es una condición lógica sobre valores de los atributos de las tuplas
resultado.
 <relación> es una relación o expresión relacional

Sea R una relación y una condición.

σΘ(R)
da como resultado otra relación
 con esquema igual que el de R

 con instancia el conjunto de tuplas de las instancias de R que cumplen con Θ


Ejemplos

σ APELLIDO1=GONZALEZ (EMPLEADO)

σ SUELDO>3000 (EMPLEADO)

σ APELLIDO1=GONZALEZ and SUELDO>3000 (EMPLEADO)

σ not (APELLIDO1=GONZALEZ and SUELDO>3000) (EMPLEADO)

σ APELLIDO1=APELLIDO2 (EMPLEADO)
Proyección

Permite obtener las tuplas con un cierto conjunto de atributos.

Sintaxis:

π<lista_atributos> (< relación >)


donde:
 <lista_atributos> es una lista de atributos a aparecer en la relación resultado.
 <relación> es una relación o expresión relacional.

Sea R una relación.

πA1;:::;An (R)
da como resultado otra relación
 con esquema (A1; : : : ;An)
 con tuplas formadas a partir de las de R tomando los valores para los atributos
A1; : : : ;An

Observación: Como no se admiten tuplas repetidas, al realizar una proyección, podrían


quedar menos tuplas que en la relación de partida.

Ejemplos

πsexo,sueldo (EMPLEADO)

Secuencia de operaciones

Podemos escribir las operaciones como una única expresión de álgebra relacional
anidando dichas operaciones, o aplicar una sola expresión una única vez y crear
relaciones intermedias.

Única expresión:

πNOMBRE;APELLIDO1;SUELDO (σDno=5 (EMPLEADO))


Relación intermedia:

DEP5_EMPS (NOMBRE; APELLIDO; SUELDO) ← σ Dno=5 (EMPLEADO)


RESULTADO ← πNOMBRE;APELLIDO;SUELDO (DEP5_EMPS)
Operaciones de la teoría de conjuntos.

Operaciones sobre pares de relaciones y se denominan, por lo tanto, operaciones


binarias.

Unión

Permite obtener la Unión de dos relaciones tomadas como conjuntos de tuplas.

Sintaxis:

(< relación >) U (< relación >)

donde:
<relación> es una relación o expresión relacional
BD2 -
Sean R y S dos relaciones con igual esquema (o compatible).
En esta relación R y S deben ser compatibles es decir que deben estar definidas sobre el
mismo conjunto de atributos.

La operación:

(R U S)

da como resultado otra relación


 cuyo esquema es igual al de R (y S)
 y tiene como conjunto de tuplas a la unión de las de R y las de S.
 se eliminan las tuplas repetidas.

R S RUS
abc bga abc
def def def
cbd cbd bga
cbd
Intersección

Permite obtener la Intersección de dos relaciones tomadas como conjuntos de tuplas.

Sintaxis:

(< relación >) ∩ (< relación >)

donde:
<relación> es una relación o expresión relacional

Sean R y S dos relaciones con igual esquema (o compatible).

La operación:

(R ∩ S)

da como resultado otra relación


 cuyo esquema es igual al de R (y S)
 y tiene como conjunto de tuplas a la intersección de las de R y las de S.

R S R∩S
abc bga def
def def cbd
cbd cbd
Diferencia

Sean R y S dos relaciones con igual esquema (o compatible).

La operación:

(R - S)

da como resultado otra relación


 cuyo esquema es igual al de R (y S)
 y tiene como conjunto de tuplas a la resta de las de R menos las de S.

R S R-S
abc bga abc
def def
cbd cbd
Producto Cartesiano

Permite obtener el Producto Cartesiano de dos relaciones tomadas como conjuntos de


tuplas.

Sintaxis:

(< relación >) X (< relación >)

donde:
 <relación> es una relación o expresión relacional.

Sean R y S dos relaciones con esquemas (A1; : : : ;An) y (B1; : : : ;Bm) respectivamente.

La operación:

(R X S)

da como resultado otra relación


 cuyo esquema es (A1; : : : ;An;B1; : : : ;Bm)
 y cuyas tuplas son generadas por todas las combinaciones posibles de las de R
con las de S.
 Conocido también como PRODUCTO CRUZADO (CROSS PRODUCT) o
CONCATENACIÓN CRUZADA (CROSS JOIN), que se identifica por el símbolo X
(o bien como R TIMES S).
 Se trata también de una operación de conjuntos binarios, aunque no es necesario
que las relaciones en las que se aplica sean una unión compatible.
 Combina cada tupla de una relación con los de la otra.
R(A1,A2, . . . ,An) × S(B1,B2, . . . ,Bm) es una relación con n + m atributos
Q(A1,A2, . . . ,An,B1,B2, . . . ,Bm).
 Q tiene 1 tupla por cada combinación de tuplas de R con S. Así, de R con nR tuplas
(|R| = nR), y S con ns tuplas, R × S tendrá nR × nS tuplas.
 Si hay dos atributos distintos con el mismo nombre x en R y S, se puede nombrar
en Q como R.x y S.x

R S RXS
abc bga abcbga
def def abcdef
cbd cbd abccbd
defbga
defdef
defcbd
cbdbga
cbddef
cbdcbd
Ejemplo

CLIENTES
codcli – nombre – dirección – codpostal – codpue
333 - Sos Carretero, Jesus - Mosen Compte, 14 – 12964 – 53596
336 - Miguel Archiles, Ramón - Bernardo Mundina, 132-5 – 12652 – 07766
342 - Pinel Huerta, Vicente - Francisco Sempere, 37-10 – 12112 – 07766
345 - López Botella, Mauro - Avenida del Puerto, 20-1 - 2010 – 12309
348 - Palau Martínez, Jorge - Raval de Sant Josep, 97-2 – 12003 - 12309
354 - Murrıa Vinaiza, José - Ciudadela, 90-18 – 12003 – 12309
357 - Huguet Peris, Juan Angel - Calle Mestre Rodrigo, 7 – 12100 – 12309

PUEBLOS
codpue – nombre – codpro
07766 – Burriana – 12
12309 – Castellón – 12
17859 – Enramona – 12
46332 – Soneja – 12
53596 – Vila-real – 12

Ej: obtener los nombres de los pueblos en los que hay clientes

TEMP1 ← π<codpue>(CLIENTES)
TEMP2 ← TEMP1 X PUEBLOS

TEMP3 ← σ (TEMP2)
<TEMP1.codpue=PUEBLOS.codpue>

RESULTADO ← π<nombre>(TEMP3)

TEMP1
codpue
53596
07766
12309

PUEBLOS
codpue nombre codpro
07766 Burriana 12
12309 Castellon 12
17859 Enramona 12
46332 Soneja 12
53596 Vila-real 12

TEMP2
TEMP1.codpue PUEBLOS.codpue nombre codpro
53596 07766 Burriana 12
53596 12309 Castellón 12
…...
53596 53596 Vila-real 12
…...
TEMP3
TEMP1.codpue PUEBLOS.codpue nombre codpro
53596 53596 Vila-real 12
07766 07766 Burriana 12
12309 12309 Castellón 12

RESULTADO
nombre
Vila-real
Burriana
Castellón
Luis
FABS
#f Nombre Direcc
1 Juan d1
2 Pedro d2
4 Maria d3
5 Ana d2
6 Pedro d4
9 Pepe d5
10 Laura d4
13 Maria d3
15 Pedro d1
16 Oscar d3
19 Juan d4

PRODS
#p Desc
1 t1
2 t2
3 t3
5 t2
6 t3
7 t4
9 t2
10 t1
11 t3
12 t2
15 t3

VENTAS
#f #p Precio
1 1 100
1 2 200
1 3 300
1 10 1000
1 11 1100
2 3 350
2 6 600
2 7 700
5 3 350
5 5 200
9 7 100
9 3 300
10 3 400
σ#p<3 (PRODS) × σ#p<3 (VENTAS)
da como resultado:
#p Desc #f #p Precio
1 t1 1 1 100
1 t1 1 2 200
2 t2 1 1 100
2 t2 1 2 200

Este operador permite combinar las tuplas de dos tablas

π$2,$3,$4,$5 (σ$1<3 (PRODS) × σ$2<3 (VENTAS))


da como resultado:
Desc #f #p Precio
t1 1 1 100
t1 1 2 200
t2 1 1 100
t2 1 2 200

La notación de atributos numerados ($) también puede ser usada en la selección.

Operaciones básicas

A las operaciones SELECCIÓN, PROYECCIÓN, PRODUCTO CARTESIANO, UNIÖN Y


DIFERENCIA se les llama operaciones básicas.

A partir de aquí, veremos operaciones derivadas, que pueden ser por tanto obtenidas a
partir de las anteriores, pero que conviene conocer para expresar de forma mas ágil
determinadas acciones anidadas.

Operadores Derivados

Estos operadores son:


 Join: Permite expresar la combinación de tablas.
 División: Permite obtener los datos que se relacionan con todos los elementos de
otro conjunto.

Permite combinar tuplas de dos relaciones a través de una condición sobre los atributos.
Corresponde a una Selección sobre el Producto
Cartesiano de las relaciones

Sintaxis:
(< relacion >) on<condicion> (< relacion >)
Cuando se realiza un Join entre dos relaciones (R y S), cada vez que una tupla de R y
otra de S cumplen la condición del join, se genera una tupla en el resultado.
Para que se genere una tupla en el resultado alcanza con que exista una tupla en R y otra
en S que se “conecten” por la condición del Join.

Θ-Join Theta Join

Sean R y S dos relaciones y θ una condición, la operación:


R onθ S
es equivalente a realizar:
σθ (R × S)

Join Natural

Sean R y S dos relaciones, la operación:


R∗S
es equivalente a realizar:
Θ-Join con la condición de igualdad entre los atributos de igual nombre y luego proyectar
eliminando columnas con nombre repetido.

Ejemplos
1 Dar los nombres de fabricantes y la descripción de los productos que vende
πNombre,Desc((FABS ∗ VENTAS) ∗ PRODS)
2 Dar descripción y precio de productos vendidos por Juan.
πDesc,Precio ((σNombre=Juan(FABS) ∗ VENTAS) ∗ PRODS)

División

Sean R y S dos relaciones con esquemas


(A1, . . . , An, B1, . . . , Bm) y (B1, . . . , Bm) respectivamente.

La operación:
(R ÷ S)
da como resultado otra relación cuyo esquema es (A1, . . . , An) y su contenido son las
tuplas tomadas a partir de las de r (R) tales que su valor (a1, . . . , an) está asociado en r
(R) con TODOS los valores (b1, . . . , bm) que están en s (S)

Ejemplos

Sean R y S, y Q = R ÷ S

R( A, B ) S( B ) Q( A )
a1 b1 b1 a2
a1 b2 b2 =⇒
a2 b1 b3
a2 b2
a2 b3
a2 b4
a3 b1
a3 b3

1 Dar los #p vendidos por todos los fabricantes que venden algún producto.

π#p,#f(VENTAS) ÷ π#f(VENTAS)
2 Dar los #f que venden todos los productos vendidos por algún fabricante.

π#f,#p (VENTAS) ÷ π#p (VENTAS)


Dar los #f que venden todos los productos con descripción "t1".

VEND_T1 ←− π#f,#p (VENTAS) ÷ π#f (σDesc=t1 (PRODS))


4 Dar nombre y dirección de fabricantes que venden todos los productos con descripción
"t1".

πNombre,Direc (FABS ∗ VEND_T1)

También podría gustarte