You are on page 1of 42

Bases de Datos

Tema 4

Lenguajes Relacionales

Francisco Ruiz
dic-2000
documentacin preparada con ayuda de Esperanza Marcos (Universidad Rey Juan Carlos) y Mario Piattini
(Universidad de Castilla-La Mancha)

UCLM-ESI (F.Ruiz)

Tema 4

Lenguajes Relacionales

Complementar con:
* captulos 6 y 7 del libro Fundamentos y Modelos de Bases de
Datos (2 edicin). De Miguel, A.; Piattini, M.; Ra-Ma, 1999.
* apuntes de Formalizacin del Algebra Relacional y Clculo
Relacional de la asignatura.
UCLM-ESI (F.Ruiz)

BDa - 4

Objetivos

Conocer los fundamentos de la dinmica del Modelo


Relacional, es decir, los aspectos fundamentales de los
lenguajes relacionales formales:
lgebra, y
clculo relacional.

Conocer los principales lenguajes comerciales de los


SGBD relacionales:
SQL (versin 92), y
QBE.

UCLM-ESI (F.Ruiz)

BDa - 4

Referencias

Principales:
[de Miguel y Piattini, 1999]
caps. 6 y 7
De Miguel, A.; Piattini, M.; Fundamentos y Modelos de Bases de Datos (2 edicin).
Ra-Ma, 1999.

Otras:
-

Elmasri, R.; Navathe, S.B.; Sistemas de Bases de Datos: Conceptos fundamentales (2


edicin). Addison-Wesley, 1997. Captulos 6, 7 y 8.

Silberschatz, A.; Korth, H.F.; Sudarshan, S.; Fundamentos de Bases de Datos (3 edicin).
McGraw-Hill, 1998. Captulo 5.

Ullman, J.D.; Widom, J.; Introduccin a los Sistemas de Bases de Datos. Prentice Hall,
1999. Captulos 4 y 5.

UCLM-ESI (F.Ruiz)

BDa - 4

ndice
1.
2.

3.
4.

Introduccin.
lgebra relacional.
2.1. Operadores primitivos.
2.2. Operadores derivados.
2.3. Operadores de consulta adicionales.
2.4. Operadores con valores nulos.
Clculo relacional.
3.1. Clculo relacional de tuplas.
3.2. Clculo relacional de dominios.
Lenguajes relacionales comerciales.
4.1. SQL.
4.2. SQL embebido.
4.3. SQL dinmico.
4.4. QBE.

UCLM-ESI (F.Ruiz)

BDa - 4

1. Introduccin

El modelo relacional (MR), como todo modelo de datos (MD), lleva asociado
a su parte esttica (estructura y restricciones) una dinmica que permite la
transformacin entre estados de la base de datos. Esta transformacin de
un estado origen a un estado objetivo se realiza aplicando un conjunto de
operadores, mediante los cuales se llevan a cabo los siguientes tipos de
operaciones:
insercin de tuplas
borrado de tuplas
modificacin de tuplas

consultas

Si O es un operador, el paso de un estado origen de la base de datos (BDi) a


un estado objetivo (BDj) se pueden expresar como:
O (BDi) = BDj
ambos estados deben satisfacer las restricciones de integridad estticas, y la
transformacin ha de cumplir las restricciones de integridad dinmicas (entre
estados).
UCLM-ESI (F.Ruiz)

BDa - 4

1. Introduccin

Los lenguajes relacionales (LR) operan sobre conjuntos de tuplas, es decir,


no son lenguajes navegacionales (que manipulan registros, como Pascal,
Basic, Cobol, XBase, ...) sino de especificacin. Se dividen en dos tipos:
Algebraicos: los cambios de estado se especifican mediante operaciones,
cuyos operandos son relaciones y cuyo resultado es otra relacin.
Genricamente se conocen como lgebra relacional.
Predicativos: los cambios de estado se especifican mediante predicados
que definen el estado objetivo sin indicar las operaciones que hay que
realizar para llegar al mismo. Genricamente se conocen como clculo
relacional. Se dividen en dos subtipos:
orientados a tuplas.
orientados a dominios.

UCLM-ESI (F.Ruiz)

BDa - 4

2. lgebra Relacional

En lgebra relacional (AR) la dinmica del MR la constituyen una coleccin


