La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

IBD Clase 14.

Presentaciones similares


Presentación del tema: "IBD Clase 14."— Transcripción de la presentación:

1 IBD Clase 14

2 Lenguajes de consulta Lenguajes de consulta: utilizados para operar con la BD. Procedurales: (instrucciones para realizar secuencia de operaciones) (qué y cómo) No procedurales: (solicita directamente la información deseada) (qué). Nos concentraremos primero en las consultas, dejando de lado updates. Clase 6 IBD - CLASE 14 UNLP - Facultad de Informática

3 Lenguajes de consulta Operaciones fundamentales Álgebra Relacional:
Lenguaje de consultas procedural Operaciones de uno o dos relaciones de entrada que generan una nueva relación como resultado Operaciones fundamentales Unitarias Selección Proyección Renombre Binarias Producto cartesiano Unión diferencia IBD - CLASE 14 UNLP - Facultad de Informática

4 Lenguajes de consulta Selección: Operador  Supongamos la tabla
Prestamo = (nombre_sucursal, monto, dirección) Selección: Operador  Selecciona tuplas que satisfacen un predicado dado. La condición puede tener conectivos lógicos (And, Or, Not) y operadores de comparación <>, >, <, >=, <=, = Ej1: prestamos otorgados por la sucursal XXX. Ej2: prestamos otorgados por la sucursal XXX y con monto superior a 1200$ Ejemplo uno: nombre-sucursal = “XXX” (prestamo) Ejemplo dos: nombre-sucursal = “XXX” and monto > (prestamo) IBD - CLASE 14 UNLP - Facultad de Informática

5 Lenguajes de consulta Proyección: Operador 
Devuelve la relación argumento con columnas omitidas. Si quedan tuplas repetidas se excluyen. Ej3: nombres de sucursal que figuran en préstamo Ej4: sucursal cuyo monto sea superior a $10000. Ejemplo tres: nombre-sucursal (prestamo) Ejemplo cuatro: nombre-sucursal (monto > (prestamo)) IBD - CLASE 14 UNLP - Facultad de Informática

6 Lenguajes de consulta Producto Cartesiano: Operador x
Conecta dos entidades de acuerdo a la definición matemática de la operación. Tabla Cliente = (nombre_cte, dirección, tel) Opera = (nombre_cte, nombre_banquero, monto) Ej5: cada cliente con sus datos personales y banquero que opera. Ej6: todos los clientes y su dirección, que operan con el banquero YYY. Ejercicio cinco: Cliente x Opera Pero esta consulta anterior da clientes y banqueros que no operan en conjunto, se juntan cada tupla de cliente con cada tupla de opera, esto significa que quedan agrupados tuplas sin sentido, necesariamente debe hacerse la siguiente operación. cliente.nombre-cte= opera.nombre-cte(Cliente x Opera) Notar que se utiliza el identificador de tabla porque los campos se llaman iguales. Ejercicio seis: cliente.nombre-cte, dirección(nombre-banquero= “YYY”(cliente.nombre-cte= opera.nombre-cte(Cliente x Opera))) IBD - CLASE 14 UNLP - Facultad de Informática

7 Lenguajes de consulta Renombrar: Operación 
Permite utilizar la misma tabla en un (por ej.) producto cartesiano. Tabla Cliente = (nombre_cte, dirección, tel) Ej7: clientes que viven en la misma dirección que el cliente ZZZ Ejercicio siete: Subconsulta que permte obtener la dirección de ZZZ, con esto debo hacer un producto con cliente nuevamente dirección( nombre-cte = “ZZZ” (Cliente)) Renombro cliente para hacer la operación cliente2.nombre( cliente2.dirección = cliente.dirección [ dirección {nombre-cte = “ZZZ” (Cliente)} x cliente2 (cliente) ] ) IBD - CLASE 14 UNLP - Facultad de Informática

8 Lenguajes de consulta Unión: Operación 
Equivalente a la unión matemática. Las instancias repetidas se eliminan automáticamente. Las dos tablas deben ser de unión 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) Ej8: clientes que tengan cta corriente o caja ahorro en la sucursal xxx Ejercicio ocho: CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal) (nomcli(sucursal=“XXX”(ctacte)))  (nomcli(sucursal=“XXX”(cahorro))) IBD - CLASE 14 UNLP - Facultad de Informática

9 Lenguajes de consulta Diferencia: Operación -
Equivalente a diferencia de Conjuntos. Las dos tablas deben ser de unión compatibles Ej9: Clientes de la sucursal xxx que tienen tiene ctacte y no tienen caja ahorro Ejercicio nueve: CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal) (nomcli(sucursal=“XXX”(ctacte))) - (nomcli(sucursal=“XXX”(cahorro))) IBD - CLASE 14 UNLP - Facultad de Informática

