Sie sind auf Seite 1von 11

Objetivos

Conocer qu es y qu posibilidades debe ofrecer un lenguaje


relacionalmente completo.

Tema 3: El modelo relacional (IG18) Conocer los operadores del Algebra relacional.

Algebra Relacional y SQL Saber realizar consultas utilizando el lgebra relacional.

http://www.unoweb-s.uji.es/IG18 Conocer las opciones que ofrece SQL equivalentes a las del
lgebra.
Miguel Prez Francisco
Saber utilizar las sentecias de SQL para hacer consultas en un
SGBDR.

Tema 3: El modelo relacional (IG18) 3




ndice Bibliografa
1. Introduccin 5 M. Celma, J.C. Casamayor, L. Mota Bases de datos relacionales.
Ed. Pentice Hall.
2. Operadores del lgebra Relacional 8
2.1. Asignacin . . . . . . . . . . . . . . . . . . . . . . . . . 10 R. Elmasri i S. B. Navathe. Fundamentals of Database Systems. 2
2.2. Restriccin . . . . . . . . . . . . . . . . . . . . . . . . . 11 edicin, Addison-Wesley Ed. [QA76.9.D3 E57 1994].
2.3. Proyeccin . . . . . . . . . . . . . . . . . . . . . . . . . 13
C. J. Date. An Introduction to Database Systems (vol. 1). 6a
2.4. Unin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
edicin, Addison-Wesley Ed. 1995. [QA76.9.D3 D38 1995].
2.5. Diferencia . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6. Producto cartesiano . . . . . . . . . . . . . . . . . . . . 22 T. Connolly, C. Begg, A. Strachan. Database Systems.
2.7. Combinacin natural . . . . . . . . . . . . . . . . . . . . 26 Addison-Wesley Ed. 1997. [QA76.9.D26 C66].
2.8. Otras combinaciones . . . . . . . . . . . . . . . . . . . . 30
2.9. Interseccin . . . . . . . . . . . . . . . . . . . . . . . . 36
2.10.Divisin . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Tema 3: El modelo relacional (IG18) 4



1 Introduccin 1 Introduccin (II)
El modelo relacional, lleva asociado a su parte esttica (estructura y El lgebra relacional y clculo relacional constituyen la base de los
restricciones) una dinmica que permite la transformacin entre estados lenguajes relacionales (Codd). Ambos lenguajes son equivalentes.
de la base de datos.
AVISO: son lenguajes formales no muy amigables, pero se deben
insercin de tuplas estudiar porque sirven para comprender las operaciones bsicas de los
borrado de tuplas lenguajes de manejo de datos.

modificacin de tuplas Un lenguaje es relacionalmente completo si permite obtener cualquier


relacin que se pueda derivar mediante el lgebra relacional (o el
consultas
clculo relacional).
Los lenguajes relacionales operan sobre conjuntos de tuplas, es decir,
SQL es relacionalmente completo, de hecho, se diseo basndose en el
no son lenguajes navegacionales (que manipulan registros) sino de
lgebra y el clculo relacional.
especificacin. Se dividen en dos tipos:
Tema 3: El modelo relacional (IG18) 5 Tema 3: El modelo relacional (IG18) 7



1 Introduccin 2 Operadores del lgebra Relacional
Algebraicos: los cambios de estado se especifican mediante En lgebra relacional (en adelante lgebra) la dinmica la constituyen
operaciones, cuyos operandos son relaciones y cuyo resultado es una coleccin de operadores de alto nivel que, aplicados a las
otra relacin. Genricamente se conocen como lgebra relacional relaciones, dan como resultado nuevas relaciones.
(procedural).
Si R1, R2, . . . , Rj y Rson relaciones y Op un operador del lgebra, una
Predicativos: los cambios de estado se especifican mediante operacin consiste en aplicar Op a la relacin o relaciones R1, R2, . . . ,
predicados que definen el estado objetivo sin indicar las Rj que da como resultado la relacin R:
operaciones que hay que realizar para llegar al mismo.
Op(R1, R2, ..., Rj) = R
Genricamente se conocen como clculo relacional (no procedural).

Tema 3: El modelo relacional (IG18) 6 Tema 3: El modelo relacional (IG18) 8






2 Operadores del lgebra Relacional 2.2 Restriccin