de operadores de alto nivel que, aplicados a las relaciones, dan como
resultado nuevas relaciones.
Sean R1, R2, ..., Ri y R relaciones cualesquiera y O un operador del AR,
una operacin consiste en aplicar O a la(s) relacin(es) R1, ... Ri,
obtenindose R:
O ( R1 ... Ri ) = R

Al ser el resultado de la operacin otra relacin, se cumple la propiedad de


cierre, es decir, si O1....On representan operadores, se cumple:
On ( ... (O1 ( R) ) ) = R

UCLM-ESI (F.Ruiz)

BDa - 4

2. lgebra Relacional

Podemos clasificar los operadores del AR de tres formas diferentes:


a) Segn su origen:
Procedentes de la teora de conjuntos: unin, interseccin, diferencia y producto
cartesiano.
Relacionales especiales: restriccin, proyeccin, combinacin y divisin.

b) Segn la completitud del lenguaje:


Primitivos: operadores esenciales que no pueden obtenerse de otros (sin ellos, el
AR no sera un lenguaje completo).
Derivados: se pueden obtener aplicando varios de los operadores primitivos.
Aunque se puede prescindir de ellos, son tiles para simplificar muchas
operaciones habituales.

c) Segn el nmero de operandos:


Unarios: actan sobre una nica relacin.
Binarios: el operador tiene dos relaciones como operandos.

UCLM-ESI (F.Ruiz)

BDa - 4

2. lgebra Relacional

Asignacin:
Operacin auxiliar que se utiliza para almacenar el resultado de una
consulta en una nueva relacin o para denominar resultados intermedios
cuando se desea dividir una operacin compleja en una secuencia de
operaciones ms simples. El smbolo para representarla es una flecha:
RELACION_NUEVA O(R)
Tambin permite copiar una relacin en otra nueva ( siendo el operador
O la identidad):
R R
O renombrar los atributos de la relacin original:
RELACION_NUEVA (A1, A2,....An) O(R)

UCLM-ESI (F.Ruiz)

BDa - 4

10

2. lgebra Relacional

2.1 Operadores Primitivos

Algebra Relacional
Operadores primitivos + operadores derivados
Operadores primitivos:
Restriccin (seleccin)
Proyeccin
Unin
Diferencia
Producto Cartesiano

Tambin pueden ser otros, p.e., con la interseccin en vez de la diferencia

UCLM-ESI (F.Ruiz)

BDa - 4

11

2. lgebra Relacional

2.1 Operadores Primitivos

La seleccin de una relacin mediante una expresin lgica (predicado de


seleccin) da como resultado una relacin formada por el conjunto de
tuplas que satisfacen dicha expresin.

Seleccin (
)
Autor
Nombre

Nacionalidad

Institucin

Date

Norteamericana Relat. Institute

Saltor

Espaola

U.P.C.

Bertino

Italiana

U. Milan

nacionalidad=Espaola

(Autor)

Nombre

Nacionalidad

Institucin

Saltor

Espaola

U.P.C.

SELECT *
FROM autor
WHERE nacionalidad=Espaola

UCLM-ESI (F.Ruiz)

BDa - 4

12

2. lgebra Relacional

2.1 Operadores Primitivos

Proyeccin (
)

La proyeccin de una relacin sobre un conjunto de sus atributos es otra


relacin definida sobre estos atributos, eliminando las tuplas duplicadas
que hubieran podido resultar.

Autor
Institucin

nacionalidad

(Autor)

N acio nalid ad

Nombre

Nacionalidad

Date

Norteamericana Relat. Institute

N orteam ericana

Saltor

Espaola

U.P.C.

E spa ola

Bertino

Italiana

U. Milan

Italiana

SELECT nacionalidad
FROM autor

UCLM-ESI (F.Ruiz)

BDa - 4

13

2. lgebra Relacional

2.1 Operadores Primitivos

Unin (
)

La unin de dos relaciones r1 y r2, con esquemas R1 y R2 compatibles,


es otra relacin definida sobre el mismo esquema de relacin, cuya
extensin estar constituida por el conjunto de tuplas que pertenezcan a
r1, a r2 o a ambas (sin duplicar).

Autor

Editor

Nombre

Nacionalidad

Date

Institucin

Nombre

Nacionalidad

Norteamericana Relat. Institute

