Você está na página 1de 32

Calculo

Relacional
Base de Datos

Monica
Caniupan
mcaniupa@ubiobio.cl
Universidad del Bo-Bo

Marzo 2015


Calculo
Relacional

El calculo
relacional, a diferencia del AR, es un lenguaje declarativo
El CR nos permite expresar las consultas sin decir como obtener las respuestas

Existen dos variantes del CR:


1
2

Calculo
Relacional de Tuplas (CRT)

Calculo
Relacional de Dominios (CRD)

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

2 / 32


Calculo
Relacional de Tuplas
Una variable tupla es una variable que adopta como valores las tuplas de una

relacion
de valores a una variable tupla tiene el mismo
Es decir, cualquier asignacion
numero
y tipo de atributos

ALUMNOS:
Ejemplo: Consideremos la relacion
ID
11

ALUMNOS
NOMBRE EDAD
maria
20

Si X es una variable de tipo tupla entonces le podemos asignar la tupla en


ALUMNOS:
X .ID = 11, X .NOMBRE =0 maria0 , X .EDAD = 20

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

3 / 32


Calculo
Relacional de Tuplas

Una consulta en CRT es de la forma:

{T | p(T )}

donde T es una variable tupla y p(T ) denota una formula


que describe T
El resultado de esta consulta es el conjunto de todas las tuplas t para las cuales

la formula
p(T ) se evalua
como verdadera con T = t

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

4 / 32

Ejemplo: CRT
ALUMNOS:
Dada la relacion
ID
11
12
13

ALUMNOS
NOMBRE EDAD
pedro
21
luis
22
juan
20

La consulta: Encontrar los alumnos con edad mayor a 20 anos


se expresa por:

{x | x ALUMNOS x .EDAD > 20}


La respuesta a la consulta es:
ID
11
12

Base de Datos (Universidad del Bo-Bo)

NOMBRE
pedro
luis

Calculo
Relacional

EDAD
21
22

Marzo 2015

5 / 32

Sintaxis de Consultas en CRT

R , S variables tuplas con atributos a, b


Sean Rel el nombre de una relacion,
respectivamente, i.e. R .a, S .b
Y sea op uno de los siguientes operadores: {<, >, =, 6, >, 6=}

Una formula
atomica
es:
R Rel,
x ALUMNOS
R .a op S .b,
x .EDAD = y .EDAD
R .a op c, con c constante,
x .EDAD > 20
c op R .a, con c constante,
20 < x .EDAD

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

6 / 32

Sintaxis de Consultas en CRT

Una formula
se define recursivamente de la siguiente manera:

Toda formula
atomica
p es una formula

lo son:
Si p y q son formulas,
tambien
p,
(p q ),
(p q ),
(p q )

R (p(R )), donde R es una variable tupla


R (p(R )), donde R es una variable tupla
Los cuantificadores , limitan la variable R

Una variable es libre en una formula


(o subformula)
si la (sub)formula
no contiene
ninguna ocurrencia de cuantificadores que la limiten
En una consulta en CRT de la forma: {T | p(T )}, T es la unica
variable libre

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

7 / 32


Semantica
de Consultas en CRT

La semantica
de las consultas nos permite saber cual es el conjunto respuesta
para una consulta de la forma {T | p(T )}
La respuesta a una consulta expresada en CRT es el conjunto de todas las tuplas

t para las cuales la formula


p(T ) es verdadera cuando a la variable T se le
asigna el valor de t
Aqu surgen algunas preguntas:
Que significa asignar valores a una variable?

Cuales
son los posibles valores a asignar?

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

8 / 32


Semantica
de Consultas en CRT

Cada consulta se evalua


sobre una instancia de la BD

Supongamos que cada variable libre de la formula


F = p(T ) esta ligada a un
valor tupla
dada de tuplas a variables con respecto a la instancia de BD,
Para una asignacion
F se evalua
como verdadera si se cumple alguna de las siguientes condiciones:

R
F es la formula
atomica
R Rel y a R se le asigna una tupla de la relacion
R .a op S .b, R .a op c, c op R .a, con c constante y las tuplas
F es una comparacion

asignadas a R e S tienen los valores de R .a y S .b que hacen que la comparacion


sea verdadera

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

9 / 32


Semantica
de Consultas en CRT

F es de la forma:
p y p no es verdadera,
p q y ambas p y q son verdaderas,
p q y al menos una de ellas es verdadera,
p q y q es verdadera siempre que p es verdadera
de tuplas a las variables
F es de la forma R (p(R )) y hay alguna asignacion

libres de p(R ), incluyendo la variable R, que hace que la formula


sea verdadera
de tuplas a las variables
F es de la forma R (p(R )) y existe alguna asignacion

libres de p(R ) que hace que la formula


p(R ) sea verdadera independiente de la
tupla que se asigne a R

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

10 / 32

Ejemplo: Consultas en CRT

Consideremos el siguiente esquema e instancia de BD:

IDC
1
2

ID
10
11
12

CUR
NOMBREC
BD1
BD2

ALUMNOS
NOMBRE EDAD
luis
20
pedro
21
antonio
23

Base de Datos (Universidad del Bo-Bo)

ID
10
10
11

INS
IDC NOTA
1
70
2
85
2
80

CIUDAD
concepcion
chillan
concepcion

Calculo
Relacional

Marzo 2015

11 / 32

Ejemplo: Consultas en CRT

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q1 : Encontrar el nombre y la edad de los alumnos que viven en concepcion


{x | y ALUMNOS (y .CIUDAD =0 concepcion0
x .NOMBRE = y .NOMBRE x .EDAD = y .EDAD )}
x es una variable tupla con dos atributos NOMBRE y EDAD, ya que son los unicos

campos de x mencionados en la consulta

La respuesta a Q1 es:
NOMBRE
luis
antonio

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

EDAD
20
23

Marzo 2015

12 / 32

Ejemplo: Consultas en CRT

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q2 : Encontrar el nombre de los alumnos, id del curso y nota obtenida por los
alumnos

{x | y ALUMNOS z INS (y .ID = z .ID x .NOMBRE = y .NOMBRE


x .IDC = z .IDC x .NOTA = z .NOTA)}
La respuesta a Q2 es:
NOMBRE
luis
luis
pedro

Base de Datos (Universidad del Bo-Bo)

IDC
1
2
2

Calculo
Relacional

NOTA
70
85
80

Marzo 2015

13 / 32

Ejemplo: Consultas en CRT

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q3 : Encontrar el nombre de los alumnos que inscribieron el curso con IDC = 1


{x | y ALUMNOS z Ins(y .ID = z .ID z .IDC = 1
x .NOMBRE = y .NOMBRE )}
La respuesta a Q3 es:
NOMBRE
luis

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

14 / 32

Ejemplo: Consultas en CRT

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q4 : Encontrar el nombre de los alumnos que inscribieron el curso BD2


{x | y ALUMNOS z INS w CUR (y .ID = z .ID
z .IDC = w .IDC w .NOMBREC = 0 BD2 0 x .NOMBRE = y .NOMBRE )}
La respuesta a Q4 es:
NOMBRE
luis
pedro

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

15 / 32

Ejemplo: Consultas en CRT

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q5 : Encontrar el nombre de los alumnos que inscribieron al menos dos cursos


{x | y ALUMNOS z INS w INS (y .ID = z .ID
z .ID = w .ID z .IDC 6= w .IDC x .NOMBRE = y .NOMBRE )}
La respuesta a Q5 es:
NOMBRE
luis

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

16 / 32

Ejemplo: Consultas en CRT

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q6 : Encontrar el nombre de los alumnos que inscribieron todos los cursos


{x | y ALUMNOS z CUR (w INS (y .ID = w .ID
w .IDC = z .IDC x .NOMBRE = y .NOMBRE ))}
La respuesta a Q6 es:
NOMBRE
luis

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

17 / 32


