Академический Документы
Профессиональный Документы
Культура Документы
AC I O NAL
LO R E L
CÁLC U dova l
e to Sa n
sa B a rr
rí a L u i
a
MSc. M
CÁLCULO RELACIONAL
Herramienta formal utilizada como lenguaje de consulta a bases
de datos relacionales (BDR).
El álgebra El cálculo relacional
relacional (AR) (CR)
Provee de una colección de Formula la relación resultante en
operadores que actúan términos de las relaciones
sobre relaciones para originales.
obtener otras relaciones
1) ¬, ∀, ∃ 2) ∨ 3) ∧ 4) →
F→G ≡ (¬F)∨G
∀x(F) ≡ ¬∃x(¬F)
F∧G ≡ ¬(¬F∨¬G)
CALCULO RELACIONAL DE
TUPLAS - CRT
Es un lenguaje de consulta no procedimental
Describe la información deseada sin dar un
procedimiento específico para obtenerla.
{ t / ∃ s ∈préstamo ( t[número_préstamo]
= s[número_préstamo] ∧ s[cantidad]>1200)}
«el conjunto de todas las tuplas t tal que existe una tupla s de la
relación préstamo para la que los valores de t y s para el atributo
número_préstamo son iguales y el valor de s para el atributo
cantidad es mayor de 1200€».
La variable tupla t sólo se define para el atributo número_préstamo,
dado que es el único atributo para el que se especifica una
condición para t. Por tanto, el resultado es una relación de
(número_préstamo).
Ejemplo de consultas
Encontrar los clientes que tienen un préstamo en Perryridge y las
ciudades en las que viven.
Esta consulta involucra dos relaciones: cliente y préstamo
Se requiere tener dos cláusulas «existe» en la expresión conectadas por y
(∧).
{ t / ∃ s ∈ préstamo(t[nombre_cliente] = s[nombre_cliente] ∧
s[nombre_sucursal] = "Perryridge")
{t | ∃ s ∈ prestatario (t[nombre_cliente] =
s[nombre_cliente]) ∧ ∃ u ∈ impositor (t[nombre_cliente] =
u[nombre_cliente])}
Ejemplo de consultas
Encontrar únicamente aquellos clientes que tienen una
cuenta y un préstamo en Perryridge.
{ t / ∃ s ∈ préstamo(t [nombre_cliente] = s
[nombre_cliente] ∧ s [nombre_sucursal] = "Perryridge")
∧ ∃ u ∈ depósito (t [nombre_cliente] = u
[nombre_cliente] ∧ u[nombre_sucursal = "Perryridge")}
Ejemplo de consultas
Determinar todos los clientes que tienen una cuenta abierta en el banco pero no
tienen concedido ningún préstamo”. La expresión del cálculo relacional de
tuplas para esta consulta es parecida a las que se acaban de ver, salvo en el uso
del símbolo no (¬):
{ t / ∃ u ∈ depósito ( t[nombre_cliente]=u[nombre_cliente] ∧ u
[nombre_sucursal] = "Perryridge“
∧ ¬ ∃ s ∈ préstamo ( t[nombre_cliente]=s[nombre_cliente] ∧ s
[nombre_sucursal] = "Perryridge" ))}
Obsérvese
P ⇒ Q es equivalente lógicamente a ¬P ∨ Q.
Dos expresiones son lógicamente equivalentes si sus tablas
de verdad son iguales.
El empleo de la implicación en lugar de no y o sugiere una
interpretación más intuitiva de la consulta en español.
Ejemplo de consultas con
implicación “è”
Encontrar los clientes que tienen una cuenta en todas las
sucursales situadas en Brooklyn.
Es decir:
el conjunto de todos los clientes (tuplas t (nombre_cliente))
tal que para todas las tuplas u en la relación sucursal,
si el valor de u en el atributo ciudad_sucursal es Brooklyn
entonces el cliente tiene una cuenta en la sucursal cuyo nombre
aparece en el atributo nombre_sucursal de u.
Ejemplo de consultas
Determinar todos los clientes que tienen una cuenta en todas las sucursales de
Arganzuela. Para escribir esta consulta en el cálculo relacional de tuplas se introduce
el constructor “para todo”, denotado por ∀. La notación
∀t ∈ r(Q(t))
El conjunto de todos los clientes (es decir, las tuplas t (nombre_cliente)) tales que, para
todas las tuplas u de la relación sucursal, si el valor de u en el atributo ciudad_sucursal
es Arganzuela, el cliente tiene una cuenta en la sucursal cuyo nombre aparece en el
atributo nombre_sucursal de u”.
Ejemplo de consultas
Si no hay ninguna sucursal en Arganzuela, todos los
nombres de cliente satisfacen la condición. La
primera línea de la expresión de consulta es crítica en
este caso sin la condición
relación,
∃s ∈ r(P (s)) y ∀s ∈ r(P (s))
1 1
P ⇒ P es equivalente a ¬(P ) ∨ P .
1 2 1 2
Seguridad de las
expresiones
Las expresiones del cálculo relacional de tuplas pueden generar relaciones infinitas.
De︎finición
finición formal
Esta consulta indica al sistema que busque tuplas de préstamo que tengan
“Navacerrada” como valor del atributo nombre_sucursal. Para cada tupla de este tipo, el
sistema asigna el valor del atributo número _préstamo a la variable x. El valor de la
variable x se “imprime” (normalmente en pantalla), debido a que el comando P. (acrónimo
de print) aparece en la columna número_préstamo junto a la variable x.
Este resultado es parecido al que se obtendría como respuesta a la siguiente consulta del
cálculo relacional de dominios:
La expresión puede contener tanto variables como constantes. El lado izquierdo de la comparación debe
estar vacío. Las operaciones aritméticas que son compatibles con QBE son =, <, ≤, >, ≥, y ¬.
Exigir que el lado izquierdo esté vacío implica que no se pueden comparar dos variables con nombres
distintos.
Consulta “Determinar el nombre de todas las sucursales que no se hallan en Arganzuela”. Esta consulta
se puede formular del siguiente modo:
QBE- Consultas sobre una
relación
El objetivo principal de las variables en QBE es obligar a ciertas tuplas a tener el mismo
valor en algunos atributos.
consulta “Determinar el número de préstamo de todos los préstamos solicitados
conjuntamente por Santos y Gómez”:
Para ejecutar esta consulta el sistema busca todos los pares de tuplas de la relación
prestatario, que coinciden en el atributo número_préstamo, para los que el valor del atributo
nombre_cliente es “Santos” para una tupla y “Gómez” para la otra.
El sistema muestra el valor del atributo número_préstamo.
En el cálculo relacional de dominios la consulta se podría escribir como:
{⟨p⟩ | ∃ x (⟨x, p⟩ ∈ prestatario ∧ x = “Santos”) ∧ ∃ x (⟨x, p⟩ ∈ prestatario ∧ x = “Gómez”)}
QBE- Consultas sobre una
relación
la consulta “Determinar el nombre de todos los clientes que viven en la misma
ciudad que Santos”:
Datalog
es un lenguaje de consultas no procedimental basado en el
lenguaje de programación lógica Prolog.
Al igual que en el cálculo relacional, el usuario describe la
información deseada sin especificar el procedimiento concreto
para obtener esa información.
La sintaxis de Datalog recuerda la de Prolog.
el significado de los programas en Datalog se define de una
manera puramente declarativa, a diferencia de la semántica
más procedimental de Prolog, por lo que Datalog simplifica la
escritura de consultas sencillas y facilita la optimización de las
consultas.
Resumen
El cálculo relacional de tuplas y el cálculo relacional de
dominios son lenguajes no procedi- mentales que representan
la potencia básica necesaria en un lenguaje de consultas
relacionales. El álgebra relacional básica es un lenguaje
procedimental que es equivalente en potencia a ambas formas
del cálculo relacional cuando se limitan a expresiones seguras.
Los cálculos relacionales son lenguajes rígidos y formales que
no resultan adecuados para los usuarios ocasionales de los
sistemas de bases de datos. Los sistemas comerciales de bases
de datos, por tanto, usan lenguajes con más “azúcar
sintáctico”. Se han considerado dos lenguajes de consultas:
QBE y Datalog.
QBE está basado en un paradigma visual: las consultas tienen
un aspecto muy parecido a tablas.
Resumen
QBE y sus variantes se han hecho populares entre los usuarios poco
expertos de bases de datos, debido a la simplicidad intuitiva del
paradigma visual. El muy usado sistema de bases de datos Access de
Microsoft soporta una versión gráfica de QBE denominada GQBE.
Datalog procede de Prolog pero, a diferencia de éste, tiene una
semántica declarativa que hace que las consultas sencillas sean más
fáciles de formular y que la evaluación de las consultas resulte más
fácil de optimizar.
La definición de las vistas resulta especialmente sencilla en Datalog, y
las vistas recursivas que permite Datalog hacen posible la formulación
de consultas, tales como el cierre transitivo, que no podrían
formularse sin usar la recursividad o la iteración. Sin embargo, en
Datalog no hay normas aceptadas para características importantes
como la agrupación y la agregación. Datalog sigue siendo,
principalmente, un lenguaje de investigación.
BIBLIOGRAFÍA
Ramez Elmasri Fundamentals of Database Systems, 7th Edition,
University of Texas at Arligton y otro . 2016 . http://noahc.me/
Fundamentals%20of%20Database%20Systems%20%287th%20editio
n%29.pdf
https://rua.ua.es/dspace/bitstream/10045/2990/1/
ApuntesBD1.pdf
http://bibliotecadigital.univalle.edu.co/bitstream/10893/10313/3/
Fundamentos%20de%20Bases%20de%20Datos.pdf
https://www.uoc.edu/masters/oficiales/img/913.pdf