El lgebra cumple la propiedad de cierre, ya que el resultado de una Restriccin (seleccin): R WHERE predicado
operacin es otra relacin. Si Op1, Op2, . . . , Opn son operadores del Obtiene las tuplas de R que cumplen el predicado especificado . Este
lgebra, se cumple: predicado es una comparacin en la que aparece al menos un atributo
Opn( ...(Op2(Op1(R)))) = R de R; puede ser una combinacin booleana de varios predicados.

Piezas rojas con peso mayor de 15:

P WHERE COLOR = rojo AND PESO >15

pnum PNOMBRE COLOR PESO CIUDAD


P2 perno rojo 17 Londres
P6 engrane rojo 19 Pars

Tema 3: El modelo relacional (IG18) 9 Tema 3: El modelo relacional (IG18) 11




2.1 Asignacin 2.2 Restriccin

Asignacin: Operacin auxiliar que se utiliza para almacenar resultados SQL:


Restriccin
en una nueva relacin o para resultados intermedios cuando se desea SELECT *
dividir una operacin compleja en una secuencia de operaciones ms FROM tabla
WHERE predicado
simples.

NR = Op(R) Piezas rojas con peso mayor de 15:

Permite copiar una relacin en otra nueva (siendo el operador Op la SELECT *


FROM p
identidad): WHERE color = rojo
AND peso > 15;
NR = R
O renombrar los atributos de la relacin original:

NR(A1,A2, ..., An) = R


Tema 3: El modelo relacional (IG18) 10 Tema 3: El modelo relacional (IG18) 12




2.3 Proyeccin 2.3 Proyeccin

Proyeccin: R [ai, ..., ak] SQL:


Proyeccin
Obtiene una relacin que contiene un subconjunto vertical de R, SELECT ai, ..., ak
FROM tabla;
extrayendo los valores de los atributos especificados yeliminando tuplas
duplicadas. Proveedores y piezas que envan:

SELECT snum,pnum
FROM sp;

Ciudades en las que se almacena alguna pieza:

SELECT ciudad
FROM p;

Son equivalentes estas sentencias a las del Algebra?


Tema 3: El modelo relacional (IG18) 13 Tema 3: El modelo relacional (IG18) 15



2.3 Proyeccin 2.4 Unin

Proveedores y piezas que envan: Ciudades en las que se almacena Unin: R UNION S
SP[snum,pnum] alguna pieza:
Obtiene una relacin cuyas tuplas son las que se encuentran en R, o en
snum pnum P[CIUDAD]
S, o en ambas relaciones a la vez. Para poder realizar esta operacin, R
S1 P1 CIUDAD
y S deben ser compatibles para la unin.
S1 P2 Pars
Roma Dos relaciones son compatibles para la unin si ambas tienen el mismo
S1 P3
Londres esquema de tupla, es decir, si tienen el mismo nmero de atributos, se
S1 P4
llaman igual y se encuentran definidos sobre los mismos dominios.
S1 P5
... Ciudades en las que hay proveedores o se almacenan piezas:

Tema 3: El modelo relacional (IG18) 14 Tema 3: El modelo relacional (IG18) 16






2.4 Unin 2.5 Diferencia

CIUDAD CIUDAD Diferencia: R MINUS S


Londres Pars Obtiene una relacin que tiene las tuplas que se encuentran en R y no
S[CIUDAD] P[CIUDAD]
Pars Roma se encuentran en S. Para poder realizar esta operacin, R y S deben ser
Atenas Londres compatibles para la unin.
Ciudades en las que hay proveedores y no se almacenan piezas:
S[CIUDAD] P[CIUDAD]
CIUDAD CIUDAD CIUDAD
Pars Londres Pars
S[CIUDAD] UNION P[CIUDAD] Londres Pars Roma
Roma Atenas Londres
Atenas

Tema 3: El modelo relacional (IG18) 17 Tema 3: El modelo relacional (IG18) 19




2.4 Unin 2.5 Diferencia

SQL: Ciudades en las que hay proveedores y no se almacenan piezas:


Unin
SELECT ai, ..., ak
S[CIUDAD] MINUS P[CIUDAD]
FROM tabla1
UNION
CIUDAD
SELECT ai, ..., ak
FROM tabla2 Atenas

Ciudades en las que hay proveedores o se almacenan piezas: Ciudades en las que se almacenan piezas y no hay proveedores:

SELECT ciudad P[CIUDAD] MINUS S[CIUDAD]


