Beruflich Dokumente
Kultur Dokumente
Tema 3: El modelo relacional (IG18) Conocer los operadores del Algebra 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.
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.
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).
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.
2.1 Asignacin 2.2 Restriccin
2.3 Proyeccin 2.3 Proyeccin
SELECT snum,pnum
FROM sp;
SELECT ciudad
FROM p;
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:
2.4 Unin 2.5 Diferencia
2.4 Unin 2.5 Diferencia
Ciudades en las que hay proveedores o se almacenan piezas: Ciudades en las que se almacenan piezas y no hay proveedores:
2.5 Diferencia 2.6 Producto cartesiano
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
2.6 Producto cartesiano 2.6 Producto cartesiano
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]
2.6 Producto cartesiano 2.7 Combinacin natural
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
Datos de los proveedores que envan la pieza P1 y cantidad que envan: en el resultado.
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
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
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
2.9 Interseccin 2.10 Divisin
CIUDAD CIUDAD
Divisin: R DIVIDEBY 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.
2.9 Interseccin 2.10 Divisin
snum
S1
S4
Tema 3: El modelo relacional (IG18) 38 Tema 3: El modelo relacional (IG18) 40
2.11 Agrupacin 2.11 Agrupacin
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;
2.11 Agrupacin
snum CANT_TOTAL
S1 1300
S2 700
S3 200
S4 900
MEDIA
258