You are on page 1of 46

lgebra relacional y

Clculo relacional
Diseo de Base de Datos
Ing. Luis Reyes

Objetivos
El significado del trmino completud
relacional.
Cmo construir consultas en lgebra relacional.
Cmo construir consultas en el clculo
relacional de tuplas.

Cmo construir consultas en el clculo


relacional de dominios.
Las categoras de lenguajes de manipulacin de
datos relacionales (DML, Data Manipulation
Language).

Introduccin
El lgebra relacional y el clculo relacional
son lenguajes formales asociados al
modelo relacional.
De manera informal el lgebra relacional
es un lenguaje procedimental (de alto
nivel) y el clculo relacional un lenguaje no
procedimental.
Sin embargo, formalmente, ambos
lenguajes son equivalentes entre s.

lgebra relacional
Las operaciones de lgebra relacional se aplican
a una o ms relaciones para definir otra
relacin sin modificar las relaciones originales.
Tanto los operandos como los resultados son
relaciones de manera que la salida de una
operacin puede utilizarse como entrada de
otra.

lgebra relacional
Existen cinco operaciones bsicas en al
lgebra relacional: seleccin, proyeccin,
producto cartesiano, unin y diferencia de
conjuntos.
Estas permiten realizar la mayora de las
operaciones de extraccin de datos que nos
interesan.

Tambin existen la combinacin, interseccin


y la divisin, que pueden expresarse en
trminos de las cinco operaciones bsicas.

Operaciones de lgebra relacional

Seleccin

Proyeccin

Unin

Interseccin

Producto cartesiano

Diferencia de conjuntos

Operaciones de lgebra relacional

Combinacin
natural

Divisin (rea sombreada)

Semicombinacin

Ejemplo de divisin

Combinacin
externa izquierda

Seleccin (o Restriccin)
predicate (R)
La operacin de seleccin se aplica a
una nica relacin R y define otra
relacin que contiene nicamente
aquellas tuplas de R que satisfacen la
condicin (predicado) especificada.

Ejemplo - Seleccin (o Restriccin)


Enumerar todos los miembros del personal
cuyo salario sea superior a 10.000 euros.

salary > 10000 (Staff)

Proyeccin
col1, . . . , coln(R)
Se aplica a una nica relacin R y define
otra relacin que contiene un
subconjunto vertical de R, extrayendo
los valores de los atributos especificados
y eliminando los duplicados.

10

Pearson Education Limited 1995, 2005

Ejemplo - Proyeccin
Generar una lista de salarios para todo el
personal, mostrando solamente los detalles
referidos a los atributos staffNo, fName,
lName, y salary.
staffNo, fName, lName, salary(Staff)

Unin
RS
La unin de dos relaciones R y S define una
relacin que contiene todas las tuplas de R,
de S o tanto de R como de S, eliminndose
las tuplas duplicadas.
R y S tienen que ser compatibles con
respecto a la unin.

Ejemplo - Unin
Enumerar todas las ciudades en las que
exista una sucursal, o un inmueble en
alquiler.
city(Branch) city(PropertyForRent)

Diferencia de conjuntos
RS
Define una relacin compuesta por las
tuplas que encuentran en la relacin R
pero no en S.
R y S deben ser compatibles con
respecto a la unin.

Ejemplo Diferencia de conjuntos


Enumerar todas las ciudades en las que
exista una sucursal pero no haya
inmuebles en alquiler.
city(Branch) city(PropertyForRent)

Interseccin
RS
Define una relacin compuesta por el
conjunto de todas las tuplas que existen
tanto en R como en S.
R y S deben ser compatibles con
respecto a la unin.
Expresndolo con operaciones bsicas:
R S = R (R S)

Ejemplo - Interseccin
Enumerar todas las ciudades en las que
exista tanto una sucursal como al menos
un inmueble en alquiler.
city(Branch) city(PropertyForRent)

Producto cartesiano
RXS
Define una relacin que es la
concatenacin de cada tupla de la
relacin R con cada tupla de la relacin
S.

18

Pearson Education Limited 1995, 2005

Ejemplo Producto cartesiano


Enumerar los nombres y comentarios de todos
los clientes que hayan visto un inmueble en
alquiler.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo,
comment (Viewing))