FROM s
UNION CIUDAD
SELECT ciudad
Roma
FROM p

Tema 3: El modelo relacional (IG18) 18 Tema 3: El modelo relacional (IG18) 20






2.5 Diferencia 2.6 Producto cartesiano

SQL: S TIMES (SP WHERE pnum=P1)

SELECT ai, ..., ak S.snum SNOMBRE ESTADO CIUDAD SP.snum pnum CANT
FROM tabla1 S1 Salazar 20 Londres S1 P1 300
EXCEPT
S2 Jaimes 10 Pars S1 P1 300
SELECT ai, ..., ak
S3 Bernal 30 Pars S1 P1 300
FROM tabla2
S4 Corona 20 Londres S1 P1 300

Ciudades en las que hay proveedores y no se almacenan piezas: S5 Aldana 30 Atenas S1 P1 300
S1 Salazar 20 Londres S2 P1 300
SELECT ciudad
S2 Jaimes 10 Pars S2 P1 300
FROM s
S3 Bernal 30 Pars S2 P1 300
EXCEPT
SELECT ciudad S4 Corona 20 Londres S2 P1 300
FROM p S5 Aldana 30 Atenas S2 P1 300

era esto lo que queramos?


Tema 3: El modelo relacional (IG18) 21 Tema 3: El modelo relacional (IG18) 23



2.6 Producto cartesiano 2.6 Producto cartesiano

Producto cartesiano: R TIMES S (S TIMES (SP WHERE pnum=P1)) WHERE S.snum=SP.snum

El producto cartesiano de dos relaciones R y S, de cardinalidades m1 y m2 S.snum SNOMBRE ESTADO CIUDAD SP.snum pnum CANT
respectivamente, es una relacin definida sobre la unin de los atributos de ambas S1 Salazar 20 Londres S1 P1 300
relaciones y cuyo cuerpo est constituido por las m1 x m2 tuplas formadas S2 Jaimes 10 Pars S2 P1 300
concatenando cada tupla de R con cada una de las tuplas de S.
Ahora nos quedamos slo con los atributos buscados
Datos de los proveedores que envan la pieza P1 y cantidad que envan:
((S TIMES (SP WHERE pnum=P1)) WHERE
SP WHERE pnum=P1 S.snum=SP.snum)[S.snum,SNOMBRE,ESTADO,CIUDAD,CANT]

snum pnum CANT S.snum SNOMBRE ESTADO CIUDAD CANT


S1 P1 300 S1 Salazar 20 Londres 300
S2 P1 300 S2 Jaimes 10 Pars 300

Tema 3: El modelo relacional (IG18) 22 Tema 3: El modelo relacional (IG18) 24






2.6 Producto cartesiano 2.7 Combinacin natural

SQL: S JOIN (SP WHERE pnum=P1)


Producto Cartesiano
SELECT t.ai, ..., t.ak, snum SNOMBRE ESTADOS CIUDAD pnum CANT
u.bj, ...,u.bl
S1 Salazar 20 Londres P1 300
FROM tabla1 t, tabla2 u
S2 Jaimes 10 Pars P1 300

Datos de los proveedores que envan la pieza P1 y cantidad que envan:


Mediante una proyeccin podemos quedarnos solamente con los
SELECT s.snum,s.snombre,s.estado, atributos que nos interesan:
s.ciudad,sp.cant
FROM s,sp (S JOIN (SP WHERE pnum=P1)) [snum,SNOMBRE,ESTADO,CIUDAD,CANT]
WHERE s.snum=sp.snum
snum SNOMBRE ESTADO CIUDAD CANT
AND sp.pnum=P1
S1 Salazar 20 Londres 300
S2 Jaimes 10 Pars 300

Tema 3: El modelo relacional (IG18) 25 Tema 3: El modelo relacional (IG18) 27




2.7 Combinacin natural 2.7 Combinacin natural

Combinacin natural (concatenacin o join): R JOIN S Ntese que esta expresin obtiene el mismo resultado que la expresin:

Obtiene una relacin cuyas tuplas son todas las tuplas de R ((S TIMES (SP WHERE pnum=P1)) WHERE S.snum=SP.snum)
concatenadas con todas las tuplas de S que en los atributos comunes [S.snum,SNOMBRE,ESTADO,CIUDAD,CANT]
(los que se llaman igual) tienen los mismos valores. Estos atributos
Porque la Combinacin natural es un producto cartesiano
comunes aparecen una sola vez en el resultado.
R1 = (S TIMES (SP WHERE pnum=P1))
Datos de los proveedores que envan la pieza P1 y cantidad que envan:
una restriccin de igualdad sobre los atributos comunes.
SP WHERE pnum=P1
R2 = R1 WHERE S.snum=SP.snum
snum pnum CANT
S1 P1 300 y una proyeccin eliminando (uno de) los atributos repetidos
S2 P1 300
RDO = R2[S.snum,SNOMBRE,ESTADO,CIUDAD,CANT]
Tema 3: El modelo relacional (IG18) 26 Tema 3: El modelo relacional (IG18) 28




2.7 Combinacin natural 2.8 Otras combinaciones

SQL: Combinacin natural externa derecha: R(+) JOIN S


Concatenacin natural
SELECT * La Combinacin natural externa derecha es una Combinacin natural en la que las
FROM tabla1 NATURAL JOIN tabla2
tuplas de S que no tienen valores en comn con ninguna tupla de R, tambin aparecen

Datos de los proveedores que envan la pieza P1 y cantidad que envan: en el resultado.

SELECT s.snum,snombre,estado, SQL:


ciudad,cant Concatenacin natural externa derecha
FROM sp NATURAL JOIN s SELECT *
WHERE pnum=P1; FROM tabla1 NATURAL RIGHT OUTER JOIN tabla2
Concatenacin externa derecha
SELECT *
FROM tabla1 RIGHT OUTER JOIN tabla2
ON tabla1.ai=tabla2.bj

Tema 3: El modelo relacional (IG18) 29 Tema 3: El modelo relacional (IG18) 31




2.8 Otras combinaciones 2.8 Otras combinaciones

Combinacin natural externa izquierda: R JOIN S(+) Combinacin natural externa completa: R(+) JOIN S (+)

La Combinacin natural externa izquierda es una Combinacin natural en la que las La Combinacin natural externa completa es una Combinacin natural en la que las

tuplas de R que no tienen valores en comn con ninguna tupla de S, tambin aparecen tuplas de S que no tienen valores en comn con ninguna tupla de R y las tuplas de R

en el resultado. que no tienen valores en comn con ninguna tupla de S, tambin aparecen en el
resultado.
SQL:
Concatenacin natural externa izquierda
SQL:
SELECT * Concatenacin natural externa completa
FROM tabla1 NATURAL LEFT OUTER JOIN tabla2 SELECT *
Concatenacin externa izquierda FROM tabla1 NATURAL FULL OUTER JOIN tabla2
SELECT * Concatenacin externa completa
FROM tabla1 LEFT OUTER JOIN tabla2 SELECT *
ON tabla1.ai=tabla2.bj FROM tabla1 FULL OUTER JOIN tabla2
ON tabla1.ai=tabla2.bj

Tema 3: El modelo relacional (IG18) 30 Tema 3: El modelo relacional (IG18) 32






2.8 Otras combinaciones 2.8 Otras combinaciones

Datos de todos los proveedores con las piezas que envan: SQL:
Datos de todos los proveedores con las piezas que envan:
S JOIN SP(+)
snum SNOMBRE ESTADO CIUDAD pnum CANT SELECT *
S1 Salazar 20 Londres P1 300 FROM s NATURAL LEFT OUTER JOIN sp;
S1 Salazar 20 Londres P2 200
S1 Salazar 20 Londres P3 400
Parejas de piezas azules y proveedores de la misma ciudad. Las piezas y proveedores que queden
S1 Salazar 20 Londres P4 200
desparejados tambin se deben obtener:
S1 Salazar 20 Londres P5 100
S1 Salazar 20 Londres P6 100
SELECT *
S2 Jaimes 10 Pars P1 300
FROM s NATURAL FULL OUTER JOIN p
S2 Jaimes 10 Pars P2 400
S3 Bernal 30 Pars P2 200
WHERE p.color=azul
S4 Corona 20 Londres P2 200
S4 Corona 20 Londres P4 300
S4 Corona 20 Londres P5 400
S5 Aldana 30 Atenas NULL NULL

Tema 3: El modelo relacional (IG18) 33 Tema 3: El modelo relacional (IG18) 35




2.8 Otras combinaciones 2.9 Interseccin

