280 likes | 603 Views
IBD . Clase 14. 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é).
E N D
IBD Clase 14
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. IBD - CLASE 14
Lenguajes de consulta • Á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
Lenguajes de consulta • 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$ IBD - CLASE 14
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. IBD - CLASE 14
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. IBD - CLASE 14
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 IBD - CLASE 14
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 IBD - CLASE 14
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 IBD - CLASE 14
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
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
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 IBD - CLASE 14
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
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 IBD - CLASE 14
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
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
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
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. IBD - CLASE 14
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 IBD - CLASE 14
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
Lenguajes de consulta • 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
Lenguajes de consulta • 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
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 IBD - CLASE 14
Lenguajes de consulta • 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
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 IBD - CLASE 14
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. IBD - CLASE 14