Operaciones de combinacin
La combinacin es una derivada del
producto cartesiano.
Equivalente a realizar una operacin de
seleccin utilizando el predicado de
combinacin como frmula se seleccin
sobre el producto cartesiano de las dos
relaciones que funcionan como operando.

Operaciones de combinacin
Existen varias formas de operacin de
combinacin
Combinacin theta
Equicombinacin (un tipo particular
de combinacin theta)
Combinacin natural
Combinacin externa
Semicombinacin

Combinacin Theta (-combinacin)


R
FS
Defina una relacin que contiene
tuplas del producto cartesiano que
satisfacen el predicado F.
El predicado tiene la forma R.ai S.bi
donde puede ser uno de los
operadores de comparacin (<, , >,
, =, ).

Combinacin Theta (-combinacin)


Puede ser reescrita en trminos de las
operaciones bsicas de seleccin y producto
cartesiano.

FS

= F(R S)

Ejemplo - Equicombinacin
Enumerar los nombres y comentarios de
todos los clientes que hayan visitado un
inmueble en alquiler.
(clientNo, fName, lName(Client))
Client.clientNo
= Viewing.clientNo (clientNo, propertyNo,
comment(Viewing))

Combinacin natural
R
S
La combinacin natural entre las dos
relaciones R y S sobre todos los atributos
comunes. De los resultados se elimina una
de las dos apariciones de cada atributo
comn.

Ejemplo Combinacin natural


Enumerar los nombres y comentarios de
todos los clientes que hayan visitado un
inmueble en alquiler.

(clientNo, fName, lName(Client))


(clientNo, propertyNo, comment(Viewing))

Combinacin externa
Se emplea para incluir en la relacin
resultante las tuplas que no tengan valores
correspondientes en los atributos comunes de
S.
R
S
La combinacin externa izquierda (natural)
es aquella combinacin que tambin
incluye en el resultado las tuplas de R que
no tienen valores correspondientes en los
atributos comunes de S.

Ejemplo Combinacin externa


izquierda

Generar un informe de estado sobre las


visitas de los inmuebles.
propertyNo, street, city(PropertyForRent)
Viewing

Semicombinacin
R
FS
Define una relacin que contiene las tuplas
de R que participan en la combinacin de R
con S.

29

Pearson Education Limited 1995, 2005

Ejemplo - Semicombinacin
Enumerar los detalles completos de todos los
empleados que trabajen en la sucursal de
Glasgow.

Staff