Parejas de piezas azules y proveedores de la misma ciudad. Las piezas Interseccin: R INTERSECT S
y proveedores que queden desparejados tambin se deben obtener:
Obtiene una relacin que contiene las tuplas de R que tambin se
(P WHERE COLOR=azul) encuentran en S. Para poder realizar esta operacin, R y S deben ser
compatibles para la unin.
(P WHERE COLOR=azul)(+) JOIN S(+)
pnum PNOMBRE COLOR PESO CIUDAD snum SNOMBRE ESTADO
R INTERSECT S obtiene el mismo resultado que R MINUS (R MINUS
P3 birlo Azul 17 Roma NULL NULL NULL S)
P5 leva Azul 12 Pars S2 Jaimes 10
P5 leva Azul 12 Pars S3 Bernal 30
Ciudades en las que hay proveedores y se almacenan piezas:
NULL NULL NULL NULL Londres S1 Salazar 20
NULL NULL NULL NULL Londres S4 Corona 20
NULL NULL NULL NULL Atenas S5 Aldana 30

Tema 3: El modelo relacional (IG18) 34 Tema 3: El modelo relacional (IG18) 36






2.9 Interseccin 2.10 Divisin

CIUDAD CIUDAD
Divisin: R DIVIDEBY S

Londres Pars Suponiendo que la cabecera de R es el conjunto de atributos A y la cabecera de S es el


S[CIUDAD] P[CIUDAD] conjunto de atributos B, tales que B es un subconjunto de A. Si consideramos C como
Pars Roma
el subconjunto de los atributos de A que no estn en B (A - B), la divisin obtiene una
Atenas Londres
relacin cuya cabecera es el conjunto de atributos C y que contiene las tuplas de R que
estn acompaadas de todas las tuplas de S.

La divisin de una relacin R (dividendo) por otra relacin S (divisor) es una relacin
CIUDAD RES (cociente) tal que, al realizarse su combinacin natural con el divisor, todas las
tuplas resultantes se encuentran en el dividendo.
P[CIUDAD] INTERSECT S[CIUDAD] Londres
Pars No existe en SQL una orden equivalente. Se puede simular contado tuplas.

Tema 3: El modelo relacional (IG18) 37 Tema 3: El modelo relacional (IG18) 39




2.9 Interseccin 2.10 Divisin

SQL: Proveedores que suministran todas las piezas que se almacenan en


Ciudades en las que hay proveedores y se almacenan piezas: Londres:

SELECT * (P WHERE CIUDAD=Londres)[pnum]


FROM s NATURAL LEFT OUTER JOIN sp;
pnum
P2
P4

SP[snum,pnum] DIVIDEBY (P WHERE CIUDAD=Londres)[pnum]

snum
S1
S4
Tema 3: El modelo relacional (IG18) 38 Tema 3: El modelo relacional (IG18) 40




2.11 Agrupacin 2.11 Agrupacin

Agrupacin (resumen): SQL:


Agrupacin
SELECT clculo(atributo)
SUMMARIZE R GROUPBY(ai ,...,ak ) ADD clculo AS atributo FROM tabla
GROUP BY a$_i$,...,a$_k$
Esta operacin agrupa las tuplas de R que tienen los mismos valores en
HAVING condicin
los atributos especificados y realiza un clculo sobre los grupos
obtenidos (SUM, AVG, MAX, MIN, COUNT ). La relacin resultado tiene Nmero total de unidades de piezas suministradas por cada proveedor:

como cabecera los atributos por los que se ha agrupado y el clculo SELECT SUM(CANT) AS CANT_TOTAL
FROM sp
realizado con el nombre especificado en atributo.
GROUPBY snum;

Nmero medio de unidades suministradas por envo:

SELECT AVG(CANT) AS MEDIA


FROM sp
Tema 3: El modelo relacional (IG18) 41 Tema 3: El modelo relacional (IG18) 43



2.11 Agrupacin

Nmero total de unidades de piezas suministradas por cada proveedor:

SUMMARIZE SP GROUPBY (snum) ADD SUM(CANT) AS CANT_TOTAL

snum CANT_TOTAL
S1 1300
S2 700
S3 200
S4 900

Nmero medio de unidades suministradas por envo:

SUMMARIZE SP GROUPBY () ADD AVG(CANT) AS MEDIA

MEDIA
258

Tema 3: El modelo relacional (IG18) 42

Das könnte Ihnen auch gefallen