Académique Documents
Professionnel Documents
Culture Documents
1.- Introduccin.
2.- Una Sintaxis para el lgebra Relacional.
3.- Asignacin Relacional.
4.- Operaciones Tradicionales sobre
Conjuntos.
5.- Operaciones Relacionales Especiales.
6.- Para qu sirve el lgebra?.
7.- Operaciones Adicionales.
(Captulo 13 del Date)
INTRODUCCIN
Manipulacin de Datos
- La manipulacin de los datos en el modelo
relacional se puede abordar de dos modos.
- Mediante el lgebra Relacional se suministran
los operadores que permiten construir una
relacin
que
contiene
la
informacin
buscada.
- El Clculo Relacional define la notacin que
permite describir las propiedades que deben
cumplir las tuplas de la relacin resultante.
- Adems, en ambos casos resulta necesario
aadir una Operacin de Asignacin que
permite dar nombre a un resultado intermedio.
INTRODUCCIN
Operadores Originales
- Restriccin (Select). Operador unario que
genera una relacin con las tuplas de la
relacin operando que cumplen la condicin.
- Proyeccin (Project). Operador unario que
genera una relacin con los atributos
seleccionados de la relacin operando.
- Producto (Product). Operador binario que
genera una relacin cuyas tuplas son todas las
posibles combinaciones de las tuplas de las
dos relaciones operando.
- Unin (Union). Operador binario que genera
una relacin compuesta por las tuplas que
estn en alguna de las relaciones operando.
- Interseccin (Intersect). Operador binario que
genera una relacin que contiene las tuplas
que estn en las dos relaciones operando.
- Diferencia (Minus). Operador binario que
genera una relacin en la que aparecen las
tuplas que se encuentran en la primera
relacin y no se encuentran en la segunda.
- Reunin (Join). Operador binario que genera
una relacin que contiene las combinaciones
de las tuplas de ambas relaciones que
cumplen una determinada condicin.
- Divisin (Divide). Operador binario que genera
una relacin que contiene todos los valores de
los atributos de la primera relacin que
concuerdan, en el resto de atributos, con
todos los valores de la segunda relacin.
INTRODUCCIN
Representacin de
los Operadores Originales
Restriccin
Producto
Proyeccin
a
b
c
Unin
x
y
Interseccin
b1 c1
b2 c2
b3 c3
x
y
x
y
x
y
Diferencia
Reunin(natural)
a1 b1
a2 b2
a3 b3
a
a
b
b
c
c
Divisin
a1 b1 c1
a2 b2 c2
a3 b3 c3
a
a
a
b
c
x
y
z
x
y
x
z
INTRODUCCIN
Comentarios sobre el lgebra
- El operador SELECT no corresponde con la
instruccin SELECT de SQL.
- Realmente, sta incluye la funcionalidad de
todos los anteriores operadores, e incluso
alguno ms.
10
ASIGNACIN RELACIONAL
Definicin
- El objetivo de esta operacin es "Recordar"
alguno de los resultados intermedios de una
expresin.
- De este modo se puede modificar el estado de
la base de datos.
- As, la insercin y el borrado de tuplas de una
relacin se podra realizar mediante la
utilizacin de los operadores UNION y MINUS.
s :=
sp :=
S UNION { ( S#
SNOMBRE
SITUACION
CIUDAD
SP MINUS { ( S#
P#
CANT
:
:
:
:
'S6'
'Beltrn'
50
'Madrid'
: 'S1'
: 'P1'
: 300
,
,
,
) } ;
,
,
) } ;
11
las
12
A UNION B
A INTERSECT B
A MINUS B
B MINUS A
S#
SNOMBRE
SITUACION
CIUDAD
S1
S4
Salazar
Corona
20
20
Londres
Londres
S#
SNOMBRE
SITUACION
CIUDAD
S1
S2
Salazar
Jaimes
20
10
Londres
Pars
S#
SNOMBRE
S1
S2
S4
Salazar
Jaimes
Corona
S#
SNOMBRE
S1
Salazar
20
Londres
S#
SNOMBRE
SITUACION
CIUDAD
S4
Corona
20
Londres
S#
SNOMBRE
SITUACION
CIUDAD
S2
Jaimes
10
13
SITUACION CIUDAD
20
10
20
Londres
Pars
Londres
SITUACION CIUDAD
Pars
Propiedades
- La unin, la interseccin y el producto son
Conmutativas, aunque no la diferencia.
- Lo mismo ocurre con la Asociatividad.
14
B P#
P1
P2
P3
P4
P5
P6
A TIMES B S#
S1
S1
S1
S1
S1
S1
S2
S2
S2
S2
S2
S2
S3
S3
S3
S3
S3
S3
S4
S4
S4
S4
S4
S4
S5
S5
S5
S5
S5
S5
15
P#
P1
P2
P3
P4
P5
P6
P1
P2
P3
P4
P5
P6
P1
P2
P3
P4
P5
P6
P1
P2
P3
P4
P5
P6
P1
P2
P3
P4
P5
P6
A WHERE c1 OR c2
A WHERE NOT c
A MINUS ( A WHERE c )
16
duplicadas,
17
S#
SNOMBRE
S1
S2
S3
S4
S5
Salazar
Jaimes
Bernal
Corona
Aldana
SITUACION CIUDAD
20
10
30
20
30
P#
PNOMBRE COLOR
P1
P2
P3
P4
P5
P6
Tuerca
Perno
Birlo
Birlo
Leva
Engrane
S WHERE
CIUDAD = 'Londres'
S#
SNOMBRE
S1
S4
Salazar
Corona
P#
PNOMBRE COLOR
P1
P5
Tuerca
Leva
S[S#]
P[COLOR,CIUDAD]
Rojo
Verde
Azul
Rojo
Azul
Rojo
Londres
Pars
Pars
Londres
Atenas
PESO CIUDAD
12
17
17
14
12
19
Londres
Pars
Roma
Londres
Pars
Londres
SITUACION CIUDAD
20
20
Rojo
Azul
Londres
Londres
PESO CIUDAD
12
12
Londres
Pars
S#
COLOR
CIUDAD
S#
S1
S2
S3
S4
S5
Rojo
Verde
Azul
Azul
Londres
Pars
Roma
Pars
S1
S4
18
- La cabecera de B es Y1 , L , Yn , Z1 , L, Z p .
entonces se cumple que la expresin,
A JOIN B
genera una relacin cuya cabecera es,
(X1 , L , X m , Y1 , L, Yn , Z1 , L , Zp ) (X , Y , Z )
y el cuerpo se compone por el conjunto de
tuplas (X:x, Y:y, Z:z) tal que existe una tupla en
A que tiene los valores x en X y los valores y en
Y, y existe una tupla en B que tiene los valores
y en Y y los valores z en Z.
- Una reunin natural tambin se puede definir
mediante una combinacin de operadores,
tal y como se muestra a continuacin,
SNOMBRE SITUACION
S JOIN P
S#
Salazar
Salazar
Salazar
Jaimes
Jaimes
Bernal
Bernal
Corona
Corona
Corona
20
20
20
10
10
30
30
20
20
20
S1
S1
S1
S2
S2
S3
S3
S4
S4
S4
CIUDAD
P1
P4
P6
P2
P5
P2
P5
P1
P4
P6
P#
Tuerca
Birlo
Engrane
Perno
Leva
Perno
Leva
Tuerca
Birlo
Engrane
PNOMBRE COLOR
Rojo
Rojo
Rojo
Verde
Azul
Verde
Azul
Rojo
Rojo
Rojo
Londres
Londres
Londres
Pars
Pars
Pars
Pars
Londres
Londres
Londres
PESO
12
14
19
17
12
17
12
20
21
10
10
10
30
30
30
Pars
Pars
Pars
Pars
Pars
Pars
P1
P4
P6
P1
P4
P6
Tuerca
Birlo
Engrane
Tuerca
Birlo
Engrane
Rojo
Rojo
Rojo
Rojo
Rojo
Rojo
12
14
19
12
14
19
Londres
Londres
Londres
Londres
Londres
Londres
Jaimes
Jaimes
Jaimes
Bernal
Bernal
Bernal
S# SNOMBRE SITUACION
S2
S2
S2
S3
S3
S3
22
23
P#
P1
P2
P3
P4
P5
P6
P1
P2
P2
P2
P4
P5
B P#
P1
A DIVIDEBY B S#
S1
S2
C P#
P2
P4
A DIVIDEBY C S#
S1
S4
D P#
P1
P2
P3
P4
P5
P6
A DIVIDEBY D S#
S1
24
A MINUS (AMINUS B) .
natural a partir de
de
los
operadores
producto,
restriccin
la
de
y
A JOINB , A {X , Y } , B {Y, Z}
25
OPERACIONES ADICIONALES
Introduccin
- En los ltimos tiempos se han definido una serie
de operadores con el objeto de ampliar el
conjunto de operadores relacionales original.
- El objetivo de estos operadores es corregir
alguna de las defectos del lgebra relacional.
- El lgebra relacional definida a travs de los
operadores originales, no incluye capacidad
de clculo.
- El operador Ampliacin opera sobre escalares
y/o los valores de los atributos en las tuplas, y el
resultado se almacena en un nuevo atributo.
- El operador Resumen agrupa las tuplas de una
relacin mediante un criterio determinado, y
opera sobre los valores de un atributo, dando
lugar a un resultado para cada grupo.
- Tambin se ha extendido alguno de los
operadores clsicos.
- La Divisin Generalizada elimina la restriccin
de la divisin en la que la cabecera de la
relacin divisor deba ser un subconjunto de la
cabecera de la relacin dividendo.
- La Reunin Externa incluye en el resultado las
tuplas de las relaciones que no cumplen la
condicin, poniendo a valor nulo los atributos
de la otra relacin.
- Tambin existen Versiones Externas de la Unin
Interseccin y Diferencia, en las que no se
requiere la compatibilidad de las relaciones.
27
OPERACIONES ADICIONALES
Ampliacin
- Ampliacin (Extend). Operador unario que
genera una relacin con un atributo ms que
la relacin operando en la que se incluye el
resultado de una operacin entre escalares
y/o los valores de los atributos de cada tupla.
- La sintaxis de este operador es la siguiente,
EXTEND trmino ADD clculo AS atributo
donde clculo es cualquier operacin entre
escalares y/o valores de atributos de trmino, y
atributo no coincide con ningn atributo de
trmino.
- Un ejemplo podra ser el siguiente,
EXTEND P ADD ( PESO * 454 ) AS PESOGRS .
- Como el resultado del operador es una
relacin podra aparecer como operando en
otro operador, como sigue,
( EXTEND P ADD ( PESO * 454) AS PESOGRS )
WHERE PESOGRS > 10000
- Para evitar el anidamiento de operadores,
cuando se desea realizar varias ampliaciones
sobre la misma relacin, se podra modificar la
sintaxis anterior como sigue,
EXTEND trmino ADD clc1 AS atrib1 , clc2 AS atrib2
- Un ejemplo de esta sintaxis es la siguiente,
( EXTEND P ADD 'Peso en gramos' AS EXPLICACIN,
( PESO * 454 ) AS PESOGRS )
28
OPERACIONES ADICIONALES
Gramtica BNF de Ampliacin
ampliacin
: := EXTEND trmino ADD clculo AS atributo
clculo
: := atributo | literal |
funcin ( lista_de_clculos ) |
( clculo operador clculo )
lista_de_clculos
: := clculo | clculo , lista_de_clculos
operador
: := + | - | * | / | \
funcin
: := sqr | sqrt | log | ln | exp
ampliacin_multiple
: := EXTEND trmino ADD pares_clculos
pares_clculos
: := clculo AS atributo |
clculo AS atributo , ( pares_clculos)
29
OPERACIONES ADICIONALES
Resumen
- Resumen (Summarize). Operador unario que
genera una relacin en la que aparecen los
atributos por los que se agrupa y un atributo
adicional en el que aparece el resultado de
aplicar la operacin seleccionada sobre los
valores de un atributo en cada grupo.
- La sintaxis de este operador es la siguiente,
SUMMARIZE trmino GROUPBY (lista_con_comas_de_atributos)
ADD clculo_de_agregados AS atributo
donde clculo_de_agregados es una funcin
definida sobre un conjunto de valores, y que
se aplica a uno de los atributos de trmino.
- La lista_con_comas_de_atributos puede ser
una lista vaca en cuyo caso la funcin se
aplica sobre todas las tuplas de trmino.
- El operador SUMMARIZE aplicado sobre una
relacin vaca genera una relacin vaca.
- Este funcionamiento es errneo, ya que COUNT
y SUM debera dar cero, mientras que AVG,
MAX y MIN debera dar un resultado
indefinido.
- En SQL el funcionamiento es bastante extrao,
generando resultados incorrectos.
- Para poder aplicar diversas funciones sobre un
mismo agrupamiento se debe modificar la
sintaxis como sigue,
SUMMARIZE trmino GROUPBY (lista_con_comas_de_atributos)
ADD clculo_de_agreg1 AS atrib1 ,
clculo_de_agreg2 AS atrib2 .
30
OPERACIONES ADICIONALES
Ejemplos de Resumen
SUMMARIZE SP GROUPBY ( P# ) ADD SUM ( CANT ) AS CANTTOTAL )
SUMMARIZE SP GROUPBY ( ) ADD SUM ( CANT ) AS GRANTOTAL )
SUMMARIZE SP GROUPBY ( P# ) ADD SUM ( CANT ) AS CANTTOTAL ),
AVG ( CANT ) AS CANTMEDIO )
( ( SUMMARIZE ( P WHERE COLOR = 'Rojo' ) GROUPBY ( CIUDAD )
ADD COUNT AS N ) WHERE N > 5 ) [ CIUDAD]
( ( SUMMARIZE ( P WHERE COLOR = 'Rojo' ) GROUPBY ( CIUDAD )
ADD COUNT AS N ) WHERE N < 5 ) [ CIUDAD]
UNION ( P [ CIUDAD] MINUS ( P WHERE COLOR = 'Rojo') [ CIUDAD] )
31
OPERACIONES ADICIONALES
Divisin Generalizada
- La Divisin Generalizada (Generalized Divide)
es una extensin del operador divisin clsico
que se puede aplicar sobre cualquier pareja
de relaciones.
- Siendo A y B dos relaciones donde,
- La cabecera de A es ( X1 , L , X m , Y1 , L, Yn ) .
- La cabecera de B es Y1 , L , Yn , Z1 , L, Z p .
entonces se cumple que la expresin,
A DIVIDEBY B
genera una relacin donde,
- La cabecera es X1 , L , X m , Z 1 , L, Z p .
- El cuerpo se compone por el conjunto de
tuplas (X:x, Z:z) tal que existe una tupla en A
que tiene los valores x en X y los valores y en
Y, para todas las tuplas de B que tienen los
valores y en Y y los valores z en Z.
- En funcin de la cardinalidad de los conjuntos
de atributos de X, Y y Z se obtiene,
- Si Z es vaco, la divisin clsica entre A y B.
- Si X es vaco, la divisin clsica entre B y A.
- Si Y es vaco, el producto de A y B.
- Esta operacin se puede definir como,
32
OPERACIONES ADICIONALES
Ejemplos de Divisin Generalizada
A S#
S1
S1
S1
S2
S2
S3
S4
S4
S4
P#
A S#
S1
S1
S1
S2
S2
S3
S4
S4
S4
P#
P1
P2
P3
P1
P2
P2
P2
P3
P4
A P#
P1
P2
P3
P1
P2
P3
P1
P2
P2
P2
P3
P4
P# J#
P1
P2
P3
P2
P3
P1
P2
P4
P4
A DIVIDEBY B
J1
J1
J1
J2
J2
J3
J3
J3
J4
S1
S1
S4
S4
P#
A DIVIDEBY B
P1
P2
P3
P#
P1
P2
P3
P2
P3
P1
P2
P4
P4
S# J#
S#
S1
J#
J1
J1
J1
J2
J2
J3
J3
J3
J4
A DIVIDEBY B
33
J#
J1
J1
J2
J2
J4
OPERACIONES ADICIONALES
Ejemplos de Divisin Generalizada
(A JOIN B)[S#,J#]
A[S#] TIMES B
S# P# J#
S#
J#
S#
J#
P#
S1
S1
S1
S1
S1
S1
S1
S2
S2
S2
S2
S2
S3
S3
S3
S4
S4
S4
S4
S4
S4
S4
S1
S1
S1
S2
S2
S2
S3
S3
S3
S4
S4
S4
S4
J1
J2
J3
J1
J2
J3
J1
J2
J3
J1
J2
J3
J4
S1
S1
S1
S1
S2
S2
S2
S2
S3
S3
S3
S3
S4
S4
S4
S4
J1
J2
J3
J4
J1
J2
J3
J4
J1
J2
J3
J4
J1
J2
J3
J4
(P1,P2,P3)
(P2,P3)
(P1,P2,P4)
(P4)
(P1,P2,P3)
(P2,P3)
(P1,P2,P4)
(P4)
(P1,P2,P3)
(P2,P3)
(P1,P2,P4)
(P4)
(P1,P2,P3)
(P2,P3)
(P1,P2,P4)
(P4)
P1
P1
P2
P2
P2
P3
P3
P1
P1
P2
P2
P2
P2
P2
P2
P2
P2
P2
P3
P3
P4
P4
J1
J3
J1
J2
J3
J1
J2
J1
J3
J1
J2
J3
J1
J2
J3
J1
J2
J3
J1
J2
J3
J4
34
OPERACIONES ADICIONALES
Reunin Externa
- La Reunin Externa es una generalizacin de
la reunin clsica, que genera al menos una
tupla en la relacin resultado para toda tupla
de las relaciones operando.
- Si alguna tupla de una relacin operando no
aparece en la relacin resultado de la reunin
clsica, aparece en una tupla de la reunin
externa con valores nulos en los atributos de la
otra relacin.
- Este operador no es una operacin primitiva,
aunque suele requerirse en muchos casos, por
lo que Codd ha incluido la reunin externa
theta como operador bsico del lgebra.
- En seudo-SQL se podra enunciar la reunin
externa natural como sigue,
SELECT S.*, SP.P#, SP.CANT
FROM S, SP
WHERE S.S# = SP.S#
UNION
SELECT S.*, NULL, NULL
FROM S
WHERE NOT EXISTS
( SELECT *
FROM SP
WHERE SP.S# = S.S#
35
OPERACIONES ADICIONALES
Problemas de la Reunin Externa
- Este operador presenta diferentes problemas,
como los que siguen:
- La equivalencia entre la reunin natural y la
equirreunin, la primera es una proyeccin
de la segunda, no se mantiene en el caso
de la reunin externa.
- Por esta razn la inclusin de esta operacin
en los lenguajes existentes, basados en las
proyecciones, suele ser complejo.
- La aparicin de nulos en el resultado puede
asociar a valor desconocido o bien a que la
propiedad no se aplica.
- Los nulos pueden aparecer en las claves
primarias de la relacin resultado, de modo
que el resultado no puede definirse como
una relacin base
- La reunin externa natural es tericamente
ms importante que la reunin externa theta,
pero Codd slo incluye la segunda en el
lgebra.
- Adems dado que la primera no se puede
derivar de la segunda, la excluye de modo
global del lgebra.
36
OPERACIONES ADICIONALES
Otros Operadores
- El planteamiento para definir la Unin Externa,
la Interseccin Externa y la Diferencia Externa,
es comn a todas ellas,
- Se aaden los atributos no comunes a cada
una de las relaciones operando, de modo
que se convierten en compatibles.
- En cada tupla se asigna el valor nulo para
cada uno de los atributos adicionales.
- Posteriormente se implementa la operacin.
- Como en la reunin externa, la unin externa
presenta serios problemas de interpretacin de
los nulos.
- La interseccin externa siempre genera una
relacin vaca, excepto en el caso de que las
relaciones operando sean compatibles.
- Si la relaciones operando no son compatibles,
la diferencia externa siempre genera como
resultado la primera relacin operando.
- Por todo lo anterior, slo la unin externa se
incluye en el modelo relacional.
- Existen otro conjuntos de generalizaciones de
los operadores clsicos, que se denominan de
un modo global como Operaciones Quizs.
- Se asocian a una nueva lgica de tres valores:
Verdadero, Falso y Desconocido.
- Desconocido aparece cuando se comparan
dos valores nulos.
37