LENGUAJES DE BASES DE DATOS: CÁLCULO RELACIONAL Francisco Moreno 23/02/2019 Curso Bases de Datos
Cálculo Relacional Es otro lenguaje de consulta para BD relacionales Sirve para consultar información a partir de las relaciones Es un lenguaje que generalmente no se implementa directamente aunque existen prototipos (WinRDBI)* Se basa en el cálculo de predicados de primer orden, donde una relación se expresa mediante un predicado Es cerrado relacionalmente *Ver http://winrdbi.asu.edu Nota: tiene una sintaxis diferente a la vista en el curso. 23/02/2019 Curso Bases de Datos
Cálculo Relacional El álgebra relacional es “secuencial”, “procedimental” El cálculo relacional no es procedimental. Intenta capturar el lenguaje natural: Dice qué se quiere obtener pero no cómo Existen dos variantes: de tuplas y de dominios Se presentará el cálculo relacional de tuplas. 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas Concepto esencial: Tupla La forma general de una consulta* es: {t | P(t)} significa: “el conjunto de tuplas t, tal que el predicado P es verdadero (se cumple) para t”. t se denomina variable de tuplas *Los libros suelen usar diferentes notaciones 23/02/2019 Curso Bases de Datos
Elementos del predicado t Î R: la tupla t pertenece a la relación R t[a]: representa el valor del atributo a en la tupla t Condiciones de comparación entre atributos o entre un atributo y una constante Ejemplos: t1[a] ≠ t1[b] , t1[c] 8, t1[a] = t2[b] 23/02/2019 Curso Bases de Datos
Elementos del predicado Cuantificadores: Existencial ($) y Universal ("). El resultado de su evaluación es falso o verdadero Cuantificador Existencial $ t Î R (Q(t)): Su resultado es verdadero si existe al menos una tupla t en la relación R que satisface el predicado Q. 23/02/2019 Curso Bases de Datos
Elementos del predicado Ejemplos: $ t Î R (t[b] = 11): Es verdadero si existe al menos una tupla en R cuyo atributo b valga 11 $ t Î R (t[a] < 3 Ù t[b] = 8): Es verdadero si existe al menos una tupla en R, cuyo atributo a sea menor que 3 y cuyo atributo b valga 8 23/02/2019 Curso Bases de Datos
Elementos del predicado Cuantificador Universal: " t Î R (Q(t)): Su resultado es verdadero si todas las tuplas t de R satisfacen el predicado Q Ejemplo: " t Î R (t[a] = 8): Es verdadero si todas las tuplas t de R valen 8 en el atributo a 23/02/2019 Curso Bases de Datos
Elementos del predicado Condiciones compuestas: Son combinaciones de los elementos anteriores, mediante los operadores: Ù (and), Ú (or), Ø (not) Ejemplos: (t1 Î R Ù t1[a] = 8) (t1 Î R Ù " t2 Î S (t2[b] > t1[c]) 23/02/2019 Curso Bases de Datos
Elementos del predicado El cuantificador universal " se puede expresar en términos del cuantificador existencial $ así: " t Î R (Q(t)) ≡ Ø $ t Î R (ØQ(t)) Un ejemplo en lenguaje natural: Todos los clientes tienen código ≡ No existe un cliente que no tenga código 23/02/2019 Curso Bases de Datos
Elementos del predicado La variable asociada con un cuantificador solo tiene existencia (validez) dentro del predicado correspondiente, es decir: $ t Î R (Q(t)) La variable t solo tiene validez dentro del predicado Q. Por lo tanto, el predicado: t1 Î R Ù " t2 Î S (t2[b] > t1[c]) Ù t2[b]=10 Es inválido ya que t2 no existe por fuera del cuantificador ". Note que t1 sí puede aparecer dentro del cuantificador. Se dice que t1 es una variable libre y t2 es una variable ligada. 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas Sean las relaciones: EST ced nom edad 10 Pedra 14 20 Olgo 29 50 Ana 30 PROF ced nom edad 45 Adam 14 26 Lisa 29 50 Ana 30 34 Cristina 32 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas Ejemplos: Imprimir la información de todos los estudiantes Igual que a) pero solo aquellos estudiantes mayores de 25 años Igual que a) pero solo imprimir las cédulas Imprimir solo las cédulas de los estudiantes mayores de 25 años Igual que a) pero solo imprimir las cédulas y los nombres 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas a) {t | t Î EST} b) {t | t Î EST Ù t[edad] > 25} c) {t | $ s Î EST (t[ced] = s[ced])} En esta notación es un error: {t[ced] | t Î EST} d) {t | $ s Î EST (t[ced] = s[ced] Ù s[edad] > 25)} e) {t | $ s Î EST (t[ced] = s[ced] Ù t[nom] = s[nom])} Nótese que para proyectar solo algunos atributos de una relación se debe usar el cuantificador existencial: Consultas c), d) y e). 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas f) Imprimir las cédulas de los estudiantes que también son profesores g) Imprimir las cédulas de todos los estudiantes y todos los profesores h) Imprimir las cédulas de los estudiantes que no son profesores 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas f) {t | $ s Î EST (t[ced] = s[ced]) Ù $ w Î PROF (t[ced] = w[ced])} g) {t | $ s Î EST (t[ced] = s[ced]) Ú h) {t | $ s Î EST (t[ced] = s[ced]) Ù Ø $ w Î PROF (t[ced] = w[ced])} 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas Supóngase las relaciones A (a,b,c) y B (d,e,f) su producto cartesiano en cálculo es: i) {t | $ r Î A ($ s Î B ( t[a] = r[a] Ù t[b] = r[b] Ù t[c] = r[c] Ù t[d] = s[d] Ù t[e] = s[e] Ù t[f] = s[f] ) } Y el renombrado se puede lograr así: j) {t | $ e Î EST (t[ced AS cédula] = e[ced]} 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas Con los elementos presentados se pueden lograr los equivalentes a las operaciones del álgebra: restricción, proyeccion (ver c)), unión (ver g)), intersección (ver f)), diferencia (ver h)), producto (ver i)), renombrado (ver j)) La reunión (join) y la división se pueden derivar a partir de las otras operaciones No se presentará para el cálculo un operador de agregación análogo al Ģ del álgebra 23/02/2019 Curso Bases de Datos
Cálculo Relacional de Tuplas Por lo tanto, cualquier consulta* expresada mediante álgebra relacional se puede escribir también en cálculo relacional de tuplas Ambos lenguajes tienen la misma potencia expresiva * Excepto ciertas consultas realizadas con el operador de agregación Ģ, ya que no se presentó la extensión de agregados para el cálculo. 23/02/2019 Curso Bases de Datos