10 Lenguajes de consulta Definición de Álgebra Relacional:
Una expresión básica en AR consta de Una relación de una Base de Datos Relación constante Una expresión general se construye a partir de sub-expresiones (E1,E2,...En) Expresiones: E1  E2 E1 - E2 E1 x E2 p(E1) P predicado con atributos en E1 s (E1) S lista de atributos de E1 x (E1) X nuevo nombre de E1 IBD - CLASE 14 UNLP - Facultad de Informática

11 Lenguajes de consulta Álgebra Relacional
Operaciones Adicionales: no añaden potencia, solo simplifican consultas comunes Intersección Producto Natural División Asignación IBD - CLASE 14 UNLP - Facultad de Informática

12 Lenguajes de consulta Intersección: Operación 
Equivalente a la Intersección matemática. Se puede definir en funcion de la Unión y Diferencia Ej10: Clientes de la sucursal xxx que tienen tiene ctacte y tienen caja ahorro Ejercicio diez: CTACTE=(nomcli, sucursal) CAHORRO=(nomcli, sucursal) (nomcli(sucursal=“XXX”(ctacte)))  (nomcli(sucursal=“XXX”(cahorro))) ó nomcli ( sucursal=“XXX” { [(ctacte)  (cahorro)] – [ ((ctacte) - (cahorro))  ((cahorro) - (ctacte)) ] } ) IBD - CLASE 14 UNLP - Facultad de Informática

13 Lenguajes de consulta Producto Natural: Operación |x|
Realiza el producto cartesiano con una selección de tuplas “con sentido” eliminando las columnas (atributos) repetidas. Combinacion de Selección 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 común -> R x S= R|x|S R|x|(cond) S = (cond) ( R|x|S ) IBD - CLASE 14 UNLP - Facultad de Informática

14 Lenguajes de consulta Producto Natural Clientes=(nomcli,direccion,tel)
Prestamos=(sucursal,nomcli) Ej11: clientes con préstamos en un banco Ej12: clientes con préstamos en la sucursal XXX 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. Ver ejemplo Ejercicio once: nomcli....(prestamos |x| clientes) Ejercicio doce: nomcli.(sucursal=“XXX“ ( prestamos |x| clientes )) IBD - CLASE 14 UNLP - Facultad de Informática

15 Lenguajes de consulta División: Operación %
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) IBD - CLASE 14 UNLP - Facultad de Informática

16 Lenguajes de consulta Asignación: Operación 
Expresión que asigna a una variable temporal el resultado de una operación. Temp  Operación del Álgebra Ej10: Clientes de la sucursal xxx que tienen tiene ctacte y tienen caja ahorro A  (ctacte)  (cahorro), D1  (ctacte) - (cahorro), D2  (cahorro)- (ctacte) nomcli ( sucursal=“XXX” { A – [ D1  D2 ] } ) IBD - CLASE 14 UNLP - Facultad de Informática

17 Lenguajes de consulta Cálculo Relacional de Tuplas:
No procedural, describe información deseada sin dar un proceso específico para obtener esa información. Utiliza el cálculo de predicados para la formulación de consultas Expresión de consultas { t / P(t) } Conjunto de tuplas tal que P(Predicado) es verdadero en t. Ejemplos: Ej12:clientes con préstamos mayor que 1200$ IBD - CLASE 14 UNLP - Facultad de Informática

