Sunteți pe pagina 1din 54

Lenguajes de

Manipulacin de
Datos
Profesor:
MS Luis Serna Jherry

Lenguajes de
Manipulacin de Datos

Son lenguajes que el usuario utiliza para


consultar y modificar la base de datos.
Procedimentales:

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 informacin deseada sin
establecer el procedimiento para obtenerla
(Clculo Relacional)

Lenguajes de Manipulacin
de Datos Evolucin
histrica
Junio 1970 E. Codd A relational Model

of data for large shared databanks


1974 SEQUEL (laboratorios de IBM)
1976 SQL (SEQUEL 2)
Dcada del 80 Se comercializan
productos basados en SQL
SQL/86, SQL/89, SQL/92 Estndares ANSI
SQL/99 para soporte de datos de
naturaleza compleja

lgebra 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.

Consta de un conjunto de operadores


que toman como entrada una o dos
relaciones y producen como resultado
una nueva relacin.

lgebra Relacional

Operaciones fundamentales:
Seleccin, Proyeccin, Unin, Diferencia,
Producto Cartesiano y Renombramiento
Otras operaciones, que pueden definirse
en trminos de las operaciones
fundamentales:
Interseccin, Reunin natural (JOIN) y
Divisin

El Algebra Relacional en el
DBMS
Expresin
en lgebra
relacional

SQL

Expresin
optimizada
en lgebra
relacional

Plan de
ejecucin

Cdigo
ejecutable
Generador
de cdigo

analizador

Optimizador de
Consultas

DBMS

Operadores Relacionales

SELECCIN
Extrae tuplas de una
relacin dada que
satisfacen una
condicin especfica.
Smbolo: (sigma)
Trmino Comn: (WHERE)
Notacin: condicin (Relacin)

Operadores Relacionales

SELECCIN
Prestamo

N_Sucursal

#Presta
mo

$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

NMolina
La
P-16
Sucursal = <Miraflores>

(Prestamo)
260,000

N_Sucursal

#Presta
mo

$Importe

Miraflores

P-17

200,000

Operadores Relacionales

PROYECCIN
Extrae atributos
especficos de una
relacin dada
Smbolo:

Trmino Comn: PROJECT


Notacin: atributo 1, atributo 2, ... Atributo n (Relacin)

Operadores Relacionales

PROYECCIN

# Prstamo, $ Importe (Prstamo)


#Presta
mo

$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 Relacionales
Composicin de Operaciones Relacionales

El resultado de una operacin relacional es una relacin

Las operaciones relacionales se pueden componer para


formar una expresin del lgebra relacional (igual que las
expresiones aritmticas)
Ejemplo: Mostrar el atributo #prstamo de aquellas sucursales
cuyo nombre es Miraflores de la relacin Prstamo.

# Prstamo (N Sucursal = <Miraflores> (Prestamo))

Operadores Relacionales

UNIN

Construye una relacin


formada por todas las
tuplas que aparecen en
cualquiera de dos
relaciones especificas,
eliminndose las
duplicadas
Smbolo:
Trmino Comn: UNION

Notacin: R1
R2relaciones deben ser Compatibles: la misma
Las

cantidad de atributos, y los atributos


correspondientes deben provenir del mismo dominio

Operadores Relacionales
EJEMPLO:

Se desea averiguar todos los clientes que tienen una


cuenta, un prstamo o ambos:

Titular_cuenta

Prestatario
N_Cliente

#Presta
mo

N_Client
e

#Cuenta

Santos

C-101

Santos

P-17

Gmez

C-215

Gmez

P-23

Lpez

C-102

Lpez

P-15

Abril

C-305

Soto

P-14

Gonzle
z

C-201

Prez

P-93

Santos

C-217

Gmez

P-11

Fernnde

P-16

Operadores Relacionales

UNION

Se desea averiguar todos los clientes que tienen una cuenta,


un prstamo o ambos:

N Cliente (Titular_cuenta) N Cliente (Prestatario)


N_Cliente
Gonzlez
Santos
Rodrguez
Lpez
Abril
Soto
Prez
Gmez
Fernnde
z

Operadores Relacionales

DIFERENCIA

Dadas dos relaciones


especficas, construye una
tercera relacin formada
por todas las tuplas de la
primera relacin que no
aparecen en la segunda.

R1

R2

Notacin: R1 R2

Smbolo:
Trmino Comn: MINUS