Staff.branchNo=Branch.branchNo(city=Glasgow(Branch)

30

Pearson Education Limited 1995, 2005

Divisin
RS
Define una relacin sobre los atributos C
que est compuesta por el conjunto de
tuplas de R que se corresponden con la
combinacin de todas las tuplas de S.

31

Pearson Education Limited 1995, 2005

Ejemplo - Divisin
Identificar todos los clientes que hayan
visto todos los inmuebles con tres
habitaciones.
(clientNo, propertyNo(Viewing))
(propertyNo(rooms = 3 (PropertyForRent)))

Clculo relacional
Las consultas de clculo relacional especifican
qu hay que extraer, en lugar de cmo
extraerlo.
En la lgica de primer orden o clculo de
predicados, un predicado es una funcin
booleana con argumentos.
Cuando asignamos valores a los argumentos la
funcin nos proporciona una expresin,
denominada proposicin, que puede ser
verdadera o falsa.

Clculo relacional
Si el predicado contiene una variable (Ej. x
es miembro del personal), tiene que existir
un rango asociado para x.
Cuando sustituimos algunos de los valores
de este rango por x, la proposicin puede
ser verdadera; para otros valores puede
ser falsa.

Aplicado a las bases de datos se puede


encontrar en dos formas: tuplas y
dominios.

Clculo relacional de tuplas


Lo que nos interesa es localizar las tuplas para las
que un cierto predicado sea verdadero. Es un
clculo basado en el uso de variables de tuplas.
Una variable de tuplas es una variable que toma
sus valores en una determinada relacin: Ej. una
variable cuyos nicos valores permitidos son las
tuplas de la relacin.
Especificar el rango de una variable de tupla S de
forma que el rango sea la relacin Staff:
Staff(S)
Para extraer el conjunto de todas las tuplas S
tales que F(S) sea verdadera:
{S | F(S)}

Clculo relacional de tuplas - Ejemplo


Para obtener los detalles de todos los
empleados que ganen ms de 10.000
euros:
{S | Staff(S) S.salary > 10000}
Para extraer un atributo concreto, como
salary, escribiramos:
{S.salary | Staff(S) S.salary >
10000}

Clculo relacional de tuplas


Podemos usar dos cuantificadores para
decir a cuntas instancias se aplica el
predicado:
Cuantificador existencial (existe)

Cuantificador universal

(para todo)

Las variables de tupla cualificadas mediante


or se denominan variables legadas,
mientras que si no estn cualificadas se
denominan variables libres.

Clculo relacional de tuplas


El cuantificador existencial se utiliza en
frmulas que deben ser ciertas para al menos
una instancia, como en:
Staff(S) (B)(Branch(B)
(B.branchNo = S.branchNo) B.city =
London)
Significa Existe una tupla de Branch que
tiene el mismo valor de branchNo que el valor
de branchNo correspondiente a la tupla actual
de Staff, S, y cuya ciudad correspondiente es
Londres.

Clculo relacional de tuplas


El cuantificador universal se utiliza en
enunciados que deben ser ciertos para
todas las instancias, como en:
("B) (B.city Paris)
Significa No existe ninguna sucursal en
Pars.
Tambin podemos usar ~(B) (B.city =
Paris) que significa no existe ninguna
sucursal situada en Pars.

Ejemplo Clculo relacional de tuplas

Enumerar los nombres de todos los gerentes


que ganen ms de 25.000 euros.
{S.fName, S.lName | Staff(S)
S.position = Manager S.salary >
25000}

Clculo relacional de dominios


Utiliza variables que toman sus valores de
dominios de atributos, en lugar de
tomarlos de tuplas de alguna relacin.
Si F(d1, d2, . . . , dn) representa una
frmula compuesta de tomos y d1, d2, . .
. , dn representa variables de dominio,
entonces:
{d1, d2, . . . , dn | F(d1, d2, . . . , dn)}
Es una expresin en el clculo relacional
de dominios.

Ejemplo Clculo relacional de dominios


Hallar los nombres de todos los
gerentes que ganen ms de 25.000
euros.

{fN, lN | (sN, posn, sex, DOB, sal,


bN)
(Staff (sN, fN, lN, posn, sex, DOB,
sal, bN)
posn = Manager sal > 25000)}

42

Pearson Education Limited 1995, 2005

Ejemplo Clculo relacional de dominios

Enumerar los empleados que gestionan


inmuebles en alquiler en Glasgow.
{sN, fN, lN, posn, sex, DOB, sal, bN |
(sN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal
,bN)
PropertyForRent(pN, st, cty, pc, typ, rms,
rnt, oN, sN1, bN1)
(sN=sN1) cty=Glasgow)}

Clculo relacional de dominios


Cuando se restringe el clculo relacional
de dominios a expresiones seguras es
equivalente al clculo relacional de tuplas
restringido tambin a expresiones
segura, y ambos son a su vez
equivalentes al lgebra relacional.
Esto quiere decir que toda expresin
relacional tiene una expresin
equivalente en el clculo relacional y vice
versa.

Otros lenguajes
Los lenguajes orientados a transformacin
son lenguajes no procedimentales que
utilizan relaciones para transformar los
datos de entrada en las salidas requeridas
(Ej. SQL).
Los lenguajes grficos proporcionan al
usuario una imagen o ilustracin de la
estructura de la relacin. El usuario rellena
un ejemplo de lo que desea y el sistema
devuelve los datos requeridos en dicho
formato (Ej. QBE, Query-By-Example).

Otros lenguajes
Los lenguajes de cuarta generacin (4GL,
Fourth Generation Languages, permiten crear
una aplicacin personalizada completa
utilizando un conjunto limitado de comandos en
un entorno amigable y frecuentemente basado
en mens.
Algunos sistemas aceptan algn tipo de
lenguaje natural, que suele ser una versin
restringida del ingls, lo que a veces se
denomina lenguajes de quinta generacin (5GL,
Fifth Generation Languages). Estos desarrollos
se encuentran todava en una etapa temprana.