1. Bases de datos
Unidad 4 – Modelo
Relacional
Lenguajes de consulta formales
Mónica María Rojas Rincón
mmrojas@elpoli.edu.co
Oficina: P19-142
2. Lenguajes de consulta formales
•Un lenguaje de consulta sirve para que los usuarios soliciten
información de la BD.
•Lenguaje de alto nivel
• Álgebra Relacional.
• Cálculo Relacional.
2
4. 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 2 variantes: de Tuplas y de Dominios
• Nos concentraremos en el Cálculo Relacional de Tuplas.
4
5. Cálculo Relacional de Tuplas
• Concepto básico: Tupla
• Una consulta se escribe así:
{t / P(t)}
significa: “el conjunto de tuplas t, tal que el predicado P es
verdadero (se cumple) para t”
5
6. Cálculo Relacional de Tuplas
Elementos del predicado:
• t r : la tupla t está contenida en la relación r
• t[a] : significa el valor del atributo a de la tupla t
• Condiciones de comparación: (>,>=,<,<=, =, ≠)
Comparaciones entre atributos o entre un
atributo y una constante
Ejemplos: t1[a] ≠ t1[b] , t1[c] > 8, t1[a] = t2[b]
6
7. Cálculo Relacional de Tuplas
• Cuantificadores: Existencial ($) y Universal ("). Evalúan a falso o
verdadero
• Cuantificador Existencial
$ t r (Q(t)): Evalúa a verdadero si existe
al menos una tupla t de la relación r que
cumple el predicado Q.
Ejemplos:
• $ t r (t[b] = 11): Es verdadero si existe al menos una tupla en r
cuyo atributo b valga 11
• $ t r (t[b] < 3 t[a]=8): Es verdadero si existe al menos una tupla
en r, cuyo atributo b sea menor que 3 y cuyo atributo a sea igual a 8 7
8. Cálculo Relacional de Tuplas
• Cuantificador Universal:
" t r (Q(t)): Evalúa a verdadero si todas las tuplas t de r
cumplen el predicado Q
Ejemplo:
• " t r (t[a]= 8): Verdadero si todas
las tuplas t de r tienen un valor de 8 en el
atributo a
8
9. Cálculo Relacional de Tuplas
• 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])
9
10. Cálculo Relacional de Tuplas
El cuantificador universal " puede ser
expresado en términos del cuantificador
existencial $ así:
" t r (Q(t)) ≡ $ t r (Q(t))
Un ejemplo en lenguaje natural:
Todos los clientes tienen nombre ≡
No existe un cliente que No tenga nombre
10
11. Cálculo Relacional de Tuplas
• La variable asociada a un cuantificador sólo tiene
existencia (validez) dentro del predicado
correspondiente, es decir:
$ t r (Q(t))
La variable t sólo tiene validez dentro del predicado Q.
Por lo tanto la condición:
t1 r " t2 s (t2[b] > t1[c]) t2[z]=10
Es inválida ya que t2 no existe por fuera del cuantificador
".
Note que t1 si puede aparecer dentro del cuantificador.
Se dice t2 que es una variable ligada y t1 es libre. 11
12. Cálculo Relacional de Tuplas
• Sean las relaciones:
12
Est
Ced Nom Edad
10 Pedro 14
20 Olga 29
50 Ana 30
Prof
Ced Nom Edad
45 Gloria 14
26 Dario 29
50 Ana 30
34 Cristina 32
13. Cálculo Relacional de Tuplas
a) Imprimir la información de todos los estudiantes
{t/ t Est}
b) Igual que a) pero sólo aquellos estudiantes mayores de
25 años
{t/ t Est t[edad] > 25}
c) Igual que a) pero sólo imprimir las cédulas
{t/ $ s Est (t[ced] = s[ced])}
d) Imprimir sólo las cédulas de los estudiantes mayores de
25 años
{t/ $ s Est (t[ced] = s[ced] s[edad] >25)}
13
Nótese que para proyectar sólo algunos atributos de una relación se
requiere utilizar el cuantificador existencial
14. Cálculo Relacional de Tuplas
e) Igual que a) pero solo imprimir las cédulas y los
nombres
{t/ $ s Est (t[ced]=s[ced] t[nom]= s[nom])}
f) Imprimir las cédulas de los estudiantes que
también son profesores
{t/ $ s Est (t[ced] = s[ced])
$ w Prof (t[ced] = w[ced])} 14
15. Cálculo Relacional de Tuplas
g) Imprimir las cédulas de todos los estudiantes y
todos los profesores
{t/ $ s Est (t[ced] = s[ced])
$ w Prof (t[ced] = w[ced])}
h) Imprimir las cédulas de los estudiantes que no son profesores
{t/ $ s Est (t[ced] = s[ced])
$ w Prof (t[ced] = w[ced])}
15
16. 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])}
16
17. Cálculo Relacional de Tuplas
• Ya con los elementos anteriores se pueden lograr los
equivalentes a las operaciones del álgebra: restricción,
proyección (ver consulta 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
similar al Ģ del álgebra
• Por lo tanto cualquier consulta (Excepto ciertas
consultas realizadas con el operador de agregación Ģ)
expresada mediante Álgebra Relacional se puede
escribir también en Cálculo Relacional de Tuplas
• Ambos lenguajes tienen la misma potencia expresiva
17
18. Refencias
Basado en:
• Abraham Silberschatz, et. Al. Fundamentos de Bases de Datos.
Cuarta Edición. 2004. Pág. 75 - 78
• Claudia Jimenez. Bases de datos. Universidad Nacional (Medellín)
http://www.unalmed.edu.co/~csjimene/pub2/bd.pdf
• Margarita Hincapie. Notas de clase Bases de Datos. Politécnico
Colombiano Jaime Isaza Cadavid.
18