Chen

Norteamericana ER Institute

Saltor

Espaola

U.P.C.

Yao

Norteamericana U.N.Y

Bertino

Italiana

U. Milan

Bertino

Italiana

Autor Editor

UCLM-ESI (F.Ruiz)

Nombre
Date
Saltor
Bertino
Chen
Yao

Nacionalidad
Norteamericana
Espaola
Italiana
Norteamericana
Norteamericana

Institucin

U. Milan

Institucin
Relat. Institute
U.P.C.
U. Milan
ER Institute
U.N.Y

BDa - 4

14

2. lgebra Relacional

2.1 Operadores Primitivos

Diferencia (-)

La diferencia de dos relaciones r1 y r2, compatibles en su esquema, es


otra relacin definida sobre el mismo esquema de relacin, cuya
extensin estar constituida por el conjunto de tuplas que pertenecen a r1
y no pertenecen a r2.

Autor

Editor

Nombre

Nacionalidad

Date

Institucin

Nombre

Nacionalidad

Norteamericana Relat. Institute

Chen

Norteamericana ER Institute

Saltor

Espaola

U.P.C.

Yao

Norteamericana U.N.Y

Bertino

Italiana

U. Milan

Bertino

Italiana

Autor - Editor

UCLM-ESI (F.Ruiz)

Nombre
Date
Saltor

Institucin

U. Milan

Nacionalidad
Institucin
Norteamericana Relat. Institute
Espaola
U.P.C.

BDa - 4

15

2.1 Operadores Primitivos

2. lgebra Relacional

Producto Cartesiano (x)


El producto cartesiano de dos relaciones r1 y r2, de cardinalidades m1 y m2
respectivamente, es una relacin definida sobre la unin de los atributos de
ambas relaciones y cuya extensin esta constituida por las m1 x m2 tuplas
formadas concatenando cada tupla de r1 con cada una de las tuplas de r2.

UCLM-ESI (F.Ruiz)

BDa - 4

16

2. lgebra Relacional

2.1 Operadores Primitivos

Producto Cartesiano (x)


LIBRO
Cdigo Ttulo
001
003

EDITORIAL

Idioma Nombre_e

Bases de Espaol Ra-ma


Datos
Diseo de Espaol Ra-ma
BD

Nombre_e Direccin Ciudad

Pas

Ra-ma

Pez, 20

Madrid

Espaa

AddisonWesley

24
Lennon

London

UK

LIBRO x EDITORIAL
Cdigo

Ttulo

Idioma

Nombre_e

Nombre_e

Direccin

Ciudad

Pas

001

BD

Espaol

Ra-ma

Ra-ma

Pez, 20

Madrid

Espaa

001

BD

Espaol

Ra-ma

UK

Diseo
de BD
Diseo
de BD

Espaol

Ra-ma

24
Lennon
Pez, 20

London

003

AddisonWesley
Ra-ma

Madrid

Espaa

Espaol

Ra-ma

AddisonWesley

24
Lennon

London

UK

003

UCLM-ESI (F.Ruiz)

BDa - 4

17

2. lgebra Relacional

2.1 Operadores Primitivos

Restriccin

( )

Proyeccin

Producto ( X )

( )
a
b
c

Unin ( )

UCLM-ESI (F.Ruiz)

x
y

a
a
b
b
c
c

x
y
x
y
x
y

Diferencia ( - )

BDa - 4

18

2.2 Operadores Derivados

2. lgebra Relacional

Combinacin (
)
La combinacin de dos relaciones respecto a una cierta condicin de
combinacin, es otra relacin constituida por todos los pares de tuplas ti y tj
concatenadas, tales que, en cada par, las correspondientes tuplas satisfacen la
condicin especificada.
Tambin se llama JOIN o PRODUCTO THETA.
Tambin se representa mediante el smbolo
Se corresponde con un producto cartesiano seguido de una restriccin.
Si se trata de una condicin de combinacin simple por igualdad tambin se
denomina equi-combinacin.
La condicin de combinacin, en el caso ms sencillo, est referida a dos
atributos A1i y A2j, cada uno de los cuales pertenece a una de las relaciones,
unidos por un operador de comparacin. En el caso ms general, varios pares
de atributos pueden combinarse mediante el operador lgico AND.
UCLM-ESI (F.Ruiz)