Calculo
Relacional de Dominios (CRD)

Una variable de dominio es una variable que toma valores del dominio de algun

atributo
Una consulta en CRD es de la forma:

{hx1 , . . . , xn i | p(x1 , . . . , xn )}
donde:
cada xi es una variable de dominio o una constante y

p(x1 , . . . , xn ) es una formula


del CRD cuyas unicas
variables libres son aquellas en

x1 , . . . , xn

El resultado una consulta en CRD es el conjunto de todas las tuplas hx1 , . . . , xn i

para las que la formula


p(x1 , . . . , xn ) se evalua
como verdadera

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

18 / 32

Ejemplo: Consulta en CRD


ALUMNOS:
Dada la relacion
ID
10
11
12

ALUMNOS
NOMBRE EDAD
luis
20
pedro
21
antonio
23

CIUDAD
concepcion
chillan
concepcion

La consulta: Listar el ID y NOMBRE de los alumnos se expresa por:

{hx , y i | z , w (hx , y , z , w i Alumnos)}


El resultado de esta consulta es:
ID
10
11
12

Base de Datos (Universidad del Bo-Bo)

NOMBRE
luis
pedro
antonio

Calculo
Relacional

Marzo 2015

19 / 32

Sintaxis de Consultas en CRD

Una formula
CRD se define de manera muy similar a una formula
en CRT, pero
ahora se trabaja con variables de dominio
Rel con n atributos, las variables de tipo dominio X , Y y sea op
Dada una relacion
uno de {<, >, =, 6, >, 6=}

Son formulas
atomicas
en CRD:
hx1 , . . . , xn i Rel con cada xi siendo una variable o una constante
X op Y
X op c o c op X , con c constante

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

20 / 32


Formulas
en CRD

Una formula
se define recursivamente de la siguiente manera:

Toda formula
atomica
p es una formula

lo son: p, p q, p q, p q
Si p y q son formulas,
tambien
X (p(X )), donde X es una variable de dominio
X (p(X )), donde X es una variable de dominio

Los cuantificadores , limitan la variable X


En una consulta CRD {hx1 , . . . , xn i | p(x1 , . . . , xn )}, las variables xi para 1 i n
son las unicas
variables libres

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

21 / 32

Ejemplo: Consultas en CRD

Consideremos el siguiente esquema e instancia de BD:

IDC
1
2

ID
10
11
12

CUR
NOMBREC
BD1
BD2

ALUMNOS
NOMBRE EDAD
luis
20
pedro
21
antonio
23

Base de Datos (Universidad del Bo-Bo)

ID
10
10
11

INS
IDC NOTA
1
70
2
85
2
80

CIUDAD
concepcion
chillan
concepcion

Calculo
Relacional

Marzo 2015

22 / 32

Ejemplo: Consultas en CRD

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q1 : Encontrar el nombre y la edad de los alumnos que viven en concepcion


{hy , z i | xw (hx , y , z , w i ALUMNOS w =0 concepcion0 )}
La consulta expresada en CRT es:
{x | y ALUMNOS (y .ciudad =0 concepcion0
x .nombre = y .nombre x .edad = y .edad )}

La respuesta a Q1 es:
NOMBRE
luis
antonio

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

EDAD
20
23

Marzo 2015

23 / 32

Ejemplo: Consultas en CRD

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q2 : Encontrar el nombre de los alumnos, id del curso y nota obtenida por los
alumnos

{hx2 , y2 , y3 i | x1 x3 x4 y1 (hx1 , x2 , x3 , x4 i Alumnos hy1 , y2 , y3 i Ins


x1 = y1 )}
La respuesta a Q2 es:
NOMBRE
luis
luis
pedro

Base de Datos (Universidad del Bo-Bo)

IDC
1
2
2

Calculo
Relacional

NOTA
70
85
80

Marzo 2015

24 / 32

Ejemplo: Consultas en CRD

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q3 : Encontrar el nombre de los alumnos que inscribieron el curso con IDC = 1


