1 Álgebra Relacional Universidad de los Andes Demián Gutierrez Mayo 2010.

1 1 Álgebra Relacional Universidad de los Andes Demián Gu...
Author: Ana Isabel Navarrete Moya
0 downloads 2 Views

1 1 Álgebra Relacional Universidad de los Andes Demián Gutierrez Mayo 2010

2 2 Lenguajes de Consulta Base de Datos Relacional Usuario Aplicació n Otros... Consulta Resultado Una consulta es básicamente una pregunta sobre un hecho en particular que puede o no existir en la BD El resultado de una consulta es una colección de registros de la BD (Una Relación) Todos los autos marca Ford... (Lenguaje de consulta) La consulta se realiza sobre las relaciones de la BD

3 3 Tipos de Lenguajes de Consulta ● Son lenguajes que utilizan los usuarios para solicitar información a la BD ● Hay de dos tipos ● Procedimentales ● No-procedimentales ● Lenguajes puros ● Cálculo relacional de tuplas (N/P) ● Cálculo relacional de dominios (N/P) ● Álgebra relacional (P) Estas son las bases de los lenguajes de consulta comerciales

4 4 Tipos de Lenguajes de Consulta ● Lenguajes comerciales ● SEQUEL ● QBE (N/P) ● SQL (P + N/P) ● OQL (P + N/P) (Y todos los [Object Oriented]QL) ●...entre otros El estándar “de facto” usado hoy en día en la industria es el SQL, aunque con la incursión de los SGBDOO, ORMs y tecnologías similares el OQL y sus distintas alternativas y variantes son también bastante utilizados

5 5 Cálculo Relacional de Tuplas Es un lenguaje de consulta formal que permite expresar las consultas a partir de fórmulas bien formadas, donde las variables son interpretadas como variantes sobre las tuplas de las tablas. Fue presentado por Codd en 1972 y se deduce del Cálculo de Predicados – Una consulta en CRT es una expresión de tipo: – {t,e,x | C(t,e,x)} – Donde t,e,x son variables de tuplas y C(t,e,x) es una expresión condicional donde intervienen t,e,x

6 6 Cálculo Relacional de Tuplas ● Átomos: ● Las variables están asociadas a las tuplas de las tablas y se denota como relación(variable). Ej: Modelo(M). ● Los valores constantes están asociados a los valores de los dominios de los atributos y las funciones generadoras de los mismos se denotan como variable.atributo. Ej: M.marca ● Los predicados utilizados se construyen con los operadores de comparación {, , =,  } y constantes. ● Ejm: M.marca  ‘fiat’. A modo informativo

7 7 Cálculo Relacional de Tuplas ● Una fórmula bien formada se define como: – Todo átomo es una fórmula bien formada F. – Si F1 y F2 son fórmulas bien formadas, entonces F1 and F2, F1 or F2, not F1 o not F2 son fórmula bien formada. ● F1 es una fórmula bien formada (Cuantificador existencial, se lee, existe un...). ● ∀ F1 es una fórmula bien formada (Cuantificador universal, se lee, para todo...). A modo informativo

8 8 Cálculo Relacional de Tuplas ● Ejemplo 1: Obtener la fecha de nacimiento y la dirección del empleado (o empleados) cuyo nombre es 'Pedro Pérez': ● Empleado(Cédula, Nombre, Apellido FechaN, Dirección) ● {e.FechaN, e.Dirección | Empleado(e) and e.Nombre = 'Pedro' and e.Apellido = 'Pérez'}

9 9 Cálculo Relacional de Tuplas ● Ejemplo 2: Obtener el nombre y la dirección de todos los empleados que trabajan para el departamento 'Investigación') ● Empleado(Cédula, Nombre, Apellido FechaN, Dirección, NumDpto) ● Dpto(NumDpto, NomDpto) ● {e.Nombre, e.Dirección | Empleado(e) and ( d)(Dpto(d) and e.NumDpto = d.NumDpto and d.NomDpto = 'Investigación')}

10 10 Cálculo Relacional de Tuplas Es un lenguaje de consulta formal que permite expresar las consultas a partir de fórmulas bien formadas, donde cada variable se interpreta como variante sobre el dominio del atributo de una relación. Es similar al Cálculo Relacional de Tuplas y también se deduce del cálculo de predicados

11 11 Cálculo Relacional de Dominios ● Las variables están asociadas a los dominios de los atributos y se denota como relación(att1: variable1, att2: variable2,... ) Ejm: ModeloCarro(modelo: m, marca: c) – los predicados utilizados se construyen igual que para el cálculo relacional de tuplas

12 12 Cálculo Relacional de Tuplas ● Ejemplo 1: Obtener el nombre y el color de cada producto en almacén: ● Producto(nroPro, nombrePro, cantidad, color) ● {N, C | Producto(nombrePro: N, color: C, cantidad > 0)} El resultado, a diferencia del CRT son variables