BDa - 4

19

2.2 Operadores Derivados

2. lgebra Relacional

Combinacin Natural (*)


La combinacin natural () es una combinacin por igualdad donde se ha
eliminado, en la relacin resultante, un atributo de cada pareja cuyos valores
son idnticos. Es el caso ms utilizado de combinacin para relaciones que
tienen atributos comunes.
Tambin se llama PRODUCTO NATURAL o NATURAL JOIN.
Tambin se representa mediante el smbolo
Se corresponde con un producto cartesiano seguido de una restriccin por
igualdad, y despus de una proyeccin (para quitar la duplicacin en los
atributos emparejados).
Cuando el atributo comn tiene el mismo nombre en ambas relaciones, se
suele omitir la condicin de combinacin.
UCLM-ESI (F.Ruiz)

BDa - 4

20

2. lgebra Relacional

2.2 Operadores Derivados

Combinacin Natural (*)


AUTOR

NOMBRE
Date, C.J.
Saltor, F.
Ceri, S.

NACIONALIDAD
Norteamericana
Espaola
Italiana
LIBRO
DB Systems
Basi di Dati
SQL Standard

LIBRO

AUTOR

INSTITUCION
Relational Inst.
U.P.C.
Politc. Miln

AUTOR
Date, C.J.
Ceri, S.
Date, C.J.

EDITORIAL
Addison
Clup
Addison

LIBRO

(AUTOR.nombre = LIBRO.autor)

NOMBRE
Date, C.J.
Date, C.J.
Ceri, S.

UCLM-ESI (F.Ruiz)

NACIONALIDAD
Norteamericana
Norteamericana
Italiana

INSTITUCION
Relational Inst.
Relational Inst.
Politc. Miln

LIBRO
DB Systems
SQL Standard
Basi di Dati

EDITORIAL
Addison
Addison
Clup

BDa - 4

21

2. lgebra Relacional

2.2 Operadores Derivados

Interseccin (
)

AUTOR

La interseccin de dos relaciones r1 y r2, compatibles en su esquema,


es otra relacin definida sobre el mismo esquema de relacin, cuya
extensin esta formada por el conjunto de tuplas que pertenecen a r1 y
a r2 a la vez.

NOMBRE
Date, C.J.
Saltor, F.
Ceri, S.

NACIONALIDAD
Norteamericana
Espaola
Italiana

NOMBRE
Chen, P.
Yao, L.
Ceri, S.

INSTITUCION
Relational Inst.
U.P.C.
Politc. Miln

NACIONALIDAD
Norteamericana
Norteamericana
Italiana

EDITOR
INSTITUCION
ER Institute
U.N.Y.
Politc. miln

AUTOR EDITOR
NOM BRE
Ceri, S.

UCLM-ESI (F.Ruiz)

NACIONALIDAD INSTITUCION
Italiana
Politc. Miln

BDa - 4

22

2. lgebra Relacional

2.2 Operadores Derivados

Divisin (:)

La divisin de una relacin R1 (dividendo) por otra relacin R2 (divisor)


es una relacin R (cociente) tal que, al realizarse su combinacin con el
divisor, todas las tuplas resultantes se encuentran en el dividendo.

AUTOR_EDITORIAL
NOM BRE
D ate, C .J.
C ervera, J.
Saltor, F.
C eri, S.
C ostilla, C .
C odd, E .
C ervera, J.

N A C IO N A L ID A D
N orteam ericana
E spaola
E spaola
Italiana
E spaola
N orteam ericana
E spaola

E D IT O R IA L
A ddison
R am a
Paraninfo
C lup
D iaz de Santos
Prentice H all
A ddison

EDITORIAL
EDITORIAL
Addison
Rama

AUTOR_EDITORIAL : EDITORIAL
NOMBRE
Cervera, J.

UCLM-ESI (F.Ruiz)

NACIONALIDAD
Espaola

BDa - 4

23

2. lgebra Relacional

2.2 Operadores de Consulta Adicionales

Agrupacin (group by)

Permite agrupar tuplas en subconjuntos que poseen valores


comunes de ciertos atributos. A dichos subconjuntos se les
pueden aplicar funciones de agregacin (media, frecuencia,
varianza, etc.)

