Вы находитесь на странице: 1из 45

Captulo 4 - 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 Producto cartesiano

Unin Interseccin Diferencia de conjuntos


Operaciones de lgebra relacional

Combinacin Semicombinacin Combinacin


natural externa izquierda

Divisin (rea sombreada) Ejemplo de divisin


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.

9 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.

17 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.

R 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.

28 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)
)

29 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.

30 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)}

41 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.

Вам также может понравиться