Está en la página 1de 9

CAPÍTULO 3 EL MODELO RELACIONAL

3.2. EL ÁLGEBRA RELACIONAL

El álgebra relacional es un lenguaje de consulta proce- El predicado de selección puede incluir compara-
dimental. Consta de un conjunto de operaciones que ciones entre dos atributos. Para ilustrarlo, considérese
toman como entrada una o dos relaciones y producen la relación responsable-préstamo, que consta de tres
como resultado una nueva relación. Las operaciones atributos: nombre-cliente, nombre-banquero y número-
fundamentales del álgebra relacional son selección, pro- préstamo, que especifica que un empleado concreto es
yección, unión, diferencia de conjuntos, producto car- el responsable del préstamo concedido a un cliente. Para
tesiano y renombramiento. Además de las operaciones hallar todos los clientes que se llaman igual que su res-
fundamentales hay otras operaciones, por ejemplo, inter- ponsable de préstamos se puede escribir
sección de conjuntos, reunión natural, división y asig-
nación. Estas operaciones se definirán en términos de ∀nombre-cliente = nombre-banquero (responsable-préstamo)
las operaciones fundamentales.
Dado que el valor especial nulo indica «valor des-
3.2.1. Operaciones fundamentales conocido o inexistente», cualquier comparación que
implique a un valor nulo se evalúa como falsa.
Las operaciones selección, proyección y renombra-
miento se denominan operaciones unarias porque ope- 3.2.1.2. La operación proyección
ran sobre una sola relación. Las otras tres operaciones Supóngase que se desea hacer una lista de todos los
operan sobre pares de relaciones y se denominan, por números de préstamo y del importe de los mismos, pero
lo tanto, operaciones binarias. sin que aparezcan los nombres de las sucursales. La ope-
ración proyección permite producir esta relación. La
3.2.1.1. La operación selección operación proyección es una operación unaria que
La operación selección selecciona tuplas que satisfacen devuelve su relación de argumentos, excluyendo algu-
un predicado dado. Se utiliza la letra griega sigma nos argumentos. Dado que las relaciones son conjun-
minúscula (∀) para denotar la selección. El predicado tos, se eliminan todas las filas duplicadas. La proyección
aparece como subíndice de ∀. La relación del argumento se denota por la letra griega mayúscula pi (%). Se crea
se da entre paréntesis a continuación de ∀. Por tanto, una lista de los atributos que se desea que aparezcan en
para seleccionar las tuplas de la relación préstamo en el resultado como subíndice de %. La relación de argu-
que la sucursal es «Navacerrada» hay que escribir mentos se escribe a continuación entre paréntesis. Por
tanto, la consulta para crear una lista de todos los núme-
∀nombre-sucursal = «Navacerrada» ( préstamo) ros de préstamo y del importe de los mismos puede
escribirse como
Si la relación préstamo es como se muestra en la Figura
3.6, la relación que resulta de la consulta anterior es %número-préstamo, importe ( préstamo)
como se muestra en la Figura 3.10.
Se pueden buscar todas las tuplas en las que el La relación que resulta de esta consulta se muestra en
importe prestado sea mayor que 1.200 € escribiendo la Figura 3.11.

∀importe>1200 ( préstamo) 3.2.1.3. Composición de operaciones