{hx2 i | x1 x3 x4 y1 y2 y3 (hx1 , x2 , x3 , x4 i Alumnos
hy1 , y2 , y3 i Ins x1 = y1 y2 = 1)}
La respuesta a Q3 es:
NOMBRE
luis

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

25 / 32

Ejemplo: Consultas en CRD

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q4 : Encontrar el nombre de los alumnos que inscribieron el curso BD2


{hx2 i | x1 x3 x4 y1 y2 y3 z1 z2 (hx1 , x2 , x3 , x4 i Alumnos hy1 , y2 , y3 i Ins
hz1 , z2 i Cur x1 = y1 y2 = z1 z2 =0 BD2 0 )}
La respuesta a Q4 es:
NOMBRE
luis
pedro

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

26 / 32

Ejemplo: Consultas en CRD

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q5 : Encontrar el nombre de los alumnos que inscribieron al menos dos cursos


{hx2 i | x1 x3 x4 y2 y3 z2 z3 (hx1 , x2 , x3 , x4 i Alumnos hx1 , y2 , y3 i Ins
hx1 , z2 , z3 i Ins y2 6= z2 )}
La respuesta a Q5 es:
NOMBRE
luis

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

27 / 32

Ejemplo: Consultas en CRD

Esquema: ALUMNOS (ID , NOMBRE , EDAD , CIUDAD ), CUR (IDC , NOMBREC ),


INS (ID , IDC , NOTA)

Q6 : Encontrar el nombre de los alumnos que inscribieron todos los cursos


{hx2 i | x1 x3 x4 (hx1 , x2 , x3 , x4 i Alumnos z1 z2 hz1 , z2 i Cur
(y1 y2 y3 (hy1 , y2 , y3 i Ins y1 = x1 y2 = z1 )))}
La respuesta a Q6 es:
NOMBRE
luis

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

28 / 32

Poder de Expresividad del AR y CR

El AR y el CR tienen el mismo poder de expresividad


Toda consulta expresada en AR puede ser expresada en CR
Que pasa con las consultas expresadas en CR? Pueden ser expresadas en
AR?
Ejemplo: Que expresa la siguiente consulta?

{hx1 , x2 , x3 , x4 i | (hx1 , x2 , x3 , x4 i Alumnos)}

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

29 / 32

Poder de Expresividad del AR y CR

La consulta {hx1 , x2 , x3 , x4 i | (hx1 , x2 , x3 , x4 i Alumnos)} es sintacticamente


correcta
Sin embargo, existe un problema, la consulta pregunta por todas las tuplas que
en la tabla ALUMNOS
no estan
El conjunto respuesta es entonces infinito
Este tipo de consultas se denominan consultas inseguras

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

30 / 32

Consultas Seguras

Consideremos una consulta Q y un conjunto I de instancias de relaciones, con


en Q
una instancia por cada relacion
Sea Dom(Q , I ) el conjunto de todas las constantes que aparecen en las
relaciones en I o en la consulta Q
es finito
Dado que I esta restringido a ser finito, Dom(Q , I ) tambien
Una consulta en CR es segura si:
1

Para cualquier conjunto I el conjunto respuesta para Q contiene solo valores que
en Dom(Q , I )
estan
Por cada X (p(X )) en Q si encontramos valores para X que hacen verdadera la

formula,
entonces X contiene solo constantes en Dom(Q , I )
en Dom(Q , I )
Por cada X (p(X )) en Q si asignamos valores para X que no estan

entonces la formula
debe ser verdadera

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

31 / 32

Consultas Seguras

La consulta {hx1 , x2 , x3 , x4 i | (hx1 , x2 , x3 , x4 i Alumnos)} no es segura porque:


en Dom(Q , I )
La respuesta a esta consulta incluye valores que no estan

Toda consulta que puede ser expresada por medio de una consulta segura en CR
ser expresada en AR
puede tambien

Base de Datos (Universidad del Bo-Bo)

Calculo
Relacional

Marzo 2015

32 / 32

Você também pode gostar