Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Los lenguajes basados en el cálculo relacional son descriptivos, mientras que los
algebraicos son prescriptivos.
Si X1, X2, …, Xn son relaciones deben ser compatibles respecto la unión (tener
idénticas cabeceras).
Una variable de tupla se mueve sobre la relación o relaciones y en un determinado
momento representa indistintamente una tupla cualquiera de la relación especificada.
Sobre una misma relación es posible definir más de una variable de tupla.
En una misma expresión pueden intervenir varias variables de tupas referidas a la
misma o a distintas relaciones.
Una ocurrencia de variable es ligada (acotada) si sobre ella actúa un cuantificador
(EXISTS, FORALL) o está dentro del alcance de un cuantificador, que actúa sobre la
misma variable. Cualquier otra ocurrencia que no cumpla lo anterior es libre.
Operador
Determinará la acción que hay que realizar con los datos seleccionados (recuperación,
inserción, borrado o modificación ). En el cálculo relacional puro se suele omitir al
tratarse siempre de una consulta.
Ejemplos
SX.S#
SNUM=SX.S#, SP.S#
SX.S#, SX.CIUDAD, SPX.P#
Predicado
Especifica la condición que deben verificar las tuplas a fin de ser seleccionadas, y se
construye con la ayuda de los símbolos visuales del cáculo de predicados.
Debe ser una fórmula bien formada (fbf):
Las variables se asocian a las tuplas.
Las constantes se asocian a los valores de los dominios subyacentes a los
atributos.
Los operadores son los permitidos de comparación (<.< =, >,>=, =, <>), los
lógicos ( NOT, AND, OR), así como los cuantificadores existencial (EXISTS) y
universal (FORALL).
EXPRESIONES
::= comparación
NOT fbf
Comparación AND fbf
Comparación OR fbf
IF comparación THEN fbf
EXISTS variable (fbf)
FORALL variable (fbf)
Ejemplo:
Para estos ejemplos se suponen definidas las variabes de tuplas SX y SPX:
RANGE OF SX IS S
RANGE OF SPX IS SP
SX.X
SX.S# WHERE SX.CIUDAD = ‘Londres’
SSUM=SX.S# WHERE SX.CIUDAD = ‘Londres’
SX.S#, SX.CIUDAD WHERE EXISTS SPX (SPX.S# = SX.S# AND SPX.P# = ‘P2’)
Se usa para indicar que existe una tupla de un tipo particular en una relación.
RANGE OF PX IS P
RANGE OF SPX IS SP
PX.CIUDAD WHERE EXISTS SPX ( SPX.P# = PX.P# AND SPX.S# = ‘S2’)
fbf
fbf
“Si para cada tupla dada de PX existe una tupla en SPX tal que SPX.P# = PX.P# y
SPX.S# = ‘S2’, entonces PX.CIUDAD es incluida en la relación solución”
Indica que una condición se aplica a todas o a cada tupla de algún tipo ( es equivalente a
la operación de división en el álgebra relacional)
Ejemplo:
Mostrar todos los campos de los proveedores que suministran todas las partes.
RANGE OF SX IS S
RANGE OF SPX IS SP
RANGE OF PX IS P
fbf
fbf
ALGUNOS EJEMPLOS
1. Obtener los números de los proveedores de París cuya situación sea mayor que 20.
2. Obtener todas las parejas de números de proveedor tales que los proveedores estén
en la misma ciudad.
5. Obtener los números de los proveedores que subministran al menos una parte
subministrada por el proveedor S2.
6. Obtener los nombres de los proveedores que subministran todas las partes.
SPX.P# =PX.P#’))
SPX.P# = ’P2’))
8. Obtener los números de los proveedores que subministran al menos todas las partes
subministradas por el proveedor S2.
SPX.S# WHERE FORALL SPY ( SPY.S# < > ‘S2’ OR EXISTS SPZ