relacionales
En general, se permiten las comparaciones que uti-
lizan =, !, <, ∀, > o # en el predicado de selección. Ade- Es importante el hecho de que el resultado de una ope-
más, se pueden combinar varios predicados en uno ración relacional sea también una relación. Considérese
mayor utilizando las conectivas y (#) y o (∃). Por tanto, la consulta más compleja «Encontrar los clientes que
para encontrar las tuplas correspondientes a préstamos viven en Peguerinos». Hay que escribir:
de más de 1.200 € concedidos por la sucursal de Nava-
cerrada, se escribe
número-préstamo importe
∀nombre-sucursal = «Navacerrada» # importe>1200 ( préstamo) P-11 900
P-14 1.500
P-15 1.500
número-préstamo nombre-sucursal importe
P-16 1.300

www.FreeLibros.org
P-15 Navacerrada 1.500 P-17 1.000
P-16 Navacerrada 1.300 P-23 2.000
P-93 500
FIGURA 3.10. Resultado de ∀nombre-sucursal = «Navacerrada» (prés-
tamo). FIGURA 3.11. Números de préstamo y sus importes.
59
FUNDAMENTOS DE BASES DE DATOS

%nombre-cliente (∀ciudad-cliente = «Peguerinos» (cliente)) nombre-cliente


Abril
Téngase en cuenta que, en vez de dar en el argumento Fernández
de la operación proyección el nombre de una relación, Gómez
se da una expresión que se evalúa como una relación. González
En general, dado que el resultado de una operación López
Pérez
del álgebra relacional es del mismo tipo (relación) que
Rupérez
los datos de entrada, las operaciones del álgebra rela- Santos
cional pueden componerse para formar una expresión Sotoca
del álgebra relacional. La composición de operacio- Valdivieso
nes del álgebra relacional para formar expresiones del
álgebra relacional es igual que la composición de ope- FIGURA 3.12. Nombres de todos los clientes que tienen
un préstamo o una cuenta.
raciones aritméticas (como +, –, * y ÷) para formar
expresiones aritméticas. La definición formal de las
expresiones de álgebra relacional se estudia en el Apar-
tado 3.2.2. ciones préstamo y prestatario. La primera es una rela-
ción con tres atributos, la segunda sólo tiene dos. Más
3.2.1.4. La operación unión aún, considérese la unión de un conjunto de nombres
de clientes y de un conjunto de ciudades. Una unión así
Considérese una consulta para averiguar el nombre de no tendría sentido en la mayor parte de los casos. Por
todos los clientes del banco que tienen una cuenta, un tanto, para que una operación unión r & s sea válida hay
préstamo o ambas cosas. Obsérvese que la relación que exigir que se cumplan dos condiciones:
cliente no contiene esa información, dado que los clien-
tes no necesitan tener ni cuenta ni préstamo en el banco. 1. Las relaciones r y s deben ser de la misma aridad.
Para contestar a esta consulta hace falta la información Es decir, deben tener el mismo número de atributos.
de la relación impositor (Figura 3.5) y la de la relación
prestatario (Figura 3.7). Se conoce la manera de averi- 2. Los dominios de los atributos i-ésimos de r y de s
guar los nombres de todos los clientes con préstamos deben ser iguales para todo i.
en el banco:
Téngase en cuenta que r y s pueden ser, en general,
%nombre-cliente ( prestatario) relaciones temporales que sean resultado de expresio-
nes del álgebra relacional.
También se conoce la manera de averiguar el nombre
de los clientes con cuenta en el banco: 3.2.1.5. La operación diferencia de conjuntos
La operación diferencia de conjuntos, denotada por –,
%nombre-cliente (impositor) permite buscar las tuplas que estén en una relación pero
no en la otra. La expresión r – s da como resultado una
Para contestar a la consulta hace falta la unión de estos relación que contiene las tuplas que están en r pero no
dos conjuntos; es decir, hacen falta todos los nombres en s.
de clientes que aparecen en alguna de las dos relacio- Se pueden buscar todos los clientes del banco que
nes o en ambas. Estos datos se pueden averiguar tienen abierta una cuenta pero no tienen concedido nin-
mediante la operación binaria unión, denotada, como gún préstamo escribiendo
en la teoría de conjuntos, por &. Por tanto, la expresión
buscada es %nombre-cliente (impositor) – %nombre-cliente ( prestatario)
%nombre-cliente ( prestatario) & %nombre-cliente (impositor) La relación resultante de esta consulta aparece en la
Figura 3.13.
La relación resultante de esta consulta aparece en la Como en el caso de la operación unión, hay que ase-
Figura 3.10. Téngase en cuenta que en el resultado hay gurarse de que las diferencias de conjuntos se realicen
diez tuplas, aunque hay siete prestatarios y seis impo- entre relaciones compatibles. Por tanto, para que una
sitores distintos. Esta discrepancia aparente se debe a
que Gómez, Santos y López son a la vez prestatarios e
impositores. Dado que las relaciones son conjuntos, se
nombre-cliente
eliminan los valores duplicados.
Obsérvese que en este ejemplo se toma la unión de Abril

www.FreeLibros.org
González
dos conjuntos, ambos consistentes en valores de nom-
Rupérez
bre-cliente. En general, se debe asegurar que las unio-
nes se realicen entre relaciones compatibles. Por FIGURA 3.13. Clientes con cuenta abierta pero sin prés-
ejemplo, no tendría sentido realizar la unión de las rela- tamo concedido.
60
CAPÍTULO 3 EL MODELO RELACIONAL

operación diferencia de conjuntos r – s sea válida hay Supóngase que se tienen n1 tuplas en prestatario y n2
que exigir que las relaciones r y s sean de la misma ari- tuplas en préstamo. Por tanto, hay n1 * n2 maneras de esco-
dad y que los dominios de los atributos i-ésimos de r y ger un par de tuplas, una tupla de cada relación; por lo
s sean iguales. que hay n1 * n2 tuplas en r. En concreto, obsérvese que
para algunas tuplas t de r puede ocurrir que t[prestata-
3.2.1.6. La operación producto cartesiano rio.número-préstamo] ! t[préstamo.número-préstamo].
En general, si se tienen las relaciones r1 (R1) y r2 (R2),
La operación producto cartesiano, denotada por un
r1 × r2 es una relación cuyo esquema es la concatena-
aspa (×), permite combinar información de cualesquiera
ción de R1 y de R2. La relación R contiene todas las
dos relaciones. El producto cartesiano de las relaciones
tuplas t para las que hay unas tuplas t1 en r1 y t2 en r2
r1 y r2 como r1 × r2.
para las que t[R1] = t1[R1] y t[R2] = t2[R2].
Recuérdese que las relaciones se definen como sub-
Supóngase que se desea averiguar los nombres de
conjuntos del producto cartesiano de un conjunto de
todos los clientes que tienen concedido un préstamo en
dominios. A partir de esta definición ya se debe tener
la sucursal de Navacerrada. Se necesita para ello infor-
una intuición sobre la definición de la operación pro-
mación de las relaciones préstamo y prestatario. Si se
ducto cartesiano. Sin embargo, dado que el mismo nom-
escribe
bre de atributo puede aparecer tanto en r1 como en r2,
hay que crear un esquema de denominaciones para dis-
tinguir entre ambos atributos. En este caso se logra
∀nombre-sucursal = «Navacerrada» ( prestatario × préstamo)
adjuntando al atributo el nombre de la relación de la que
entonces el resultado es la relación mostrada en la Figura
proviene originalmente. Por ejemplo, el esquema de
3.15. Se tiene una relación que sólo atañe a la sucursal
relación de r = prestatario × préstamo es
de Navacerrada. Sin embargo, la columna nombre-
(prestatario.nombre-cliente, prestatario.número- cliente puede contener clientes que no tengan conce-
préstamo, préstamo.nombre-sucursal, prés- dido ningún préstamo en la sucursal de Navacerrada.
tamo.número-préstamo, préstamo.importe) (Si no se ve el motivo por el que esto es cierto, recuér-
dese que el producto cartesiano toma todos los empa-
Con este esquema se puede distinguir entre prestata- rejamientos posibles de una tupla de prestatario con una
rio.número-préstamo y préstamo.número-préstamo. tupla de préstamo.)
Para los atributos que sólo aparecen en uno de los dos Dado que la operación producto cartesiano asocia
esquemas se suele omitir el prefijo con el nombre de la todas las tuplas de préstamo con todas las tuplas de pres-
relación. Esta simplificación no genera ambigüedad tatario, se sabe que, si un cliente tiene concedido un
alguna. Por tanto, se puede escribir el esquema de rela- préstamo en la sucursal de Navacerrada, hay alguna
ción de r como tupla de prestatario × préstamo que contiene su nom-
bre y que prestatario.número-préstamo = préstamo.nú-
(nombre-cliente, prestatario.número-préstamo, mero-préstamo. Por tanto, si escribimos
nombre-sucursal, préstamo.número-préstamo, ∀prestatario.número-préstamo = préstamo.número-préstamo
importe) (∀nombre-sucursal = «Navacerrada» ( prestatario ×
préstamo))
El acuerdo de denominaciones precedente exige que las
relaciones que sean argumentos de la operación pro-
sólo se obtienen las tuplas de prestatario × préstamo
ducto cartesiano tengan nombres diferentes. Esta exi-
que corresponden a los clientes que tienen concedido
gencia causa problemas en algunos casos, como cuando
un préstamo en la sucursal de Navacerrada.
se desea calcular el producto cartesiano de una relación
Finalmente, dado que sólo se desea obtener nombre-
consigo misma. Se produce un problema similar si se
cliente, se realiza una proyección:
utiliza el resultado de una expresión del álgebra rela-
cional en un producto cartesiano, dado que hará falta %nombre-cliente (∀prestatario.número-préstamo = préstamo.número-préstamo
un nombre para la relación para poder hacer referencia (∀nombre-sucursal = «Navacerrada» ( prestatario ×
a sus atributos. En el Apartado 3.2.1.7 se verá la manera
préstamo)))
de evitar estos problemas utilizando una operación
renombramiento. El resultado de esta expresión se muestra en la Figura
Ahora que se conoce el esquema de relación de r = 3.16 y es la respuesta correcta a la consulta formulada.
prestatario × préstamo hay que averiguar las tuplas que
aparecerán en r. Como se podía imaginar, se crea una
3.2.1.7. La operación renombramiento
tupla de r a partir de cada par de tuplas posible: una de

www.FreeLibros.org
la relación prestatario y otra de la relación préstamo. A diferencia de las relaciones de la base de datos, los
Por tanto, r es una relación de gran tamaño, como se resultados de las expresiones de álgebra relacional no
puede ver en la Figura 3.14, donde sólo se ha incluido tienen un nombre que se pueda utilizar para referirse a
una parte de las tuplas que forman parte de r. ellas. Resulta útil poder ponerles nombre; el operador
61
FUNDAMENTOS DE BASES DE DATOS

nombre-cliente prestatario.número-préstamo préstamo.número-préstamo nombre-sucursal importe


Santos P-17 P-11 Collado Mediano 900
Santos P-17 P-14 Centro 1.500
Santos P-17 P-15 Navacerrada 1.500
Santos P-17 P-16 Navacerrada 1.300
Santos P-17 P-17 Centro 1.000
Santos P-17 P-23 Moralzarzal 2.000
Santos P-17 P-93 Becerril 500
Gómez P-23 P-11 Collado Mediano 900
Gómez P-23 P-14 Centro 1.500
Gómez P-23 P-15 Navacerrada 1.500
Gómez P-23 P-16 Navacerrada 1.300
Gómez P-23 P-17 Centro 1.000
Gómez P-23 P-23 Moralzarzal 2.000
Gómez P-23 P-93 Becerril 500
López P-15 P-11 Collado Mediano 900
López P-15 P-14 Centro 1.500
López P-15 P-15 Navacerrada 1.500
López P-15 P-16 Navacerrada 1.300
López P-15 P-17 Centro 1.000
López P-15 P-23 Moralzarzal 2.000
López P-15 P-93 Becerril 500
… … … … …
… … … … …
… … … … …
Valdivieso P-17 P-11 Collado Mediano 900
Valdivieso P-17 P-14 Centro 1.500
Valdivieso P-17 P-15 Navacerrada 1.500
Valdivieso P-17 P-16 Navacerrada 1.300
Valdivieso P-17 P-17 Centro 1.000
Valdivieso P-17 P-23 Moralzarzal 2.000
Valdivieso P-17 P-93 Becerril 500
Fernández P-16 P-11 Collado Mediano 900
Fernández P-16 P-14 Centro 1.500
Fernández P-16 P-15 Navacerrada 1.500
Fernández P-16 P-16 Navacerrada 1.300
Fernández P-16 P-17 Centro 1.000
Fernández P-16 P-23 Moralzarzal 2.000
Fernández P-16 P-93 Becerril 500

FIGURA 3.14. Resultado de prestatario × préstamo.

nombre-cliente prestatario.número-préstamo préstamo.número-préstamo nombre-sucursal importe


Santos P-17 P-15 Navacerrada 1.500
Santos P-17 P-16 Navacerrada 1.300
Gómez P-23 P-15 Navacerrada 1.500
Gómez P-23 P-16 Navacerrada 1.300
López P-15 P-15 Navacerrada 1.500
López P-15 P-16 Navacerrada 1.300
Sotoca P-14 P-15 Navacerrada 1.500
Sotoca P-14 P-16 Navacerrada 1.300
Pérez P-93 P-15 Navacerrada 1.500
Pérez P-93 P-16 Navacerrada 1.300
Gómez P-11 P-15 Navacerrada 1.500
Gómez P-11 P-16 Navacerrada 1.300
Valdivieso P-17 P-15 Navacerrada 1.500
Valdivieso P-17 P-16 Navacerrada 1.300
Fernández P-16 P-15 Navacerrada 1.500
Fernández P-16 P-16 Navacerrada 1.300

www.FreeLibros.org
FIGURA 3.15. Resultado de ∀nombre-sucursal = «Navacerrada» (prestatario × préstamo).

62
CAPÍTULO 3 EL MODELO RELACIONAL

nombre-cliente saldo
Férnandez 500
López 400
700
FIGURA 3.16. Resultado de %nombre-cliente (∀prestatario.número- 750
préstamo = préstamo.número-préstamo (∀nombre-sucursal = «Navacerrada» 350
(prestatario × préstamo))).
FIGURA 3.17. Resultado de la subexpresión %cuenta-saldo
(∀cuenta-saldo < d.saldo (cuenta × ∋d (cuenta))).
renombramiento, denotado por la letra griega rho
minúscula (∋), permite realizar esta tarea. Dada una Paso 2: La consulta para averiguar el máximo saldo
expresión E del álgebra relacional, la expresión de cuenta del banco puede escribirse de la manera
siguiente:
∋x (E)
devuelve el resultado de la expresión E con el nombre x. %saldo (cuenta) – %cuenta.saldo (∀cuenta.saldo < d.saldo
Las relaciones r por sí mismas se consideran expre- (cuenta × ∋d (cuenta)))
siones (triviales) del álgebra relacional. Por tanto, tam-
bién se puede aplicar la operación renombramiento a En la Figura 3.18 se muestra el resultado de esta con-
una relación r para obtener la misma relación con un sulta.
nombre nuevo. Considérese la siguiente consulta como un nuevo
Otra forma de la operación renombramiento es la ejemplo de la operación renombramiento: «Averiguar
siguiente. Supóngase que una expresión del álgebra rela- los nombres de todos los clientes que viven en la misma
cional E tiene aridad n. Por tanto, la expresión calle y en la misma ciudad que Gómez». Se puede obte-
ner la calle y la ciudad en la que vive Gómez escribiendo
∋x (A1, A2, … An) (E)
%calle-cliente, ciudad-cliente (∀nombre-cliente = «Gómez» (cliente))
devuelve el resultado de la expresión E con el nombre
x y con los atributos con el nombre cambiado a A1, A2, Sin embargo, para hallar a otros clientes que vivan
…, An. en esa calle y en esa ciudad hay que hacer referencia
Para ilustrar el uso del renombramiento de las rela- por segunda vez a la relación cliente. En la consulta
ciones, considérese la consulta «Buscar el máximo saldo siguiente se utiliza la operación renombramiento sobre
de cuenta del banco». La estrategia empleada para obte- la expresión anterior para darle al resultado el nombre
ner el resultado es 1) calcular una relación intermedia dirección-Gómez y para cambiar el nombre de los atri-
consistente en los saldos que no son el máximo y 2) rea- butos a calle y ciudad en lugar de calle-cliente y ciu-
lizar la diferencia entre la relación %saldo (cuenta) y la dad-cliente:
relación intermedia recién calculada.
Paso 1: Para calcular la relación intermedia hay que %cliente.nombre-cliente (∀cliente.calle-cliente = dirección-Gómez #
comparar los valores de los saldos de todas las cuentas.
cliente.ciudad-cliente = dirección-Gómez. ciudad (cliente ×
Esta comparación se puede hacer calculando el producto
∋dirección-Gómez (calle, ciudad) (%calle-cliente, ciudad-cliente
cartesiano cuenta × cuenta y formando una selección
para comparar el valor de cualesquiera dos saldos que (∀nombre-cliente = «Gómez» (cliente)))))
aparezcan en una tupla. En primer lugar hay que crear
un mecanismo para distinguir entre los dos atributos
saldo. Se utilizará la operación renombramiento para El resultado de esta consulta, cuando se aplica a la rela-
cambiar el nombre de una referencia a la relación cuenta; ción cliente de la Figura 3.4, se muestra en la Figura
así, se puede hacer referencia dos veces a la relación sin 3.19.
ambigüedad alguna. La operación renombramiento no es estrictamente
La relación temporal que se compone de los saldos necesaria, dado que es posible utilizar una notación posi-
que no son el máximo puede escribirse ahora como cional para los atributos. Se pueden nombrar los atri-
butos de una relación de manera implícita utilizando
%cuenta.saldo (∀cuenta.saldo < d.saldo (cuenta × ∋d (cuenta))) una notación posicional, donde $1, $2, … hagan refe-