AUTOR_ARTIC
NOMBRE
Date, C.J.
Cervera, J.
Saltor, F.
Ceri, S.
Costilla, C.
Codd, E.

NACIONALIDAD
Norteamericana
Espaola
Espaola
Italiana
Espaola
Norteamericana

NUM_ART.
27
10
14
9
8
29

AUTOR_ARTIC AGRUPACION_POR
nacionalidad, MEDIA (n artculos)

UCLM-ESI (F.Ruiz)

NACIONALIDAD MEDIA (N ART.)


Norteamericana
28
Espaola
11
Italiana
9

BDa - 4

24

2. lgebra Relacional

2.2 Operadores de Consulta Adicionales

Cierre Transitivo
Operacin unaria definida sobre dos
atributos compatibles (que
comparten el mismo dominio), que
se obtiene por sucesivas
operaciones de combinacin,
proyeccin y unin, consistente en
aadir a la relacin de origen todas
las tuplas que se deducen,
sucesivamente, por transitividad
hasta la saturacin:
si existen las tuplas (a,b) y (b,c) se
aade (a,c)

UCLM-ESI (F.Ruiz)

TEMAS
TEMA_P
Bases de Datos
Bases de Datos
Diseo
Diseo
Diseo lgico

TEMA_S
Fundamentos
Diseo
Diseo conceptual
Diseo lgico
Diseo relacional

Cierre transitivo de Temas


TEMA_P
Bases de Datos
Bases de Datos
Diseo
Diseo
Diseo lgico
Bases de Datos
Bases de Datos
Diseo
Bases de Datos

TEMA_S
Fundamentos
Diseo
Diseo conceptual
Diseo lgico
Diseo relacional
Diseo conceptual
Diseo lgico
Diseo relacional
Diseo relacional
BDa - 4

25

2. lgebra Relacional

2.2 Operadores con Valores Nulos