Las relaciones deben ser Compatibles

Operadores Relacionales

DIFERENCIA

Se desea averiguar todos los clientes que tienen abierta una


cuenta, pero que no tienen concedido ningn prstamo:

N Cliente (Titular_cuenta) N Cliente (Prestatario)


N_Cliente
Gonzlez
Rodrguez
Abril

Operadores Relacionales

PRODUCTO CARTESIANO
R1

A
a1
a2
a3

R2

B
b1
b2

R3

a1
a1
a2
a2
a3
a3

b1
b2
b1
b2
b1
b2

Dadas dos relaciones


especficas, construye
una tercera relacin que
contiene todas las
combinaciones posibles
de tuplas, una de cada
una de las relaciones.

Smbolo:
Trmino Comn: TIMES

Operadores Relacionales

RENOMBRAMIENTO

Los resultados de las expresiones de lgebra


relacional no tienen nombre, a pesar de ser relaciones.
Dada una expresin E, la expresin

x (E)
devuelve el resultado de la expresin E con el
nombre X
Smbolo: ro)
Trmino Comn: RENAME

Operadores Relacionales

RENOMBRAMIENTO

Tambin es til para renombrar los atributos de una


relacin:
La expresin

X (A1, A2, ..., An) (E)


devuelve el resultado de la expresin E con el
nombre X y con los atributos con el nombre
cambiado a A1, A2, ...., An

Operadores Relacionales

RENOMBRAMIENTO - Ejemplo

Buscar el mximo saldo de la cuenta de un banco


Cuenta

Sucursal

cuenta

Miraflores

C-101

100,000

La Aurora

C-215

140,000

Lima Cercado

C-102

saldo

80,000

Calcular primero una relacin intermedia con los

saldos que no son el mximo.


Realizar la diferencia entre saldo (Cuenta) y la

relacin intermedia calculada.

Operadores Relacionales

RENOMBRAMIENTO - Ejemplo

Calcular una relacin intermedia con los saldos que