Esta expresión proporciona los saldos de la rela-


ción cuenta para los que aparece un saldo mayor saldo

www.FreeLibros.org
en alguna parte de la relación cuenta (cuyo nombre se 900
ha cambiado a d). El resultado contiene todos los sal-
dos salvo el máximo. Esta relación se muestra en la FIGURA 3.18. Saldo máximo de las cuentas del
Figura 3.17. banco.
63
FUNDAMENTOS DE BASES DE DATOS

nombre-cliente 3.2.3. Otras operaciones


Gómez
Pérez
Las operaciones fundamentales del álgebra relacio-
nal son suficientes para expresar cualquier consulta del
FIGURA 3.19. Los clientes que viven en la misma calle álgebra relacional1. Sin embargo, si uno se limita úni-
y en la misma ciudad que Gómez. camente a las operaciones fundamentales, algunas con-
sultas habituales resultan de expresión intrincada. Por
tanto, se definen otras operaciones que no añaden poten-
rencia al primer atributo, al segundo, etcétera. La nota- cia al álgebra, pero que simplifican las consultas habi-
ción posicional también se aplica a los resultados de las tuales. Para cada operación nueva se facilita una
operaciones del álgebra relacional. La siguiente expre- expresión equivalente utilizando sólo las operaciones
sión del álgebra relacional ilustra el uso de la notación fundamentales.
posicional con el operador unario ∀:

∀ $2=$3 (R × R ) 3.2.3.1. La operación intersección de conjuntos


La primera operación adicional del álgebra relacional
Si una operación binaria necesita distinguir entre las dos que se definirá es la intersección de conjuntos (().
relaciones que son sus operandos, se puede utilizar una Supóngase que se desea averiguar todos los clientes que
notación posicional parecida para los nombres de las tienen un préstamo concedido y una cuenta abierta. Uti-
relaciones. Por ejemplo, $R1 puede hacer referencia al lizando la intersección de conjuntos se puede escribir
primer operando y $R2, al segundo. Sin embargo, la
notación posicional no resulta conveniente para las per- %nombre-cliente ( prestatario) ( %nombre-cliente (impositor)
sonas, dado que la posición del atributo es un número
en vez de un nombre de atributo fácil de recordar. Por La relación resultante de esta consulta aparece en la
tanto, en este libro no se utiliza la notación posicional. Figura 3.20.
Obsérvese que se puede volver a escribir cualquier
expresión del álgebra relacional utilizando la intersec-
3.2.2. Definición formal del álgebra relacional ción de conjuntos sustituyendo la operación intersección
Las operaciones que se vieron en el Apartado 3.2.1 per- por un par de operaciones de diferencia de conjuntos,
miten dar una definición completa de las expresiones de la manera siguiente:
del álgebra relacional. Las expresiones fundamentales
del álgebra relacional se componen de alguna de las r ( s = r – (r – s)
siguientes: Por tanto, la intersección de conjuntos no es una ope-
ración fundamental y no añade potencia al álgebra rela-
• Una relación de la base de datos cional. Sencillamente, es más conveniente escribir r (
• Una relación constante s que r – (r – s).

Una relación constante se escribe listando sus tuplas 3.2.3.2. La operación reunión natural
entre llaves ({}), por ejemplo {(C-101,Centro,500) (C-
Suele resultar deseable simplificar ciertas consultas que
215, Becerril, 700)}.
exigen un producto cartesiano. Generalmente, las con-
Las expresiones generales del álgebra relacional se
sultas que implican un producto cartesiano incluyen un
construyen a partir de subexpresiones menores. Sean E1
operador selección sobre el resultado del producto car-
y E2 expresiones de álgebra relacional. Todas las siguien-
tesiano. Considérese la consulta «Hallar los nombres de
tes son expresiones del álgebra relacional:
todos los clientes que tienen concedido un préstamo en
el banco y averiguar el importe del mismo». En primer
• E1 & E2
lugar se calcula el producto cartesiano de las relaciones
• E1 – E2 prestatario y préstamo. Luego, se seleccionan las tuplas
• E1 × E2 que sólo atañen al mismo número-préstamo, seguidas
• ∀P(E1), donde P es un predicado de atributos de E1 por la proyección de nombre-cliente, número-préstamo
e importe resultantes:
• %S (E1), donde S es una lista que se compone de
algunos de los atributos de E1 %nombre-cliente, préstamo.número-préstamo, importe
• ∋x (E1), donde x es el nuevo nombre del resultado (∀prestatario.número-préstamo = préstamo.número-préstamo
de E1. ( prestatario × préstamo))

www.FreeLibros.org
1
En el Apartado 3.3 se introducen las operaciones que extienden la
potencia del álgebra relacional al tratamiento de los valores nulos y
los valores de agregación.

64
CAPÍTULO 3 EL MODELO RELACIONAL

nombre-cliente S se denotan por R – S, mientras que S – R denota los


Gómez nombres de los atributos que aparecen en S pero no en
Pérez R. Obsérvese que las operaciones unión, intersección y
Santos diferencia aquí operan sobre conjuntos de atributos, y
no sobre relaciones.
FIGURA 3.20. Clientes con una cuenta abierta y un Ahora se está preparado para una definición formal
préstamo en el banco de la reunión natural. Considérense dos relaciones r(R)
y s(S). La reunión natural de r y de s, denotada por r
s es una relación del esquema R & S definida for-
La reunión natural es una operación binaria que per- malmente de la manera siguiente:
mite combinar ciertas selecciones y un producto carte-
siano en una sola operación. Se denota por el símbolo r s = %R & S (∀r.A = s.A # r.A =
de la «reunión» . La operación reunión natural forma 1 1 2

un producto cartesiano de sus dos argumentos, realiza s.A 2 # … # r.An = s.An r × s)


una selección forzando la igualdad de los atributos que donde R ( S = {A1, A2, …, An}.
aparecen en ambos esquemas de relación y, finalmente, Como la reunión natural es fundamental para gran
elimina los atributos duplicados. parte de la teoría y de la práctica de las bases de datos
Aunque la definición de la reunión natural es com- relacionales, se ofrecen varios ejemplos de su uso.
pleja, la operación es sencilla de aplicar. Como ilustra-
ción, considérese nuevamente el ejemplo «Averiguar • Hallar los nombres de todas las sucursales con
los nombres de todos los clientes que tienen concedido clientes que tienen una cuenta abierta en el banco
un préstamo en el banco y averiguar su importe». Esta y que viven en Peguerinos.
consulta puede expresarse utilizando la reunión natural
de la manera siguiente: %nombre-sucursal (∀ciudad-cliente = «Peguerinos» (cliente
cuenta impositor))
%nombre-cliente, número-préstamo, importe ( prestatario préstamo)
La relación resultante de esta consulta aparece en
Dado que los esquemas de prestatario y de préstamo la Figura 3.22.
(es decir, Esquema-prestatario y Esquema-préstamo) Obsérvese que se escribió cliente cuenta
tienen en común el atributo número-préstamo, la ope- impositor sin añadir paréntesis para especificar el
ración reunión natural sólo considera los pares de tuplas orden en que se deben ejecutar las operaciones reu-
que tienen el mismo valor de número-préstamo. Esta nión natural de las tres relaciones. En el caso ante-
operación combina cada uno de estos pares en una sola rior hay dos posibilidades:
tupla en la unión de los dos esquemas (es decir, nom- — (cliente cuenta) impositor
bre-cliente, nombre-sucursal, número-préstamo, im- — cliente (cuenta impositor)
porte). Después de realizar la proyección, se obtiene la
relación mostrada en la Figura 3.21. No se especificó la expresión deseada porque las
Considérense dos esquemas de relación R y S que dos son equivalentes. Es decir, la reunión natural
son, por supuesto, listas de nombres de atributos. Si se es asociativa.
consideran los esquemas como conjuntos, en vez de
como listas, se pueden denotar los nombres de los atri- • Hallar todos los clientes que tienen una cuenta
butos que aparecen tanto en R como en S mediante R ( abierta y un préstamo concedido en el banco.
S, y los nombres de los atributos que aparecen en R, en %nombre-cliente ( prestatario impositor)
S o en ambos mediante R & S. De manera parecida, los
nombres de los atributos que aparecen en R pero no en Obsérvese que en el Apartado 3.2.3.1 se escribió
una expresión para esta consulta utilizando la inter-
sección de conjuntos. Aquí se repite esa expresión.
nombre-cliente número-préstamo importe %nombre-cliente ( prestatario) ( %nombre-cliente (impositor)
Fernández P-16 1.300
Gómez P-23 2.000
Gómez P-11 900
López P-15 1.500
Pérez P-93 500
nombre-sucursal
Santos P-17 1.000

www.FreeLibros.org
Sotoca P-14 1.500 Galapagar
Valdivieso P-17 1.000 Navacerrada

FIGURA 3.21. Resultado de %nombre-cliente, número-préstamo, FIGURA 3.22. Resultado de %nombre-sucursal (∀ ciudad-cliente =
(prestatario préstamo).
importe (cliente cuenta impositor )).
«Peguerinos»

65
FUNDAMENTOS DE BASES DE DATOS

La relación resultante de esta consulta se mostró ante- nombre-cliente nombre-sucursal


riormente en la Figura 3.20. Este ejemplo ilustra una Abril Collado Mediano
realidad común del álgebra relacional: se pueden Gómez Becerril
escribir varias expresiones del álgebra relacional González Centro
equivalentes que sean bastante diferentes entre sí. González Galapagar
López Navacerrada
Rupérez Moralzarzal
• Sean r(R) y s (S) relaciones sin atributos en común; Santos Galapagar
es decir, R ( S = Ø. (Ø denota el conjunto vacío.) Valdivieso Navacerrada
Por tanto, r s = r × s.
FIGURA 3.24. Resultado de %nombre-cliente, nombre-sucursal
La operación reunión zeta es una extensión de la ope- (impositor cuenta)).
ración reunión natural que permite combinar una selec-
ción y un producto cartesiano en una sola operación.
Considérense las relaciones r(R) y s(S), y sea ) un pre- Formalmente, sean r(R) y s(S) relaciones y S ∗ R; es
dicado de los atributos del esquema R & S. La opera- decir, todos los atributos del esquema S están también
ción reunión zeta r ) s se define de la manera en el esquema R. La relación r ÷ s es una relación del
siguiente: esquema R – S (es decir, del esquema que contiene todos
r ) s = ∀) (r × s) los atributos del esquema R que no están en el esquema
S). Una tupla t está en r ÷s si y sólo si se cumplen estas
3.2.3.3. La operación división dos condiciones:
La operación división, denotada por ÷, resulta adecuada 1. t está en %R – S (r)
para las consultas que incluyen la expresión «para
todos». Supóngase que se desea hallar a todos los clien- 2. Para cada tupla tS de s hay una tupla tr de r que
tes que tengan abierta una cuenta en todas las sucursa- cumple las dos condiciones siguientes:
les ubicadas en Arganzuela. Se pueden obtener todas a. tr[S] = ts[S]
las sucursales de Arganzuela mediante la expresión b. tr[R – S] = t

r1 = %nombre-sucursal (∀ciudad-sucursal = «Arganzuela» (sucursal)) Puede resultar sorprendente descubrir que, dados una
operación división y los esquemas de las relaciones, se
La relación resultante de esta expresión aparece en la puede, de hecho, definir la operación división en tér-
Figura 3.23. minos de las operaciones fundamentales. Sean r(R) y
Se pueden encontrar todos los pares (nombre-cliente, s(S) dadas, con S ∗ R:
nombre-sucursal) para los que el cliente tiene una cuenta
en una sucursal escribiendo r ÷ s = %R – S (r) – %R – S ((%R – S (r) × s) – %R – S, S (r))
Para comprobar que esta expresión es verdadera, obsér-
r2 = %nombre-cliente, nombre-sucursal (impositor cuenta) vese que %R – S (r) da todas las tuplas t que cumplen la
primera condición de la definición de la división. La
La Figura 3.24 muestra la relación resultante de esta expresión del lado derecho del operador diferencia de
expresión. conjuntos,
Ahora hay que hallar los clientes que aparecen en r2
con los nombres de todas las sucursales de r1. La ope- %R – S ((%R – S (r) × s) – %R – S, S (r)),
ración que proporciona exactamente esos clientes es la
operación división. La consulta se formula escribiendo sirve para borrar esas tuplas que no cumplen la segunda
condición de la definición de la división. Esto se logra
%nombre-cliente, nombre-sucursal (impositor cuenta) de la manera siguiente. Considérese %R – S (r) × s. Esta
÷ %nombre-sucursal (∀ciudad-sucursal = «Arganzuela» (sucursal)) relación está en el esquema R y empareja cada tupla de
%R – S (r) con cada tupla de s. La expresión %R – S, S (r)
El resultado de esta expresión es una relación que tiene sólo reordena los atributos de r.
el esquema (nombre-cliente) y que contiene la tupla Por tanto, (%R – S (r) × s) – %R – S, S (r) genera los pares
(González). de tuplas de %R – S (r) y de s que no aparecen en r. Si
una tupla tj está en
nombre-sucursal %R – S ((%R – S (r) × s) – %R – S, S (r)),

www.FreeLibros.org
Centro
Galapagar hay alguna tupla ts de s que no se combina con la tupla
tj para formar una tupla de r. Por tanto, tj guarda un valor
FIGURA 3.22. Resultado de %nombre-sucursal (∀ ciudad-sucursal = de los atributos R – S que no aparece en r ÷ s. Estos
(sucursal)).
«Arganzuela» valores son los que se eliminan de %R – S (r).
66
CAPÍTULO 3 EL MODELO RELACIONAL

3.2.3.4. La operación asignación resultado de la expresión a la derecha de + se asigna


En ocasiones resulta conveniente escribir una expresión a la variable relación a la izquierda de +. Esta varia-
del álgebra relacional por partes utilizando la asigna- ble relación puede utilizarse en expresiones posterio-
ción a una variable de relación temporal. La operación res.
asignación, denotada por +, actúa de manera parecida Con la operación asignación se pueden escribir las
a la asignación de los lenguajes de programación. Para consultas como programas secuenciales consistentes en
ilustrar esta operación, considérese la definición de la una serie de asignaciones seguida de una expresión cuyo
división dada en el Apartado 3.2.3.3. Se puede escribir valor se muestra como resultado de la consulta. En las
r ÷ s como consultas del álgebra relacional la asignación siempre
debe hacerse a una variable de relación intermedia. Las
temp1 + %R – S (r) asignaciones a relaciones permanentes constituyen una
temp2 + %R – S ((temp1 × s) – %R – S, S (r)) modificación de la base de datos. Este asunto se discu-
resultado = temp1 – temp2 tirá en el Apartado 3.4. Obsérvese que la operación asig-
nación no añade potencia alguna al álgebra. Resulta, sin
La evaluación de una asignación no hace que se mues- embargo, una manera conveniente de expresar las con-
tre ninguna relación al usuario. Por el contrario, el sultas complejas.

www.FreeLibros.org 67
.