Combinacin externa
Tambin llamado OUTER JOIN.
Al combinar R1 con R2, evita que las
tuplas de una relacin que no casan
con ninguna tupla de la otra
desaparezcan en el resultado (tal
como ocurre en la combinacin
normal (interna).
Segn que las tuplas a conservar sean
las de R1, o las de R2, o ambas se
tienen tres tipos:
por la izquierda:
/*
por la derecha:
*/
NOMBRE
simtrica:
/*/
Date, C.J.
Date, C.J.
Saltor, F.
Ceri, S.

UCLM-ESI (F.Ruiz)

AUTOR
NOMBRE
Date, C.J.
Saltor, F.
Ceri, S.

NACIONALIDAD
Norteamericana
Espaola
Italiana

INSTITUCION
Relational Inst.
U.P.C.
Politc. Miln

LIBRO
LIBRO
DB Systems
Basi di Dati
SQL Standard

Autor

AUTOR
Date, C.J.
Ceri, S.
Date, C.J.

/*

EDITORIAL
Addison
Clup
Addison

Libro

(AUTOR.nombre=LIBRO.autor)

NACIONALIDAD
Norteamericana
Norteamericana
Espaola
Italia

INSTITUCION
Relational Inst.
Relational Inst.
U.P.C.
Politc. Miln

LIBRO
DB Systems
SQL Standard
Nulo
Basi di Dati

EDITORIAL
Addison
Addison
Nulo
Clup

BDa - 4

26

2. lgebra Relacional

2.2 Operadores con Valores Nulos

a
1
1
1
1
1
1
1
2
2

Operadores MAYBE
Son un grupo de operadores que
tienen en cuenta la lgica trivaluada,
incorporando en el resultado las
tuplas que pueden ser ciertas.
Existe una versin MAYBE para
cada operador de los ya estudiados
donde
puede
producirse
una
comparacin en la que intervienen
valores nulos.

R1
a
1
1
2

Nulo

b
5
Nulo

4
2
Nulo

UCLM-ESI (F.Ruiz)

R2
c
5
2
Nulo
Nulo

d
3
4
6
5

Nulo

MAYBE R1 R2
b=c

Nulo
Nulo

3
3
3
3

b
5
5
5

c
5

Nulo

5
2

Nulo

Nulo
Nulo

Nulo

Nulo

Nulo

Nulo

4
4
2
2
2

Nulo

Nulo

5
2

Nulo

Nulo

2
Nulo
Nulo

Nulo

Nulo

Nulo

Nulo

d
3
6
5
3
4
6
5
6
5
4
6
5
3
4
6
5

BDa - 4

27

2. lgebra Relacional

2.2 Operadores con Valores Nulos

Operadores MAYBE

Tambin existe una versin MAYBE de la restriccin

editorial="Addison" ( AUTOR _ LIBRO)


NOMBRE
Date, C.J.
Date, C.J.

NACIONALIDAD INSTITUCION LIBRO


Norteamericana
Relational Inst. DB Systems
Norteamericana
Relational Inst. SQL Standard

EDITORIAl
Addison
Addison

MAYBE editorial="Addison" ( AUTOR _ LIBRO)


NOMBRE
Date, C.J.
Date, C.J.
Saltor, F.

UCLM-ESI (F.Ruiz)

NACIONALIDAD
Norteamericana
Norteamericana
Espaola

INSTITUCION
Relational Inst.
Relational Inst.
U.P.C.

LIBRO
DB Systems
SQL Standard
Nulo

EDITORIAl
Addison
Addison
Nulo

BDa - 4

28

3. Clculo Relacional

Mientras que en un lenguaje algebraico hay que especificar los operadores


que se tienen que aplicar a las relaciones para obtener el resultado, en el
clculo relacional (CR) slo es preciso indicar cul es el resultado que se
quiere obtener.
Este tipo de lenguajes se llaman predicativos porque utilizan el clculo de
predicados para construir expresiones.
DATE (1990) dice que los lenguajes basados en el CR son descriptivos,
mientras que los algebricos son prescriptivos.
Los lenguajes de clculo relacional pueden ser de dos tipos:
orientados a tuplas, en los que una variable se interpreta como si representase
las tuplas de una relacin.
orientados a dominios, en los que una variable se interpreta como si
representase los valores de un dominio.

UCLM-ESI (F.Ruiz)

BDa - 4

29

3.1 Clculo Relacional de Tuplas

3. Clculo Relacional

Las consultas a una BD relacional en CRT son expresiones del tipo


{ x F(x) }
donde F es una frmula bien formada que tiene como nica variable-tupla libre a x
(segn las reglas de la lgica de predicados de primer orden).

Ejemplos:
La unin de dos relaciones R S puede expresarse en CRT as:
{ t R(t) S(t) }
La diferencia de dos relaciones R - S se expresa de la siguiente forma:
{ t R(t) S(t) }

UCLM-ESI (F.Ruiz)

BDa - 4

30

3.1 Clculo Relacional de Tuplas

3. Clculo Relacional

Ejemplos de consultas para el esquema de BD siguiente:


sucursal(nombre, activo, ciudad)
cliente(nombre, calle, ciudad)
depsito(sucursal, n-cuenta, cliente, saldo)
prstamo(sucursal, n-prestamo, cliente, importe)
a) Encontrar la sucursal, n-prestamo, cliente e importe para los prstamos mayores de 300.000 pts:
{ t prstamo(t) t.importe>300000 }
b) Obtener todos los clientes que tienen prstamos de ms de 300.000 pts:
{ t cliente(t) s(prstamo(s) t.nombre=s.cliente s.importe>300000) }
c) Encontrar a todos los clientes que tienen una cuenta en la sucursal 'Paz', pero que no han sacado
un prstamo en esa sucursal:
{ t cliente(t) s(depsito(s) t.nombre=s.cliente s.sucursal='Paz')
u(prstamo(u) t.nombre=u.cliente u.sucursal='Paz') }

UCLM-ESI (F.Ruiz)

BDa - 4

31

3.2 Clculo Relacional de Dominios

3. Clculo Relacional

La forma de expresar en este lenguaje una pregunta a la base de datos es:


{ x1, x2, ..., xk F(x1, x2, ..., xk) }
tal que x1, x2, ..., xk son las nicas variables libres en la frmula bien formada F.

Ejemplos:
La unin de dos relaciones R S se expresa en CRD as:
{ t1, t2, ..., tk R(t1, t2, ..., tk) S(t1, t2, ..., tk) }
La diferencia de dos relaciones R - S se expresa de la siguiente forma:
{ t1, t2, ..., tk R(t1, t2, ..., tk) S(t1, t2, ..., tk) }

UCLM-ESI (F.Ruiz)

BDa - 4

32

3.2 Clculo Relacional de Dominios

3. Clculo Relacional

Ejemplos de consultas para el esquema de BD utiliza antes:


a) Encontrar la sucursal, n-prestamo, cliente e importe para los prstamos mayores de 300.000 pts:
{ s,t,u,v | prstamo(s,t,u,v) v>300000 }
b) Obtener todos los clientes que tienen prstamos de ms de 300.000 pts:
{ t1,t2,t3 cliente(t1,t2,t3) s1s2 s3(prstamo(s1,s2, t1, s3) s3>300000) }
c) Encontrar a todos los clientes que tienen una cuenta en la sucursal 'Paz', pero que no han sacado
un prstamo en esa sucursal:
{ t1,t2,t3 cliente(t1,t2,t3) s1s2depsito('Paz',s1, t1,s2) u1u2prstamo('Paz',u1, t1,u2) }

UCLM-ESI (F.Ruiz)

BDa - 4

33

4. Lenguajes Relacionales Comerciales

4.1 SQL

Evolucin Resumida:
1975:

Prototipo creado por IBM, conocido como SEQUEL.

1977:

Cambia el nombre a SQL (Structured Query Language).

1979:

Primer SGBDR comercial basado en el (ORACLE).

1986:

Aprobada la norma SQL/ANSI.

1987:

Primer estndar internacional de ISO.

1989:

Versin ISO SQL-1 o SQL-89 que aade integridad


referencial bsica.

1992:

Versin SQL-2 o SQL-92 que amplia notablemente la anterior. Es la


utilizada por casi todos los SGBDR.

1999:

Versin SQL-3 que incorpora aspectos de orientacin a objetos y


amplia notablemente el lenguaje. Se est empezando a incorporar a
los SGBDR.

UCLM-ESI (F.Ruiz)

BDa - 4

34

4. Lenguajes Relacionales Comerciales

4.1 SQL

Principales Conceptos manejados en SQL-92:

Esquemas
Dominios
Tablas
Columnas
Restricciones y reglas de integridad
Vistas
Catlogos
Privilegios
Transacciones
....
El lenguaje SQL-92 se estudia en detalle en las prcticas de laboratorio.
Ver apndice con la sintaxis de SQL-92.

UCLM-ESI (F.Ruiz)

BDa - 4

35

4. Lenguajes Relacionales Comerciales

4.1 SQL

Una consulta en SQL tiene la forma:


select A1, A2, ... , An
from R1, R2, ... , Rm
where P

Siendo Ai atributos, Ri relaciones y P un predicado construido de forma similar a los


explicados en el AR para el operador de seleccin (s), pero utilizando AND, OR y
NOT como operadores lgicos.

Esta consulta es equivalente a la expresin siguiente del AR:


A1, A2, ... , An(
P(R1R2 ... Rm))

Es decir, SQL forma el producto cartesiano de las relaciones que se indican en la


clasula from, a continuacin realiza una restriccin utilizando el predicado de la
clasula where, y proyecta el resultado a los atributos de la clasula select.

UCLM-ESI (F.Ruiz)

BDa - 4

36

4.2 SQL Embebido

4. Lenguajes Relacionales Comerciales

El lenguaje SQL se puede utilizar de forma interactiva o como lenguaje


husped (embebido dentro de otro lenguaje de propsito general).
Sentencias del lenguaje anfitrin

En SQL Embebido, las sentencias SQL se


van intercalando entre las sentencias del
lenguaje anfitrin, precedidas normalmente
de la partcula EXEC SQL para que puedan
ser distinguidas por los precompiladores.
Como puede verse en la figura 7.13 la
declaracin de variables se introduce en
una seccin que empieza con la sentencia
EXEC SQL BEGIN DECLARE SECTION
y finaliza con otra sentencia
EXEC SQL END DECLARE SECTION.

EXEC SQL BEGIN DECLARE SECTION;


Ao Date;
Isbn Char(12); ...
EXEC SQL END DECLARE SECTION;
Sentencias del lenguaje anfitrin
EXEC SQL SELECT Ao
INTO :Ao
FROM DOCUMENTO
WHERE Isbn = :Isbn;
IF SQLSTATE = ...

?
Variables
anfitrin

Sentencias del lenguaje anfitrin


WHENEVER SQLERROR ...
Sentencias del lenguaje anfitrin

UCLM-ESI (F.Ruiz)

BDa - 4

37

4.3 SQL Embebido

4. Lenguajes Relacionales Comerciales

Las sentencias SQL manejan conjuntos de filas mientras que el lenguaje anfitrin
(Cobol, Basic, C) slo puede manejarlas de una en una.
Para resolver esta discordancia (conocida como impedance mismatch), el SQL
soporta el concepto de cursor, ofreciendo sentencias para declararlos (DECLARE
CURSOR FOR), abrirlos (OPEN), cerrarlos (CLOSE) y leerlos (FETCH).
Declaracin de un cursor:
<declaracin de cursor>::=
DECLARE <nombre del cursor> [INSENSITIVE][SCROLL] CURSOR
FOR <sentencia SELECT>

Ejemplo:
DECLARE cursor_e CURSOR FOR
SELECT Cdigo, Nombre, Dir, Ciudad
FROM Editorial
ORDER BY Ciudad DESC;

Con la opcin SCROLL se permite realizar lecturas (FETCH) de diversas formas:


NEXT, PRIOR, FIRST, LAST, ABSOLUTE n o RELATIVE n, siendo "n" el
resultado de evaluar una expresin escalar.

UCLM-ESI (F.Ruiz)

BDa - 4

38

4.3 SQL Dinmico

4. Lenguajes Relacionales Comerciales

Otro avance del SQL92 lo constituye la posibilidad de utilizar sentencias


SQL dinmicas, es decir, sentencias SQL cuyo contenido exacto se conoce
slo en tiempo de ejecucin:
SELECT Nombre, Direccin
FROM Editorial
WHERE Ciudad = ?;

donde mediante el smbolo "?" se indica el parmetro que habr de pasarse a


la sentencia durante su ejecucin.

UCLM-ESI (F.Ruiz)

BDa - 4

39

4. Lenguajes Relacionales Comerciales

4.3 QBE

Query-By-Example (QBE) es el ejemplo ms caracterstico de lenguaje comercial


basado en el clculo relacional de dominios.
Fue desarrollado por IBM en 1977.
Su caracterstica ms especial es su bidimensionalidad: asistencia de un editor de
pantallas que ayuda a formular las consultas en dos dimensiones, y que se ha
convertido en un paradigma de interfaz de usuario.
Para hacer consultas se emplean esqueletos de tablas, que son representaciones
grficas del esquema de las relaciones:

Zona para
nombre de
tabla
Zona para
operador de
fila

UCLM-ESI (F.Ruiz)

Zona para nombres de columna

Zona para datos

BDa - 4

40

4. Lenguajes Relacionales Comerciales

4.3 QBE

Sobre los esqueletos de las tablas, el usuario puede realizar operaciones:


TIPO

OPERADOR OPERACIN REALIZADA

SISTEMA

CALCULO

P.
U.
I.
D.
G.
ALL.
UNQ.
AO (n)
DO (n)
SUM.
CNT.
AVG.
MAX.
MIN.
=, >, <
>=, <=, <>
IN
LIKE
BETWEEN
+, -, *, /

Visualizacin en pantalla o en impresora


Modificacin
Insercin
Borrado
Agrupamiento de filas
Todas las filas
No repite filas duplicadas
Clasificacin ascendente
Clasificacin descendente
Suma
Cuenta
Promedio
Valor mximo
Valor mnimo
Comparaciones sencillas
y combinadas
Compara con lista de valores
Compara con una mscara
Compara con un rango
Clculo

LOGICA

AND, OR, NOT

Lgica

FUNCIONES

COMPARACION

UCLM-ESI (F.Ruiz)

BDa - 4

41

4. Lenguajes Relacionales Comerciales

4.3 QBE

Ejemplo de consulta (ya vista en CRD):


Obtener todos los clientes que tienen prstamos de ms de 300.000 pts:
{ t1,t2,t3 cliente(t1,t2,t3) s1s2 s3(prstamo(s1,s2, t1, s3) s3>300000) }

cliente

prstamo

UCLM-ESI (F.Ruiz)

sucursal

nombre

calle

ciudad

P._t1

P._t2

p._t3

n-prstamo

cliente

importe

_t1

> 300000

BDa - 4

42

You might also like