Está en la página 1de 42

Algebra Relacional

La dinámica del modelo relacional permite la


manipulación de la BD mediante lenguajes
relacionales que asocian una sintaxis completa a
las operaciones.
Lenguajes de manipulación de datos
• Procedimentales
Las operaciones se aplican sobre relaciones y el
resultado es otra relación.
Se instruye al sistema para llevar a cabo una serie
de operaciones en la BD para calcular el resultado
(Álgebra Relacional)

• No Procedimentales
Se describe la información deseada sin establecer
el procedimiento para obtenerla (Cálculo Relacional)
Algebra relacional

Es un lenguaje de procedimientos de alto nivel


que permite, mediante el uso de ciertos
operadores, derivar las tablas deseadas desde
las tablas base del modelo relacional.
Algebra relacional
Conjunto de operadores que, aplicados a las
relaciones, dan como resultado nuevas
relaciones.
Operadores primitivos Operadores derivados
unarios Proyección  Combinación o JOIN ϴ
Selección σ intersección Ω
Renombramiento r división :
Binarios Unión υ
Diferencia -
Producto cartesiano X
Operadores primitivos
Unarios
Tienen como operando una única relación
• Proyección 
Crea otra relación definida sobre un conjunto de atributos,
eliminando las tuplas duplicadas que pudieran resultar.

 Atributo 1,atributo 2, … atributo n(nombre-relación)


Operadores primitivos
Unarios

Select DISTINCT nombre, edad from Ingenieros


Ejemplo:

 Préstamo, Importe (Préstamo)

Prestamo Importe
P-17 200,000
P-23 400,000
P-15 300,000
P-14 300,000
P-93 100,000
P-11 180,000
P-16 260,000
Operadores primitivos
Unarios
• Selección o restricción: σ (sigma)

Permite obtener un conjunto de tuplas que cumplen una


condición lógica

σ condición de selección (nombre-relación)


En este tipo de consulta se emplean los diferentes operadores de
comparación (=, >, >=, <, <=, <>)

Y los operadores lógicos (ᴧ and , v or, ¬ not)


Operadores primitivos
Unarios

Select nombre, edad from Ingenieros WHERE edad> 35


Ejemplo: 
N_Sucursal #Prestamo $Importe
Miraflores P-17 200,000
La Aurora P-23 400,000
Lima Cercado P-15 300,000
Chacarilla P-14 300,000
Primavera P-93 100,000
Surquillo P-11 180,000
La Molina P-16 260,000

N_Sucursal #Prestamo $Importe


Miraflores P-17 200,000
Operadores primitivos
Unarios
Podemos aplicar varias operaciones de algebra relacional una
tras otra, anidándolas para formar una expresión del álgebra
relacional (igual que las expresiones aritméticas)
o bien crear relaciones intermedias poniéndoles un nombre.

 descripción, codProv, precio(σ precio> 30(Articulo))

Preciomax30 σ precio> 30(Articulo)


Resultado  Descripción, codProv, precio(preciomax30)

 Préstamo ( N Sucursal = <Miraflores> (Prestamo))


Operadores primitivos
Unarios
Renombramiento r (ro)
Los resultados de las expresiones de álgebra
relacional no tienen nombre, a pesar de ser relaciones.
Dada la relación R, el renombrado de R a x sería …
r x (R)

Es una relación que tiene las mismas tuplas y los


mismos atributos que R, solo que el nombre de la
relación es x
Operadores primitivos
Binarios
• Unión 

Se aplican a dos relaciones que sean compatibles (mismos


atributos) en sus esquemas.

Crea otra relación formada por las tuplas que pertenezcan a


R1, a R2 o a ambas.

relación1  relación2
Operadores primitivos
Binarios

SELECT atr_name(s) FROM Ingenieros UNION SELECT atr_name(s) FROM Jefes


Ejemplo: 
Titular_cuenta Prestatario
N_Cliente #Cuenta N_Cliente #Prestamo
Santos C-101 Santos P-17
Gómez C-215 Gómez P-23
López C-102 López P-15
Abril C-305 Soto P-14
González C-201 Pérez P-93
Santos C-217 Gómez P-11
Rodríguez C-222
Fernández P-16

