JOSE RICARDO KANTUN COOL 2547 JAIRO MISAEL uitz haas 2032 LUIS ALBERTO pech cocon 1987 GILBERTO IVAN CAAMAL DZUL 2045
Lenguajes de consulta Lenguajes de consulta: utilizados para operar con la BD.
Procedurales: (instrucciones para realizar secuencia de operaciones) (qu y cmo)
No procedurales: (solicita directamente la informacin deseada) (qu).
2 Lenguajes de consulta lgebra Relacional Es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones
Operaciones fundamentales
Unitarias
Seleccin Proyeccin Renombre 3 Binarias
Producto cartesiano Unin diferencia Lenguajes de consulta Supongamos la tabla Prestamo = (nombre_sucursal, monto, direccin) Seleccin: Operador o Selecciona tuplas que satisfacen un predicado dado. La condicin puede tener conectivos lgicos (And, Or, Not) y operadores de comparacin
4 Ej1: prestamos otorgados por la sucursal XXX.
onombre-sucursal = XXX (prestamo)
Ej2: prestamos otorgados por la sucursal XXX y con monto superior a $1200
o nombre-sucursal = XXX and monto > 1200 (prestamo)
UNLP - Facultad de Informtica IBD - CLASE 14 5 Lenguajes de consulta Proyeccin: Operador t Devuelve la relacin argumento con columnas omitidas. Si quedan tuplas repetidas se excluyen.
omitir tr. Dejar de hacer [una cosa]. tr.-prnl. Pasar en silencio [una cosa].
Dejar a una persona o cosa fuera de algn grupo "En la invitacin no excluyas a ninguno de los amigos.
6 Ej3: nombres de sucursal que figuran en prstamo tnombre-sucursal (prestamo)
Ej4: sucursal cuyo monto sea superior a $10000.
tnombre-sucursal (omonto > 10000 (prestamo))
7 Lenguajes de consulta Producto Cartesiano: Operador x
Conecta dos entidades de acuerdo a la definicin matemtica de la operacin.
Tabla Cliente = (nombre_cte, direccin, tel) Opera = (nombre_cte, nombre_banquero, monto)
8 Ej5: cada cliente con sus datos personales y banquero que opera. Cliente x Opera o cliente.nombre-cte= opera.nombre-cte (Cliente x Opera)
Notar que se utiliza el identificador de tabla porque los campos se llaman iguales. Ej6: todos los clientes y su direccin, que operan con el banquero YYY. t cliente.nombre-cte, direccin (o nombre-banquero= YYY(ocliente.nombre-cte= opera.nombre-cte(Cliente x Opera))) 9 Lenguajes de consulta Renombrar: Operacin Permite utilizar la misma tabla en un producto cartesiano (por ej.).
Tabla Cliente = (nombre_cte, direccin, tel)
Ej7: clientes que viven en la misma direccin que el cliente ZZZ 10 Ejercicio siete: Subconsulta que permite obtener la direccin de ZZZ, con esto debo hacer un producto con cliente nuevamente t direccin ( o nombre-cte = ZZZ (Cliente)) Renombro cliente para hacer la operacin t cliente2.nombre ( o cliente2.direccin = cliente.direccin [ t direccin {o nombre-cte = ZZZ (Cliente)} x cliente2
(cliente) ] ) 11 Lenguajes de consulta Unin: Operacin Equivalente a la unin matemtica. Las instancias repetidas se eliminan automticamente. Las dos tablas deben ser de unin compatibles Igual cantidad de atributos i-simo atributo de 1 tabla y i-simo atributo de 2 tabla deben tener el mismo dominio (i:1..n)
12 Ej8: clientes que tengan cuenta corriente o caja ahorro en la sucursal xxx.
CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal) (t nomcli (o sucursal=XXX (ctacte))) (t nomcli (o sucursal=XXX (cahorro)))
13 Lenguajes de consulta Diferencia: Operacin
Equivalente a diferencia de Conjuntos. Las dos tablas deben ser de unin compatibles 14 Ej9: Clientes de la sucursal xxx que tiene ctacte y no tienen caja ahorro
CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal) (t nomcli (o sucursal=XXX (ctacte))) - (t nomcli (o sucursal=XXX (cahorro)))
15 Lenguajes de consulta Definicin de lgebra Relacional:
Una expresin bsica en AR consta de Una relacin de una Base de Datos Relacin constante
Una expresin general se construye a partir de sub- expresiones (E1,E2,...En)
Expresiones: E1 E2 E1 - E2 E1 x E2 o p (E1) P predicado con atributos en E1 t s (E1) S lista de atributos de E1
x (E1) X nuevo nombre de E1 16 Lenguajes de consulta lgebra Relacional
Operaciones Adicionales: no aaden potencia, solo simplifican consultas comunes
Se puede definir en funcion de la Unin y Diferencia
18 Ej10: Clientes de la sucursal xxx que tienen tiene ctacte y tienen caja ahorro CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal)
(t nomcli (o sucursal=XXX (ctacte))) (t nomcli (o sucursal=XXX (cahorro)))
t nomcli ( o sucursal=XXX { [(ctacte) (cahorro)] [ ((ctacte) - (cahorro)) ((cahorro) - (ctacte)) ] } ) 19 Lenguajes de consulta Producto Natural: Operacin |x| Realiza el producto cartesiano con una seleccin de tuplas con sentido eliminando las columnas (atributos) repetidas. Combinacion de Seleccin y Producto Cartesiano Resultado= tuplas donde los nombre y valores de los atributos que se repiten en ambas tablas son iguales. Si R y S son dos relaciones que no tienen atributos en comn -> R x S= R|x|S R|x| (cond)
S = o (cond) ( R|x|S )
20 21 Lenguajes de consulta Producto Natural Clientes=(nomcli,direccion,tel) Prestamos=(sucursal,nomcli) Ej11: clientes con prstamos en un banco t nomcli.... (prestamos |x| clientes) Si coincidera mas de un atributo entre las tablas a realizar|x|, el mismo se realiza por la coincidencia de todos los atributos comunes a la vez. 22 Lenguajes de consulta Divisin: Operacin % Dado R1 y R2, el resultado son los valores de atributos de R1, que se relacionan con todas las tuplas de R2
R1 % R2 sii Esquema de R2 est incluido en el Esquema de R1
Esq( R1 % R2)= Esq( Esq(R1) Esq(R2) )
Hacen_Cursos=(# alu, nom_curso) Cursos=(nom_curso) -> Hacen_Cursos % Cursos (alumnos que hicieron todos los cursos que existen) 23 Lenguajes de consulta Asignacin: Operacin : Expresin que asigna a una variable temporal el resultado de una operacin. Temp : Operacin del lgebra Ej10: Clientes de la sucursal xxx que tienen tiene ctacte y tienen caja ahorro CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal) (t nomcli (o sucursal=XXX (ctacte))) (t nomcli (o sucursal=XXX (cahorro)))
t nomcli ( o sucursal=XXX { [(ctacte) (cahorro)] [ ((ctacte) - (cahorro)) ((cahorro) - (ctacte)) ] } )
A : (ctacte) (cahorro), D1 : (ctacte) - (cahorro), D2 : (cahorro)- (ctacte) t nomcli ( o sucursal=XXX { A [ D1 D2 ] } ) 24 Lenguajes de consulta Clculo Relacional de Tuplas: No procedural, describe informacin deseada sin dar un proceso especfico para obtener esa informacin.
Utiliza el clculo de predicados para la formulacin de consultas
Expresin de consultas { t / P(t) } Conjunto de tuplas tal que P(Predicado) es verdadero en t. Ejemplos:
Ej12:clientes con prstamos mayor que 1200$ t nomcli. (o sucursal=XXX ( prestamos |x| clientes ))
25 Lenguajes de consulta Operacin de proyeccin {- t / se R / Q(s)}
Ej13: solo el nombre del cliente.(del ej 12) t nomcli. (o sucursal=XXX ( prestamos |x| clientes ))
Variable de tupla t se define solo para los atributos deseados
26 Lenguajes de consulta Operando :
t e r (Q(t)) tuplas / t predicado Q(t) sea verdadero en r.
Ej16: encontrar cliente que tiene una cuenta en todas las sucursales de La Plata {t / u e sucursal (u[ciudadsucursal]=La Plata) - s e deposito (t[nombre]=s[nombre] ^ s[sucursal] = u[sucursal]) }
27 Lenguajes de consulta Definicin formal del Clculo de tuplas Una expresin del Clculo de tuplas { t / P(t) }, tiene: P frmula donde aparecen varias variables de tupla T e (variable libre) - s e (variable lmite) Las frmulas se compone de tomos: 28 Lenguajes de consulta s e r; s variable de tupla y r relacin s[x] O u[y], s, u variables de tupla; x, y atributos sobre s y u respectivamente; O operador (>, <, >=, =, <>, etc) s[x] O c; c constante. Las frmulas se construyen a partir de tomos: Un tomo es una frmula P1 frmula ~ P1 frmula P1, P2 frmula P1 v P2, P1^ P2, P1 P2 frmulas P1(s) frmula que contiene variable tupla libre s s e r(P1(s)) y - s e r(P1(s)) frmulas 29 Lenguajes de consulta Seguridad de expresiones { t / ~ ( t e prestamo) } infinito (todas las tuplas que no estn definidas en la tabla, pero que se pueden formar a partir del dominio de los atributos=
Clculo relacional de dominios Se utilizan variables de dominio que toman valores del dominio de un atributo (en lugar de tuplas completas) Definicin formal: 30 Lenguajes de consulta Seguridad de expresiones: similar a CRT Operaciones de Updates: solo para AR Agregar tuplas r : r E (r relacin y E nueva tupla Eliminar tuplas r : r E Actulizacin de datos o A : E ( r ) Ej: o saldo : saldo * 1.05 ( depsito ) 31 Lenguajes de consulta Expresin { <x 1 ,,x n > / P <x 1 ,,x n > }; <x 1 ,,x n > variables de dominio y P frmula tomos definidos como el CRT Frmulas definidas como el CRT Dada la Tabla (nombre_sucursal, nro_prestamo, nombre_cte, cantidad_prestada) Ej17: todos los datos simpre que se presten ms de 1200$ { <a,b,c,d> / <a,b,c,d> e tabla ^ d > 1200 } Ej18: el cliente con prstamo mayor de 1200$ { <a> / - b,c,d <a,b,c,d> e tabla ^ d > 1200} Ej19: cliente y monto del prstamo de aquellos clientes de La Plata { <c,d> / - b, l ( <b,l,c,a> e tabla ^ b=La Plata) ^ - y (<c,y,d> e cliente) }