no son el mximo:
Calcular el producto cartesiano Cuenta x Cuenta
Formar una seleccin sobre el resultado,
comparando los valores de los saldos que aparecen
en una tupla
cuenta.saldo (cuenta.saldo < d.saldo (Cuenta x d (Cuenta) )

Renombramiento Ejemplo
Cuenta x (Cuenta)
d

Cuenta.
Cuenta.
Miraflores
C101 Cuenta.
100,000
d.
d.
100,000
Sucursal
cuenta
saldo
Miraflores
cuenta
saldo C101 100,000
140,000

d.
Miraflores

C101

sucursal
La Aurora

C215

Miraflores
80,000

C101 100,000

Lima Cercado C102

La Aurora
100,000

C215 140,000

Miraflores

C101

La Aurora
140,000

C215 140,000

La Aurora

C215

La Aurora
80,000

C215 140,000

Lima CercadoC102

Lima Cercado C102

80,000

Miraflores

C101 100,000

Seleccion - Ejemplo
cuenta.saldo < d.saldo (Cuenta x d (Cuenta)
Cuenta.
saldo
Sucursal
Miraflores

Cuenta. Cuenta.
cuenta
C101 saldo
100,000

d. sucursal

d. cuenta d.

La Aurora

C215

140,000
Lima Cercado C102

80,000

Miraflores

C101 100,000

Lima Cercado C102

80,000

La Aurora

C215 140,000

Renombramiento Ejemplo
cuenta.saldo (cuenta.saldo < d.saldo (Cuenta x d (Cuenta) )

Cuenta.saldo
100,000
80,000

Renombramiento Ejemplo

Realizar la diferencia entre saldo (Cuenta) y la

relacin intermedia calculada.


saldo (Cuenta) cuenta.saldo (cuenta.saldo < d.saldo
(Cuenta x d (Cuenta) )

saldo
100,000
140,000
80,000

saldo

100,000
80,000

saldo

140,000

Operadores Relacionales

INTERSECCIN
Dadas dos relaciones Compatibles
especficas, construye una tercera
relacin formada por todas las
tuplas que aparecen en ambas
relaciones.

Smbolo:
Trmino Comn: INTERSECT
Notacin: R1 R2
Equivalencia: R1 R2 = R1 - (R1 - R2)

Operadores Relacionales

INTERSECCIN

R1 R2
Resultado:
Cabecera - idntica a la de R1 R2
Cuerpo - todas las tuplas que aparecen en R1 y en
R2 a la vez.

Operadores Relacionales

INTERSECCIN - Ejemplo

Averiguar los clientes que tienen un prstamo concedido y


una cuenta abierta

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


Titular_cuenta
N_Client
e

#Cuenta

Santos

C-101

Gmez

C-215

Lpez

C-102

Abril

C-305

Gonzle
z

C-201

Prestatario
N_Cliente

#Presta
mo

Santos

P-17

Gmez

P-23

Lpez

P-15

Soto

P-14

Prez

P-93

Gmez

P-11

Operadores Relacionales

INTERSECCIN - Ejemplo

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


N_Cliente
Santos
Gmez
Lpez

Operadores Relacionales

FUSIN (JOIN) o Reunin Natural


R1

R2

a1
a2
a3

b1
b2
b3

b1
b2
b4

c1
c2
c4

R3

a1
a2

b1
b2

c1
c2

Smbolo:
Trmino Comn: JOIN
Notacin: R1 R2

Dadas dos relaciones


especficas, construye
una tercera relacin que
combina ciertas
selecciones, proyeccin
y un producto
cartesiano en una sola
operacin.

Operadores Relacionales

FUSIN (JOIN) - Ejemplo

Averiguar los nombres de todos los clientes que


tienen concedido un prstamo, el importe de ste y la
sucursal donde se lo otorgaron

(Prestatario Prstamo)
N_Cliente

#Presta
mo

N_Sucursal

#Presta
mo

$Importe

Santos

P-17

Miraflores

P-17

200,000

Gmez

P-23

La Aurora

P-23

400,000

Lpez

P-15

Lima Cercado

P-15

300,000

Soto

P-14

Chacarilla

P-14

300,000

Prez

P-93

Primavera

P-93

100,000

Gmez

P-11

Surquillo

P-11

180,000

Fernndez

P-16

La Molina

P-16

260,000

Operadores Relacionales

FUSIN (JOIN) - Ejemplo

Procedimiento:
Calcular el producto cartesiano de las relaciones

Prestatario y Prstamo:
Prestatario x Prstamo
Seleccionar las tuplas correspondientes al mismo

numero-prstamo:
prestatario.# Prstamo = prstamo.# Prstamo (Prestatario x
Prstamo)

Operadores Relacionales

FUSIN (JOIN) - Ejemplo

Realizar la proyeccin de nombre-cliente, sucursal

nmero-prstamo e importe de la relacin resultante


(eliminando as la doble ocurrencia del # Prstamo):
N Cliente, N Sucursal, prstamo.# prstamo, importe (prestatario. # prstamo =
prstamo.# prstamo

(Prestatario x Prstamo))

=
Prestatario Prstamo

Operadores Relacionales

FUSIN (JOIN) Ejemplo

(Prestatario Prstamo)

N_Cliente

N_Sucursal

#Presta
mo

$Importe

Santos

Miraflores

P-17

200,000

Gmez

La Aurora

P-23

400,000

Lpez

Lima
Cercado

P-15

300,000

Soto

Chacarilla

P-14

300,000

Prez

Primavera

P-93

100,000

Gmez

Surquillo

P-11

180,000

Fernndez

La Molina

P-16

260,000

Operadores Relacionales

R1

R2

DIVISIN
A

a1
a1
a2
a3

b1
b4
b1
b4

R3

A
a1

B
b1
b4

Dadas R1 y R2, donde R2 R1 (la


cabecera de R2 es un subconjunto de la
cabecera de R1) Se construye una nueva
relacin formada por los atributos de R1
que no estn en R2, donde los valores de
los otros atributos concuerdan con todos
los valores de la relacin R2.

Smbolo:
Trmino Comn: DIVIDE BY
Notacin: R1 R2

Equivalencia:

T2

T1

( b ((R2 x T1) R1)


T1 T2

( b (R1))

Operadores Relacionales

DIVISIN

Sean R1 = (X1, X2, ..., XM, Y1, Y2, ..., YN)


R2 = (Y1, Y2, ..., YN)
Consideremos (X1, ..., XM) y (Y1, ..., YN) como si
fueran atributos compuestos X e Y. Entonces
La relacin resultante de R1 R2 es como sigue:
Cabecera : X
Cuerpo : tuplas (X:x) tales que (X:x, Y:y) en R1 para todas las
tuplas (Y:y) en R2
R1 R2 = X

(X x R2) subconjunto de R1

Operadores Relacionales

DIVISIN - Ejemplo

Hallar todos los clientes que tengan abierta una cuenta


en todas las sucursales de Surco
Sucursal

N_Sucursal

Titular-cuenta (1)
Cuenta (1)

N_Distrito

N_Cliente

N_Sucursal

Cuent
a
Cuent Saldo
a

Sucursal

N_Sucursal

N_Distrito

Miraflores

Miraflores

La Aurora

Surquillo

Lima Cercado

Lima

Chacarilla

Surco

Primavera

Surco

Surquillo

Surquillo

La Molina

La Molina

Titular-cuenta (1) Barrios Altos


N_Cliente

Cuent
a

Gonzlez

C-101

Gmez

C-215

Lpez

C-102

Abril

C-305

Gonzlez

C-201

Santos

C-217

Rodrguez

C-222

Lima

Cuenta (1)

N_Sucursal

Cuent
a

Saldo

Chacarilla

C-101

100,000

La Aurora

C-215

140,000

Lima Cercado

C-102

80,000

Chacarilla

C-305

70,000

Primavera

C-201

180,000

Surquillo

C-222

140,000

Operadores Relacionales

DIVISIN - Ejemplo

Hallar todos los clientes que tengan abierta una cuenta


en todas las sucursales de Surco
Obtener todas las sucursales de Surco:
R1 = N sucursal ( Distrito = Surco ( Sucursal))
N_Sucursal
Chacarilla
Primavera

Operadores Relacionales

DIVISIN - Ejemplo

Hallar todos los clientes que tengan abierta una cuenta


en todas las sucursales de Surco
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

Gonzlez

Chacarilla

Gmez

La Aurora

Lpez

Lima Cercado

Abril

Chacarilla

Gonzlez

Primavera

Santos

La Molina

Rodrguez

Surquillo

Operadores Relacionales

DIVISIN - Ejemplo

Hallar todos los clientes que tengan abierta una cuenta


en todas las sucursales de Surco
Hallar los clientes que aparecen en R2 con los nombres

de todas las sucursales de R1:


N cliente, N sucursal ( Titular-cuenta Cuenta)
N sucursal ( N Distrito = Surco ( Sucursal))
N_Client
e
Gonzle
z

Precedencia de
Operadores Relacionales

Proyeccin
Seleccin
Producto cartesiano
JOIN, Divisin
Interseccin
Unin, Diferencia

El producto y el join son asociativos y


conmutativos

Ejemplos de Operaciones Relacionales


Considere el siguiente esquema relacional:
CLIENTE: (C_cliente, N_cliente, T_cli_direccion, Npais, $SaldoIni,
$SaldoAct)
VENDEDOR: (C_vendedor, N_vendedor, C_jefe, N_oficina,
%Comision)
PRODUCTO: (C_producto, N_producto, C_fabricante, $Costo,
$Precio)
FABRICANTE: (C_fabricante, N_fabricante, T_fab_direccion,
N_pais)
VENTA: (D_venta, C_cliente, C_vendedor, C_producto,
Q_unidades)

Ejemplos de Operaciones Relacionales


C_vendedor

N_vendedor

C_jefe

N_oficina

%Comision

10

Rodney
Jones

27

Chicago

10

14

Masaji Matsu

44

Tokyo

11

23

Francoise
Moire

35

Bruselas

37

Elena Horna

12

Bs. Aires

13

39

Goro Azuma

44

Tokyo

10

27

Terry
Cardoso

Chicago

15

44

Albert Ige

27

Tokyo

12

35

Brigit Bovary

27

Bruselas

11

42

Bruno

27

Bs. Aires

10

Ejemplos de Operaciones Relacionales

Unin
Si consideramos:
Vendedor_subordinado: todos aquellos que
tienen un jefe
Vendedor_jefe: todos aquellos que son jefe
de alguien

Vendedor = Vendedor_subordinado
Vendedor_jefe

Ejemplos de Operaciones Relacionales


Interseccin
Jefes de nivel intermedio:
Vendedor_subordinado
Vendedor_jefe
C_VENDEDOR
N_VENDEDOR
C_JEFE
OFICINA

%_COMISION

44

Albert Ige

27

Tokyo

12

35

Brigit Bovary

27

Bruselas

11

12

Bruno Snchez

27

Bs.
Aires

10

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