Se desea averiguar todos los clientes que tienen una


cuenta, un préstamo o ambos
•  N_Cliente (Titular_cuenta)   N_Cliente (Prestatario)
N_Cliente
González
Santos
Rodríguez
López
Abril
Soto
Pérez
Gómez
Fernández
Ejemplo: 
Tabaco_1 Tabaco_2
Nombre Licencia Hoja Nic Nombre Licencia Hoja Nic
Camel Reynold Turca 11 Ducados Tabacalera Sin especificar 11
Marlboro Philips Sin especificar 0,9 Fortuna Tabacalera Sin especificar 1

Tabaco_1  Tabaco_2

Nombre Licencia Hoja Nic


Camel Reynold Turca 11
Marlboro Philips Sin especificar 0,9
Ducados Tabacalera Sin especificar 11
Fortuna Tabacalera Sin especificar 1
Operadores primitivos
Binarios
• Diferencia -

Crea otra relación definida sobre el mismo esquema, constituidas


por las tuplas que pertenecen a la primera relación pero no a la
segunda

relación1 - relación2
Operadores primitivos
Binarios
relación1 - relación2

SELECT atr_name(s) FROM Ingenieros MINUS SELECT atr_name(s) FROM Jefes


Se desea averiguar todos los clientes que tienen abierta una
cuenta, pero que no tienen concedido ningún préstamo:
N_Cliente #Cuenta N_Cliente #Prestamo
Santos C-101 Santos P-17
Gómez C-215 Gómez P-23
López C-102 López P-15
Abril C-305 Soto P-14
González C-201 Pérez P-93
Santos C-217 Gómez P-11
Rodríguez C-222 Fernández P-16

 N Cliente (Titular_cuenta) −  N Cliente (Prestatario)


N_Cliente
González
Rodríguez
Abril
Operadores primitivos
Binarios
• Producto cartesiano X

Crea otra relación con la unión de los atributos de ambas


relaciones y con extensión MxN tuplas, formadas juntando cada
tupla de la 1º relación con cada tupla de la 2º relación.

relación1 X relación2
Operadores primitivos
Binarios
R1 A
R3 A B
a1
a2 a1 b1
a3 a1 b2
a2 b1
X a2 b2
a3 b1
R2 B
a3 b2

b1
b2

SELECT FROM R1,R2


Operadores derivados
• Combinación o join ϴ

Crea una relación con atributos de 2


relaciones, utilizando un atributo
común. (Pk y Fk)
Une cada fila de una tabla con todas
las filas de la tabla relacionada cuyos
atributos coinciden

(combinación natural)

R1 ϴ R2
Ejemplo:
“Averiguar los nombres de todos los clientes que tienen
concedido un préstamo, el importe de éste y la sucursal
donde se lo otorgaron”
(Prestatario  Préstamo)
N_Cliente Prestamo N_Sucursal Prestamo Importe
Santos P-17 Miraflores P-17 200,000
Gómez P-23 La Aurora P-23 400,000
López P-15 Lima Cercado P-15 300,000
Soto P-14 Chacarilla P-14 300,000
Pérez P-93 Primavera P-93 100,000
Gómez P-11 Surquillo P-11 180,000
Fernández P-16 La Molina P-16 260,000
Procedimiento
1. Calcular el producto cartesiano de las relaciones
Prestatario y Préstamo:

Prestatario x Préstamo

2. Seleccionar las tuplas correspondientes al mismo


numero-préstamo:

 prestatario. Préstamo = préstamo. Préstamo


3. Realizar la proyección de nombre-cliente, sucursal
número-préstamo e importe de la relación resultante
(eliminando así la doble ocurrencia del Préstamo):

 N Cliente, N Sucursal, préstamo.préstamo, importe ( prestatario. préstamo

= préstamo.préstamo (Prestatario x Préstamo))

=
Prestatario  Préstamo
(Prestatario  Préstamo)

N_Cliente N_Sucursal #Prestamo $Importe