18 Lenguajes de consulta Operación de proyección { t / s R / Q(s)}
Ej13: solo el nombre del cliente.(del ej 12) Variable de tupla t se define solo para los atributos deseados Ej14: nombre y ciudad de los clientes con prestamo en la sucursal La Plata. Ej15: clientes con préstamo y depósitos en una sucursal de La Plata. Ejercicio doce: {t / t  Prestamo / t[cantidad] > 1200 } Ejercicio trece: { t /  s  Prestamo / ( t[nombrecte] = s [nombrecte] ^ s[cantidad] > 1200 } Ejercicio catorce: { t /  s  Prestamo / (t[nombrecte]=s[nombrecte] ^ s[sucursal]= ‘La Plata’) ^ u  cliente ( u[nombre]=s[nombre] ^ t [ciudad] = u[ciudad]) } Ejercicio quince: { t /  s  depósito (t[nombrecte]=s[nombrecte] ^ s[sucursal]= ‘La Plata’) ^  u  prestamo (u [ciudad] = ‘La Plata’) } IBD - CLASE 14 UNLP - Facultad de Informática

19 Lenguajes de consulta Operando :
 t  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 Ejercicio dieciseis: {t /  u  sucursal (u[ciudadsucursal]=‘La Plata)   s  deposito (t[nombre]=s[nombre] ^ s[sucursal] = u[sucursal]) } IBD - CLASE 14 UNLP - Facultad de Informática

20 Lenguajes de consulta Definición formal del Cálculo de tuplas Una expresión del Cálculo de tuplas { t / P(t) }, tiene: P fórmula donde aparecen varias variables de tupla T  (variable libre)  s  (variable límite) Las fórmulas se compone de átomos: IBD - CLASE 14 UNLP - Facultad de Informática

21 Lenguajes de consulta Las fórmulas se construyen a partir de átomos:
s  r; s variable de tupla y r relación s[x]  u[y], s, u variables de tupla; x, y atributos sobre s y u respectivamente;  operador (>, <, >=, =, <>, etc) s[x]  c; c constante. Las fórmulas se construyen a partir de átomos: Un átomo es una fórmula P1 fórmula  ~ P1 fórmula P1, P2 fórmula  P1 v P2, P1^ P2, P1  P2 fórmulas P1(s) fórmula que contiene variable tupla libre s   s  r(P1(s)) y  s  r(P1(s)) fórmulas IBD - CLASE 14 UNLP - Facultad de Informática

22 Lenguajes de consulta Cálculo relacional de dominios
Seguridad de expresiones { t / ~ ( t  prestamo) } infinito (todas las tuplas que no están definidas en la tabla, pero que se pueden formar a partir del dominio de los atributos= Cálculo relacional de dominios Se utilizan variables de dominio que toman valores del dominio de un atributo (en lugar de tuplas completas) Definición formal: IBD - CLASE 14 UNLP - Facultad de Informática

23 Lenguajes de consulta Expresión { <x1,…,xn> / P <x1,…,xn> }; <x1,…,xn> variables de dominio y P fórmula Átomos definidos como el CRT Fórmulas definidas como el CRT Dada la Tabla (nombre_sucursal, nro_prestamo, nombre_cte, cantidad_prestada) Ej17: todos los datos simpre que se presten más de 1200$ Ej18: el cliente con préstamo mayor de 1200$ Ej19: cliente y monto del préstamo de aquellos clientes de La Plata Ejercicio diecisiete: { <a,b,c,d> / <a,b,c,d>  tabla ^ d > 1200 } Ejercicio dieciocho: { <a> /  b,c,d <a,b,c,d>  tabla ^ d > 1200} Ejercicio diecinueve: { <c,d> /  b, l ( <b,l,c,a>  tabla ^ b=‘La Plata’) ^  y (<c,y,d>  cliente) } IBD - CLASE 14 UNLP - Facultad de Informática

24 Lenguajes de consulta Operaciones de Updates: solo para AR
Seguridad de expresiones: similar a CRT Operaciones de Updates: solo para AR Agregar tuplas r  r  E (r relación y E nueva tupla Eliminar tuplas r  r – E Actulización de datos A  E ( r ) Ej: saldo  saldo * 1.05 ( depósito ) IBD - CLASE 14 UNLP - Facultad de Informática

25 Lenguajes de consulta Dadas las siguientes tablas
Vive (nombre_persona, calle, ciudad) Trabaja (nombre_persona, nombre_compañía, salario) Situada_en (nombre_compañía, ciudad) Dirige (nombre_persona, nombre_director) Resolver las siguientes consultas Nombre de los empleados que trabajan en la compañía X Nombre de los empleados, que no trabajan en la compañía X Nombre y ciudad en la que trabajan los empleados de la compañía X AR: nombre_persona( nombre_compañía = ‘X’ (trabaja)) CRT: { t /  s  trabaja ^ s[nombre_compania]=‘x’ ^ t[nombre_persona] = s[nombre_persona]} CRD: { n_p /  n_c, s <n_p,n_c,s>  trabaja ^ n_c ‘x’} 2. AR: vive.n_p,calle(n_c =‘x’ (trabaja |x| vive) CRT: { t / ( s  trabaja ^ s[n_c] = ‘X’ ) ^ ( u vive ^ s[n_p] = u [n_p] ^ t[n_p] = u[n_p] ^ t[calle] = u[calle])} CRD: { <a,b> /  c,d (<a,c,d>  trabaja ^ c = ‘X’ ) ^  e (<a,b,e> vive)} 3. Idem anterior con mayor que 1000 IBD - CLASE 14 UNLP - Facultad de Informática

26 Lenguajes de consulta Nombre, calle y ciudad de aquellos que trabajen para X y cobren más de 1000 Empleados que viven en la misma ciudad en la que está la compañía en la que trabajan. Modificar la dirección del empleado Y Eliminar todos los empleados de la compañía X Dar un aumento del 10% a los empleados Dar un aumento del 20% a los directores.  5 AR: vive.nombre_persona (vive.ciudad=situada_en.ciudad ( vive |x| trabaja |x| situada_en ) CRT: { t / ( s  trabaja) ^ ( u  vive ^ u[n_p] = s[n_p] ^ t[n_p] = u[n_p]) ^ ( r  situada_en ^ r[n_c] = s[n_c] ^ u[ciudad] = r[ciudad]) } CRD: { <a> /  b,c (<a,b,c>  trabaja) ^  d,e (<a,d,e> vive ) ^ (<b,e>  situada_en)} Resto es sencillo IBD - CLASE 14 UNLP - Facultad de Informática


Descargar ppt "IBD Clase 14."

Presentaciones similares


Anuncios Google