13 13 Cálculo Relacional de Tuplas ● Ejemplo 2: Obtener los clientes que han comprado al menos un producto de color verde: ● Producto(nroPro, nombrePro, cantidad, color) ● Venta(nroVen, fechaVen, nombreCliente, nroProVen, cantidadVen) ● { V, P | NP Venta(nombreCliente: V, nroProVen: NP) and Producto(nroPro: NP, nombrePro: P, color = ‘verde’) } Se produce producto por medio de la variable NP

14 14 Álgebra Relacional Es un conjunto de operaciones que describen paso a paso (procedimental) la forma de transformar una serie de relaciones en otras para así obtener una respuesta a una consulta R2 = Operación1 (R1) R3 = Operación2 (R2) R5 = Operación2 (R3, R4)... Una operación de AR toma una serie de relaciones de entrada y genera una relación de salida

15 15 Álgebra Relacional (Operaciones) Producto Cartesiano R x Q Selección σ a,b (R) Proyección ∏ a,b (R) Reunión Natural R |x| a,b Q Unión R ∪ Q Intersección R ∩ Q Diferencia R - Q División R Q Reunión Externa R  Q Unión Externa Otras... Funciones Agregadas Operación Asignación Conjunto completo de operaciones del álgebra relacional

16 16 Proyección ∏ placa, marca (Carro) ∏ marca,modelo,color (Carro) Se eliminan todas salvo una de las tuplas repetidas (Ej, )

17 17 Proyección ∏ rombos (R ) R R' Todas las tuplas, pero no completas, sólo se seleccionan algunas columnas... Se eliminan todas las tuplas duplicadas

18 18 Producto Cartesiano Carro = R x Q No es relevante para el producto cartesiano, pero es notable, que en algunas tuplas marcaR = marcaQ

19 19 Producto Cartesiano R'=R x Q R' R Q Cada tupla de uno de los conjuntos se combina con todas las tuplas del otro conjunto

20 20 Selección R = σ marca=Ford Λ color=rojo (Carro) R = σ marca=Ford (Carro)

21 21 Selección σ rombo=negro (R ) RR' Se seleccionan sólo las tuplas que cumplen una condición dada

22 22 Producto / Reunión Natural Carro=R|x| marca Q Sin embargo aquí se perdió información (Descomposición con pérdida) Carro = σ (R.marca=Q.marca) (R x Q) o bien: Carro = R |x| Q

23 23 R'=R  círculo Q R' R Q Producto / Reunión Natural Producto cartesiano con condición de igualdad, se combinan solo las tuplas con valores iguales en ciertos atributos

24 24 Unión R = E  P Se realiza una operación de unión de conjuntos. Se eliminan las tuplas repetidas Las relaciones usadas como operandos deben ser compatibles entre si

25 25 Unión Todas las tuplas de ambas relaciones (que deben ser compatibles) R'=R ∪ Q R' QR Se eliminan todas las tuplas duplicadas

26 26 Intersección R = E  P Las relaciones usadas como operandos deben ser compatibles entre si

27 27 Intersección Sólo las tuplas comunes a ambas relaciones (que deben ser compatibles) R'=R ∩ Q R' QR

28 28 Diferencia R = E - P ¿Cómo sería P – E? Las relaciones usadas como operandos deben ser compatibles entre si

29 29 Diferencia Tuplas que aparecen en la primera relación pero no en la segunda R'=R - Q R' R Q ¿Cómo sería Q – R?

30 30 División Supongamos que tenemos dos relaciones A(x, y) y B(y) donde el dominio de y en A y B, es el mismo. El operador división A  B retorna todos los distintos valores de x tales que para todo valor y en B existe una tupla en A

31 31 División R=EM  M' M'=∏ materia (σ semestre=9 (M) ) R=EM  M' Luego...

32 32 División Tuplas de la primera que contienen a todas o alguna de las tuplas de la segunda R'=R Q R' R Q

33 33 Producto / Reunión Externa R = Prof  cédula=ced_jefe Dpto ¿Dónde están los demás profesores? ¿Dónde está el departamento de Investigación? Reunión Natural

34 34 Producto / Reunión Externa R = Prof  cédula=ced_jefe Dpto Reunión Izquierda

35 35 Producto / Reunión Externa R = Dpto  cédula=ced_jefe Prof Reunión Derecha ¿Es la misma relación resultante que la de la transparencia anterior?

36 36 Producto / Reunión Externa R = Dpto  cédula=ced_jefe Prof

37 37 Producto / Reunión Externa R = Prof  cédula=ced_jefe Dpto

38 38 Producto / Reunión Externa R = σ nombreP=NULO (Dpto  cédula=ced_jefe Prof) ¿Cuáles son los departamentos sin Jefe de Departamento?

39 39 Producto / Reunión Externa R = Dpto  cédula=ced_jefe Prof Reunión Abierta

40 40 Reunión Externa Si algunas tuplas de la izquierda no tienen pareja en la derecha, entonces se rellena con valores nulos R'=R  círculo Q null R' R Q En este caso se está haciendo una reunión externa izquierda (  ), pero se puede hacer también una reunión externa derecha (  ) y una reunión externa completa (  )