Santos Miraflores P-17 200,000
Gómez La Aurora P-23 400,000
López Lima Cercado P-15 300,000
Soto Chacarilla P-14 300,000
Pérez Primavera P-93 100,000
Gómez Surquillo P-11 180,000
Fernández La Molina P-16 260,000
Outer join
El outer join es una extensión del join para
lidiar con información no existente.
Existen 3 tipos, izquierdo, derecho y
completo.
Operadores derivados
• Intersección 
Dadas dos relaciones Compatibles específicas, construye una
tercera relación formada por todas las tuplas que aparecen en
ambas relaciones.

R1  R2

Resultado:
Cabecera - idéntica a la de R1 ó R2
Cuerpo - todas las tuplas que aparecen en R1 y en R2 a la vez.
“Averiguar los clientes que tienen un préstamo concedido y una
cuenta abierta”

 N Cliente (Prestatario)   N Cliente (Titular-cuenta)

Titular_cuenta Prestatario
N_Cliente Cuenta N_Cliente #Prestamo

Santos C-101 Santos P-17


Gómez C-215 Gómez P-23 N_Cliente
López C-102 López P-15 Santos
Abril C-305 Soto P-14 Gómez
González C-201 Pérez P-93 López
Santos C-217 Gómez P-11

Rodríguez C-222 Fernández P-16


Operadores derivados
• División : o ÷
Se construye una nueva relación formada por los atributos de
R1 que no están en R2, donde los valores de los otros atributos
concuerdan con todos los valores de la relación R2.

Condiciones:
- Grado R1 > grado R2
- Conjunto de atributos de R2 contenido en conjunto de
atributos de R1
Equivalencia: r T1 ( b (R1))
r ( b ((R2 x T1) – R1)
T2
T1 – T2
Ejemplo división:
R S
A B C D C D
a b c d c d
a b e f e f
b c e f
e d c d
e d e f
a b d e

A B
a b
e d
Ejemplo división:
“Hallar todos los clientes que tengan abierta una cuenta en todas las
sucursales de Surco”
Sucursal Titular-cuenta (1) Cuenta (1)
N_Sucursal N_Distrito N_Cliente Cuenta N_Sucursal Cuenta Saldo
Miraflores Miraflores González C-101
Chacarilla C-101 100,000
La Aurora Surquillo Gómez C-215
La Aurora C-215 140,000
Lima Cercado Lima López C-102
Lima Cercado C-102 80,000
Chacarilla Surco Abril C-305
Chacarilla C-305 70,000
Primavera Surco González C-201
Primavera C-201 180,000
Surquillo Surquillo Santos C-217
Surquillo C-222 140,000
La Molina La Molina Rodríguez C-222
La Molina C-217 150,000
Barrios Altos Lima

1. Obtener todas las sucursales de Surco: N_Sucursal


R1 =  N sucursal (  Distrito = Surco ( Sucursal)) Chacarilla

Primavera
Ejemplo división:

2. Encontrar todos los pares (nombre-cliente, nombre-sucursal) para los que el


cliente tiene una cuenta en una sucursal:
R2 =  N cliente, N sucursal ( Titular-cuenta  Cuenta)
N_Cliente N_Sucursal
González Chacarilla
Gómez La Aurora
López Lima Cercado
3. Hallar los clientes que aparecen en R2 con los
Abril Chacarilla
nombres de todas las sucursales de R1:
González Primavera  N cliente, N sucursal ( Titular-cuenta  Cuenta) 
Santos La Molina
 N sucursal (  N Distrito = Surco ( Sucursal))
Rodríguez Surquillo

N_Cliente
N_Sucursal
González
Chacarilla

Primavera
Ejemplos de Operaciones Relacionales
Ejemplos:
• Obtener los apellidos y teléfono de los alumnos
de nombre Rosa

• Obtener las notas obtenidas en la asignatura de


Inglés

40
• Obtener los alumnos que figuren matriculados en
todas las asignaturas

Nmat
0338
0168

41
• Obtener los
Ejemplos:
alumnos que no han suspendido
ninguna asignatura

• Obtener los alumnos que figuren matriculados en


Inglés y dibujo

42

También podría gustarte