Álgebra Relacional

Álgebra Relacional

  •  Conj. de operaciones de ALTO NIVEL que permiten manejar los datos de una DB relacional.
  • Funciona en base a OPERADORES sobre RELACIONES
  • Sea f un operador relacional, y r1 una relación, si:
    f(r1) = r2; entonces r2 es una relación.
  • Propiedad de clausura:

 

Relación 1

 

 

Relación 2

 

Operador

Operación: RESTRICCION

Devuelve una relación conteniendo las tuplas que cumplen con una determinada condición

Operación: RESTRICCION

SQL:
select * from <relacion> where <condicion>
  • Encabezado resultante idéntico al encabezado de entrada. (opera sobre filas)
  • La condición es una expresion booleana.

σp(R)

p: condición

R: relación

Operación: RESTRICCION

SQL:
select * from tab_alumnos where edad<25
id nombre edad
1 John 20
2 Deby 28
3 Karen 22
4 Diana 14
5 Carl 27
id nombre edad
1 John 20
3 Karen 22
4 Diana 14

Ej:

σedad<25(tab_alumnos)

Operación: PROYECCION

Devuelve una relación conteniendo todas las (sub)tuplas que quedan en una determinada relación luego de quitar determinados atributos

Operación: PROYECCIÓN

SQL:
select distinct <atr_1,...atr_n> from <relacion>
  • Devuelve la misma relación sólo dejando los atributos elegidos. (opera sobre columnas).
  • Formalmente hablando, quita todos los resultados repetidos.

ΠA1...An(R)

A1...An: atributos

R: relación

Operación: RESTRICCION

SQL:
select distinct compania from tab_cliente
id nombre compania
1 John Claro
2 Deby Claro
3 Karen Movistar
4 Diana Claro
5 Carl Personal
compania
Claro
Movistar
Personal

ej: Πcompania(tab_cliente)

Operación: PRODUCTO CARTESIANO

Devuelve una relación equivalente a la combinación de todas las tuplas de dos relaciones

x

Operación: PROD. Cartesiano

SQL:
select * from <relacion_1> <relacion_2>
  • Si R1 tiene n tuplas con a1 atributos, y R2 tiene m tuplas con a2 atributos. La relación resultante tiene n*m tuplas y a1+a2 atributos.
  • Es raro usarse en la prática pero tiene significado teórico.

R1   x R2

R1 y R2 : relaciones

Operación: Prod.Cartesiano

SQL:
select * from user, celular
id_pers nombre
1 John
2 Deby
3 Karen

ej: user x celular

id_cel marca camara
1 Samsung 5mpx
2 Nokia 8mpx
id_pers nombre id_cel marca camara
1 John 1 Samsung 5mpx
2 Deby 1 Samsung 5mpx
3 Karen 1 Samsung 5mpx
1 John 2 Nokia 8mpx
2 Deby 2 Nokia 8mpx
3 Karen 2 Nokia 8mpx

Operación: REUnión Natural

reunión de dos relaciones en la que sólo quedan los casos que relacionan las claves foráneas

Operación: REUNIÓN Natural

MySQL:
select * from <relacion_1> natural join <relacion_2>
  • Si R1 tiene a1 atributos y R2 tiene a2 atributos. La relación resultante tiene a1+a2-1 atributos.
  • Si no tiene atributos en común (o clave foránea) entonces R1 ⋈ R2 = R1 x R2.
  • Es la operación más usada.

R1    R2 =

ΠAt(R1 x R2))

R1 y R2: relaciones
t: condición de igualdad.
A: todos los atributos menos la clave duplicada

Operación: REUnión Natural

MySQL:
select * from usuario natural join celular
id_pers nombre cel
1 John 1
2 Deby 2
3 Karen 5

ej: user celular

id_cel marca
1 Samsung
2 Nokia
3 Huaweii
4 LG
5 Motorola
id_pers nombre cel marca
1 John 1 Samsung
2 Deby 2 Nokia
3 Karen 5 Motorola

select distinct id_pers, nombre, cel, marca from usuario, celular where usuario.id_pers = celular.id_cel

Operaciónes de conjuntos:
union

Obtiene una relación con todas las tuplas que están en una, en otra, o en ambas relaciones.

Operación: UNIÓN

SQL:
<relacion_1> union <relacion_2>
  • Es equivalente al concepto de Union de la teoría de conjuntos.
  • Los esquemas de las relaciones deben ser compatibles: deben poseer igual cantidad y nombres de atributos, y los atributos correspondientes deben estar definidos sobre dominios compatibles.

R1    R2

R1 y R2: relaciones

Operación: Unión

SQL:
select * from profesor union
select * from ex_profesor

ej: profesor ex_profesor

id_prof nombre materia
1 Milfrid Geografía
2 Mohamed Biología
id_ex nombre cátedra
7 Janna Literatura
8 Gerardo Física
2 Mohamed Biología
id_prof nombre materia
1 Milfrid Geografía
2 Mohamed Biología
id_ex nombre materia
7 Janna Literatura
8 Gerardo Física

Operaciónes de conjuntos:
Diferencia

Obtiene una relación con todas las tuplas que están en una y que no están en la segunda.

_

Operación: Diferencia

SQL:
<relacion_1> minus <relacion_2>
  • Es equivalente al concepto de Diferencia de la teoría de conjuntos.
  • Los esquemas de las relaciones deben ser compatibles.
  • ¡No es conmutativa!

R1   - R2

R1 y R2: relaciones

MySQL:
select distinct <atr> from <relacion_1>
where <atr> not in (select <atr> from <relacion_2>)

Operación: Diferencia

MySQL:
select * from profesor where id_prof not in
( select id_ex from ex_profesor )

ej: profesor - ex_profesor

_

id_prof nombre materia
1 Milfrid Geografía
2 Mohamed Biología
id_ex nombre cátedra
7 Janna Literatura
8 Gerardo Física
2 Mohamed Biología
id_prof nombre materia
1 Milfrid Geografía

Operación: Diferencia

MySQL:
select * from ex_profesor where id_ex not in
( select id_prof from profesor )

ej: ex_profesor - profesor

_

id_prof nombre materia
1 Milfrid Geografía
2 Mohamed Biología
id_ex nombre cátedra
7 Janna Literatura
8 Gerardo Física
2 Mohamed Biología
id_ex nombre cátedra
7 Janna Literatura
8 Gerardo Física

Operaciónes de conjuntos:
Intersección

Obtiene una relación con solo las tuplas que están en ambas relaciones entrantes.

Operación: INTERSECCION

SQL:
<relacion_1> intersect <relacion_2>
  • Es equivalente al concepto de intersección de la teoría de conjuntos.
  • Los esquemas de las relaciones deben ser compatibles.

R1   ∩ R2

R1 y R2: relaciones

MySQL:
select * from <rel1> where <id1> in ( select <id2> from <rel2> )

= R1 - (R1 - R2)

Operación: Intersección

MySQL:
select * from profesor where id_prof in ( select id_ex from ex_profesor )

ej: profesor ∩ ex_profesor

id_prof nombre materia
1 Milfrid Geografía
2 Mohamed Biología
id_ex nombre cátedra
7 Janna Literatura
8 Gerardo Física
2 Mohamed Biología
id_prof nombre materia
2 Mohamed Biología

Algebra Relacional

By Tato Salvi

Algebra Relacional

  • 462