41 41 Agrupación (y Funciones Agregadas) R = nacionalidad ℱ avg(edad), count (P) Se agrupan los datos usando algún tipo de criterio y luego se calculan funciones sobre los datos agrupados Posibles funciones de agregación: avg, sum, max, min, count, entre otras

42 42 Agrupación (y Funciones Agregadas) R = círculo ℱ count (R) R 12 1 R' Se agrupan las tuplas en base al valor de cierto atributo y luego se pueden calcular funciones sobre atributos de las tuplas agrupadas

43 43 Ejemplos de Álgebra Relacional ● Esquema de Ejemplo:

44 44 Ejemplos de Álgebra Relacional ● Esquema de Ejemplo:

45 45 Ejemplos de Álgebra Relacional ● TODO: Preguntas!!!

46 46 ● TODO: Falta: ● Ejercicios de Álgebra Relacional

47 47 Lenguaje de Consultas QBE ● Presentado por Zloff en el año 1977 y comercializado desde 1980 por IBM. ● Es un lenguaje de manipulación de datos gráfico. ● La idea de su construcción es la formulación de la consulta mediante un ejemplo de la posible respuesta. ● Está basado en el Cálculo Relacional de Dominios.

48 48 Lenguaje de Consultas QBE ● Las consultas se realizan invocando los esquemas de las tablas objeto de la consulta, las cuales serán desplegadas en forma gráfica en la pantalla. Una vez obtenidas, se posiciona el ratón en la o las columnas deseadas y se indica la operación a realizar.

49 49 Lenguaje de Consultas QBE ● Las variables se indican con el símbolo de subrayado como prefijo, ejemplo: _s, _3, _d5, o se subrayan, ejemplo: s, 3, d5. ● Las constantes se colocan directamente en la columna deseada precedidas por el operador de comparación deseado, si no es =. ● Toda variable desplegable está cuantificada implícitamente por el cuantificador existencial ● Todas las operaciones deben tener como sufijo un punto (Ver tabla siguiente)

50 50 Lenguaje de Consultas QBE Condiciones adicionales se expresan en una ventana aparte, en algunos SGBD. Las funciones cnt, avg, sum, min y max deben aplicarse a variables precedidas con ALL. Si no se desean eliminar las tuplas dobles en una proyección, se coloca P.ALL._v

51 51 Lenguaje de Consultas QBE Producto(nroPro, nombrePro, cantidad, color) Venta(nroVen, fechaVen, nombreCliente, nroProVen, cantidadVen) Compra(nroCom, fechaCom, nombreProveedor, nroProCom, cantidadComp) ● Esquema de Ejemplo:

52 52 Procesamiento de Consultas (Lo Básico) Análisis Léxico (separar en tokens) Optimizador de Consultas Procesamiento de la Consulta en la BD Análisis Sintáctico y Validación SELECT nombre, cedula FROM persona WHERE cedula='12.343.223' UPDATE departamento SET nombre='Control' WHERE codigo=1

53 53 Procesamiento de Consultas (Lo Básico) Conmutatividad de σ σ c1 (σ c2 (R)) = σ c2 (σ c1 (R)) Cascada de ∏ (se ignoran todas menos la última) ∏ lista1 (∏ lista2 (∏ lista3 (R))) = ∏ lista1 Cascada de σ σ c1 and c2 and c3 (R) = σ c1 (σ c2 (σ c3 (R))) Conmutación de σ con ∏ ∏ lista (σ c1 (R)) = σ c1 (∏ lista (R)) Conmutatividad de |x| o  R1  c R2 = R2  c R1

54 54 Procesamiento de Consultas (Lo Básico) ∏ apellido, nombrePR ( σ numeroPR=numPR AND cedulaEMP=cedula AND nombrePR='Acuario' AND horas < 20 ( Empleado|x| Trabaja_En |x|Proyecto)) Proyecto (numeroPR, nombrePR, descripcion) Empleado (cedula, nombre, apellido, fecha_nac) Trabaja_En (cedulaEMP, numPR, horas, categoria)

55 55 Optimización de Consultas X EmpleadoTrabaja_EnProyecto X σ numeroPR=numPR AND cedulaEMP=cedula AND nombrePR='Acuario' AND horas < 20 ∏ apellido, nombrePR

56 56 Optimización de Consultas X EmpleadoTrabaja_EnProyecto X σ numeroPR=numP R ∏ cedulaEMP=cedul a nombrePR='Acuario ' horas < 20 σ σ σ apellido, nombrePR

57 57 Optimización de Consultas X EmpleadoTrabaja_EnProyecto X numeroPR=numP R ∏ cedulaEMP=cedul a nombrePR='Acuario ' horas < 20 σ σ σ σ apellido, nombrePR

58 58 Optimización de Consultas X EmpleadoTrabaja_EnProyecto X numeroPR=numP R ∏ cedulaEMP=cedul a nombrePR='Acuario ' horas < 20 σ σ σ σ ∏ numeroPR, nombrePR apellido, nombrePR ∏ cedulaEMP, numPR, horas ∏ cedulaEMP, nombrePR ∏ cedula, apellid o

59 59 Gracias ¡Gracias!