You are on page 1of 12

UNIDAD V.

ALGEBRA RELACIONAL
El lgebra relacional es un lenguaje de consulta procedimental. Consta de un conjunto de
operaciones que toman como entrada una o dos relaciones y producen como resultado
una nueva relacin. Las operaciones fundamentales del lgebra relacional son seleccin,
proyeccin, unin, diferencia de conjuntos, producto cartesiano y renombramiento.
Adems de las operaciones fundamentales hay otras operaciones, por ejemplo,
interseccin de conjuntos, reunin natural, divisin y asignacin. Estas operaciones se
definirn en trminos de las operaciones fundamentales.
5.1 OPERACIONES FUNDAMENTALES DEL ALGEBRA RELACIONAL.
Las operaciones seleccin, proyeccin y renombramiento se denominan operaciones
unarias porque operan sobre una sola relacin. Las otras tres operaciones operan sobre
pares de relaciones y se denominan, por lo tanto, operaciones binarias.
La operacin seleccin
La operacin seleccin selecciona tuplas que satisfacen un predicado dado. Se utiliza la
letra griega sigma minscula () para denotar la seleccin. El predicado aparece como
subndice de . La relacin del argumento se da entre parntesis a continuacin de .
Si la relacin prstamo es como se muestra en la Figura 3.10. Se pueden buscar todas
las tuplas en las que el importe prestado sea mayor que 1.200 escribiendo
importe>1200 (prstamo)
En general, se permiten las comparaciones que utilizan =, , <, , > o en el predicado de
seleccin. Adems, se pueden combinar varios predicados en uno mayor utilizando las
conectivas y () y o (). Por tanto, para encontrar las tuplas correspondientes a
prstamos de ms de 1.200 concedidos por la sucursal de Navacerrada, se escribe
nombre-sucursal = Navacerrada importe>1200 (prstamo)

FIGURA 3.10. Resultado de nombre-sucursal = Navacerrada (prstamo).


El predicado de seleccin puede incluir comparaciones entre dos atributos. Para ilustrarlo,
considrese la relacin responsable-prstamo, que consta de tres atributos: nombrecliente, nombre-banquero y nmero-prstamo, que especifica que un empleado concreto
es el responsable del prstamo concedido a un cliente. Para hallar todos los clientes que
se llaman igual que su responsable de prstamos se puede escribir
nombre-cliente = nombre-banquero (responsable-prstamo)
Dado que el valor especial nulo indica valor desconocido o inexistente, cualquier
comparacin que implique a un valor nulo se evala como falsa.

La operacin proyeccin
Supngase que se desea hacer una lista de todos los nmeros de prstamo y del importe
de los mismos, pero sin que aparezcan los nombres de las sucursales. La operacin
proyeccin permite producir esta relacin. La operacin proyeccin es una operacin
unaria que devuelve su relacin de argumentos, excluyendo algunos argumentos. Dado
que las relaciones son conjuntos, se eliminan todas las filas duplicadas. La proyeccin se
denota por la letra griega mayscula pi (). Se crea una lista de los atributos que se
desea que aparezcan en el resultado como subndice de . La relacin de argumentos se
escribe a continuacin entre parntesis. Por tanto, la consulta para crear una lista de
todos los nmeros de prstamo y del importe de los mismos puede escribirse como
nmero-prstamo, importe (prstamo)
Composicin de operaciones relacionales
Es importante el hecho de que el resultado de una operacin relacional sea tambin una
relacin. Considrese la consulta ms compleja Encontrar los clientes que viven en
Peguerinos. Hay que escribir:

FIGURA 3.11. Nmeros de prstamo y sus importes.


nombre-cliente (ciudad-cliente = Peguerinos (cliente))
Tngase en cuenta que, en vez de dar en el argumento de la operacin proyeccin el
nombre de una relacin, se da una expresin que se evala como una relacin. En
general, dado que el resultado de una operacin del lgebra relacional es del mismo tipo
(relacin) que los datos de entrada, las operaciones del lgebra relacional pueden
componerse para formar una expresin del lgebra relacional
.
La operacin unin
Considrese una consulta para averiguar el nombre de todos los clientes del banco que
tienen una cuenta, un prstamo o ambas cosas. Obsrvese que la relacin cliente no
contiene esa informacin, dado que los clientes no necesitan tener ni cuenta ni prstamo
en el banco. Se conoce la manera de averiguar los nombres de todos los clientes con
prstamos en el banco:
nombre-cliente (prestatario)
Tambin se conoce la manera de averiguar el nombre de los clientes con cuenta en el
banco:
nombre-cliente (impositor)

Para contestar a la consulta hace falta la unin de estos dos conjuntos; es decir, hacen
falta todos los nombres de clientes que aparecen en alguna de las dos relaciones o en
ambas. Estos datos se pueden averiguar mediante la operacin binaria unin, denotada,
como en la teora de conjuntos, por . Por tanto, la expresin buscada es
nombre-cliente (prestatario) nombre-cliente (impositor)
Por tanto, para que una operacin unin r s sea vlida hay que exigir que se cumplan
dos condiciones:
1. Las relaciones r y s deben ser de la misma aridad. Es decir, deben tener el mismo
nmero de atributos.
2. Los dominios de los atributos i-simos de r y de s deben ser iguales para todo i.
Tngase en cuenta que r y s pueden ser, en general, relaciones temporales que sean
resultado de expresiones del lgebra relacional.
La operacin diferencia de conjuntos
La operacin diferencia de conjuntos, denotada por , permite buscar las tuplas que
estn en una relacin pero no en la otra. La expresin r s da como resultado una
relacin que contiene las tuplas que estn en r pero no en s. Se pueden buscar todos los
clientes del banco que tienen abierta una cuenta pero no tienen concedido ningn
prstamo escribiendo
nombre-cliente (impositor) nombre-cliente (prestatario)
La relacin resultante de esta consulta aparece en la Figura 3.13. Como en el caso de la
operacin unin, hay que asegurarse de que las diferencias de conjuntos se realicen
entre relaciones compatibles. Por tanto, para que una

FIGURA 3.12. Nombres de todos los clientes que tienen un prstamo o una cuenta.

FIGURA 3.13. Clientes con cuenta abierta pero sin prstamo concedido.

Operacin diferencia de conjuntos r s sea vlida hay que exigir que las relaciones r y s
sean de la misma aridad y que los dominios de los atributos i-simos de r y s sean
iguales.
La operacin producto cartesiano
La operacin producto cartesiano, denotada por un aspa (x), permite combinar
informacin de cualesquiera dos relaciones. El producto cartesiano de las relaciones r1 y
r2 como r1 x r2. Recurdese que las relaciones se definen como subconjuntos del
producto cartesiano de un conjunto de dominios. A partir de esta definicin ya se debe
tener una intuicin sobre la definicin de la operacin producto cartesiano. Sin embargo,
dado que el mismo nombre de atributo puede aparecer tanto en r1 como en r2, hay que
crear un esquema de denominaciones para distinguir entre ambos atributos. En este caso
se logra adjuntando al atributo el nombre de la relacin de la que proviene originalmente.
Por ejemplo, el esquema de relacin de r = prestatario x prstamo es
(Prestatario. Nombre - cliente, prestatario. Nmero-prstamo, prstamo. nombre-sucursal,
prstamo.
nmero-prstamo, prstamo . importe)
Con este esquema se puede distinguir entre prestatario. nmero-prstamo y prstamo.
nmero-prstamo. Para los atributos que slo aparecen en uno de los dos esquemas se
suele omitir el prefijo con el nombre de la relacin Por tanto, se puede escribir el esquema
de relacin de r como
(nombre-cliente, prestatario. nmero-prstamo,
nombre-sucursal, prstamo. nmero-prstamo, importe)
El acuerdo de denominaciones precedente exige que las relaciones que sean argumentos
de la operacin producto cartesiano tengan nombres diferentes. Esta exigencia causa
problemas en algunos casos, como cuando se desea calcular el producto cartesiano de
una relacin consigo misma. Se produce un problema similar si se utiliza el resultado de
una expresin del lgebra relacional en un producto cartesiano, dado que har falta un
nombre para la relacin para poder hacer referencia a sus atributos.
Ahora que se conoce el esquema de relacin de r = prestatario x prstamo hay que
averiguar las tuplas que aparecern en r. Supngase que se tienen n1 tuplas en
prestatario y n2 tuplas en prstamo. Por tanto, hay n1 * n2 maneras de escoger un par de
tuplas, una tupla de cada relacin; por lo que hay n1 * n2 tuplas en r. En concreto,
obsrvese que para algunas tuplas t de r puede ocurrir que t[prestatario . nmeroprstamo] t[prstamo.nmero-prstamo]. En general, si se tienen las relaciones r1 (R1)
y r2 (R2), r1 x r2 es una relacin cuyo esquema es la concatenacin de R1 y de R2. La
relacin R contiene todas las tuplas t para las que hay unas tuplas t1 en r1 y t2 en r2 para
las que t[R1] = t1[R1] y t[R2] = t2[R2.
La operacin renombramiento
A diferencia de las relaciones de la base de datos, los resultados de las expresiones de
lgebra relacional no tienen un nombre que se pueda utilizar para referirse a ellas.
Resulta til poder ponerles nombre; el operador

Renombramiento, denotado por la letra griega rho minscula (), permite realizar esta
tarea. Dada una expresin E del lgebra relacional, la expresin
x (E)
Devuelve el resultado de la expresin E con el nombre x.. Por tanto, tambin se puede
aplicar la operacin renombramiento a una relacin r para obtener la misma relacin con
un nombre nuevo. Otra forma de la operacin renombramiento es la siguiente. Supngase
que una expresin del lgebra relacional E tiene aridad n. Por tanto, la expresin
x (A1, A2, An) (E)
Devuelve el resultado de la expresin E con el nombre x y con los atributos con el nombre
cambiado a A1, A2,, An. Paso 1: Para calcular la relacin intermedia hay que comparar
los valores de los saldos de todas las cuentas.
Esta comparacin se puede hacer calculando el producto cartesiano cuenta x cuenta y
formando una seleccin para comparar el valor de cualesquiera dos saldos que
aparezcan en una tupla. En primer lugar hay que crear un mecanismo para distinguir entre
los dos atributos saldo. Se utilizar la operacin renombramiento para cambiar el nombre
de una referencia a la relacin cuenta. La relacin temporal que se compone de los saldos
que no son el mximo puede escribirse ahora como
cuenta.saldo (cuenta.saldo < d. saldo (cuenta x d (cuenta)))
Paso 2: La consulta para averiguar el mximo saldo de cuenta del banco puede escribirse
de la manera siguiente:
saldo (cuenta) cuenta.saldo (cuenta.saldo < d.saldo(cuenta x d (cuenta)))
Considrese la siguiente consulta como un nuevo ejemplo de la operacin
renombramiento: Averiguar los nombres de todos los clientes que viven en la misma
calle y en la misma ciudad que Gmez. Se puede obtener la calle y la ciudad en la que
vive Gmez escribiendo
calle-cliente, ciudad-cliente (nombre-cliente = Gmez (cliente))
Sin embargo, para hallar a otros clientes que vivan en esa calle y en esa ciudad hay que
hacer referencia por segunda vez a la relacin cliente. En la consulta siguiente se utiliza la
operacin renombramiento sobre la expresin anterior para darle al resultado el nombre
direccin-Gmez y para cambiar el nombre de los atributos a calle y ciudad en lugar de
calle-cliente y ciudad-cliente:
cliente.nombre-cliente (cliente.calle-cliente = direccin-Gmez
cliente.ciudad-cliente = direccin-Gmez. ciudad (cliente
direccin-Gmez (calle, ciudad) (calle-cliente, ciudad-cliente
(nombre-cliente = Gmez (cliente)))))
La operacin renombramiento no es estrictamente necesaria, dado que es posible utilizar
una notacin posicional para los atributos. La notacin posicional tambin se aplica a los
resultados de las operaciones del lgebra relacional.

5.2 OTRAS OPERACIONES DEL ALGEBRA RELACIONAL.


Las operaciones fundamentales del lgebra relacional son suficientes para expresar
cualquier consulta del lgebra relacional. Sin embargo, si uno se limita nicamente a las
operaciones fundamentales, algunas consultas habituales resultan de expresin
intrincada. Por tanto, se definen otras operaciones que no aaden potencia al lgebra,
pero que simplifican las consultas habituales. Para cada operacin nueva se facilita una
expresin equivalente utilizando slo las operaciones fundamentales.
La operacin interseccin de conjuntos
La interseccin de conjuntos (). Supngase que se desea averiguar todos los clientes
que tienen un prstamo concedido y una cuenta abierta. Utilizando la interseccin de
conjuntos se puede escribir
nombre-cliente (prestatario)nombre-cliente (impositor)
La operacin reunin natural
Suele resultar deseable simplificar ciertas consultas que exigen un producto cartesiano.
Generalmente, las consultas que implican un producto cartesiano incluyen un operador
seleccin sobre el resultado del producto cartesiano. Considrese la consulta Hallar los
nombres de todos los clientes que tienen concedido un prstamo en el banco y averiguar
el importe del mismo. En primer lugar se calcula el producto cartesiano de las relaciones
prestatario y prstamo. Luego, se seleccionan las tuplas que slo ataen al mismo
nmero-prstamo, seguidas por la proyeccin de nombre-cliente, nmero-prstamo e
importe resultantes:
nombre-cliente, prstamo.nmero-prstamo, importe(prestatario.nmero-prstamo =
prstamo.nmero-prstamo (prestatario prstamo))
La reunin natural es una operacin binaria que permite combinar ciertas selecciones y un
producto cartesiano en una sola operacin. Se denota por el smbolo de la reunin. La
operacin reunin natural forma un producto cartesiano de sus dos argumentos, realiza
una seleccin forzando la igualdad de los atributos que aparecen en ambos esquemas de
relacin y, finalmente, elimina los atributos duplicados. Esta consulta puede expresarse
utilizando la reunin natural de la manera siguiente:
nombre-cliente, nmero-prstamo, importe (prestatario prstamo)
La operacin divisin
La operacin divisin, denotada por , resulta adecuada para las consultas que incluyen
la expresin para todos.
Formalmente, sean r(R) y s(S) relaciones y S R; es decir, todos los atributos del
esquema S estn tambin en el esquema R. La relacin r s es una relacin del
esquema R S (es decir, del esquema que contiene todos los atributos del esquema R
que no estn en el esquema S). Una tupla t est en r s si y slo si se cumplen estas
dos condiciones:

1. t est en R S (r)
2. Para cada tupla tS de s hay una tupla tr de r que cumple las dos condiciones
siguientes:
a. tr[S] = ts[S]
b. tr[R S] = t
Puede resultar sorprendente descubrir que, dados una operacin divisin y los esquemas
de las relaciones, se puede, de hecho, definir la operacin divisin en trminos de las
operaciones fundamentales. Sean r(R) y s(S) dadas, con S R:
r s = R S (r) R S ((R S (r) x s) R S, S (r))
Para comprobar que esta expresin es verdadera, obsrvese que R S (r) da todas las
tuplas t que cumplen la primera condicin de la definicin de la divisin. La expresin del
lado derecho del operador diferencia de conjuntos,
R S ((R S (r) x s) R S, S (r)),
sirve para borrar esas tuplas que no cumplen la segunda condicin de la definicin de la
divisin. Esto se logra de la manera siguiente. Considrese R S (r) s.
Esta relacin
est en el esquema R y empareja cada tupla de R S (r) con cada tupla de s. La
expresin R S, S (r) slo reordena los atributos de r.
Por tanto, (R S (r) s)
R S, S (r) genera los pares de tuplas de R S (r) y de s
que no aparecen en r. Si una tupla tj est en
R S ((R S (r) x s) R S, S (r)),
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 de los atributos R S que no aparece en r s.
Estos valores son
los que se eliminan de R S (r).
La operacin asignacin
En ocasiones resulta conveniente escribir una expresin del lgebra relacional por partes
utilizando la asignacin a una variable de relacin temporal. La operacin asignacin,
denotada por , acta de manera parecida a la asignacin de los lenguajes de
programacin
5.3 LGEBRA RELACIONAL EXTENDIDA.
Las operaciones bsicas del lgebra relacional se han ampliado de varias maneras. Una
ampliacin sencilla es permitir operaciones aritmticas como parte de la proyeccin. Una
ampliacin importante es permitir operaciones de agregacin, como el clculo de la suma
de los elementos de un conjunto, o su media. Otra ampliacin importante es la operacin
reunin externa, que permite a las expresiones del lgebra relacional trabajar con los
valores nulos que modelan la informacin que falta.

Proyeccin generalizada
La operacin proyeccin generalizada ampla la operacin proyeccin permitiendo que
se utilicen funciones aritmticas en la lista de proyeccin. La operacin proyeccin
generalizada tiene la forma
F1, F2, , Fn (E)
donde E es cualquier expresin del lgebra relacional y F1, F2, , Fn son expresiones
aritmticas que incluyen constantes y atributos en el esquema de E. Como caso especial
la expresin aritmtica puede ser simplemente un atributo o una constante. Por ejemplo,
supngase que se dispone de una relacin informacin-crdito, como se muestra en la
Figura 3.25, que da el lmite de crdito y el importe dispuesto

FIGURA 3.25. La relacin informacin-crdito.


hasta el momento presente (el saldo-crdito de la cuenta). Si se desea averiguar el
importe disponible por cada persona, se puede escribir la expresin siguiente:
nombre-cliente, lmite - saldo-crdito (informacin-crdito)
El atributo resultante de la expresin lmite saldo-crdito no tiene un nombre. Se puede
aplicar la operacin renombramiento al resultado de la proyeccin generalizada para darle
un nombre. Como conveniencia notacional, el renombramiento de atributos se puede
combinar con la proyeccin generalizada como se ilustra a continuacin:
nombre-cliente, (lmite saldo-crdito) as crdito-disponible
(informacin-crdito)
Al segundo atributo de esta proyeccin generalizada se le ha dado el nombre crditodisponible. En la Figura 3.26 se muestra el resultado de aplicar esta expresin a la
relacin de la Figura 3.25.
Funciones de agregacin
Las funciones de agregacin son funciones que toman una coleccin de valores y
devuelven como resultado un nico valor. Por ejemplo, la funcin de agregacin

FIGURA 3.26. Resultado de nombre-cliente, (lmite saldo-crdito) as crdito-disponible


(informacin-crdito).

sum toma un conjunto de valores y devuelve la suma de los mismos. Por tanto, la funcin
sum aplicada a la coleccin {1, 1, 3, 4, 4, 11} devuelve el valor 24. La funcin de
agregacin avg devuelve la media de los valores. Cuando se aplica al conjunto anterior
devuelve el valor 4. La funcin de agregacin count devuelve el nmero de elementos del
conjunto, y devolvera 6 en el caso anterior. Otras funciones de agregacin habituales son
min y max, que devuelven el valor mnimo y el mximo de la coleccin. Las colecciones
en las que operan las funciones de agregacin pueden tener valores repetidos; el orden
en el que aparezcan los valores no tiene importancia. Estas colecciones se denominan
multiconjuntos. Los conjuntos son un caso especial de los multiconjuntos, en los que
slo hay una copia de cada elemento.
El smbolo G es la letra G en el tipo de letra caligrfico; se lee G caligrfica. La
operacin del lgebra relacional G significa que se debe aplicar agregacin, y el subndice
indica la operacin de agregacin a aplicar. El resultado de la expresin anterior es una
relacin con un nico atributo, que contiene una sola fila con un valor correspondiente a la
suma de los sueldos de todos los trabajadores que trabajan en el banco a tiempo parcial.
Hay casos en los que se deben borrar los valores repetidos antes de calcular una funcin
de agregacin. Si se desean borrar los valores repetidos hay que utilizar los mismos
nombres de funciones que antes, con la cadena de texto distinct precedida de un
guin aadida al final del nombre de la funcin (por ejemplo, count-distinct.
Esta consulta se escribe de la manera siguiente:
Gcount-distinct(nombre-sucursal) (trabajo-por-horas)
Reunin externa
La operacin reunin externa es una ampliacin de la operacin reunin para trabajar
con la informacin que falta.
La reunin externa por la izquierda ( ) toma todas las tuplas de la relacin de la
izquierda que no coincidan con ninguna tupla de la relacin de la derecha, las rellena con
valores nulos en todos los dems atributos de la relacin de la derecha y las aade al
resultado de la reunin natural.
La reunin externa por la derecha ( ) es simtrica de la reunin externa por la izquierda.
Las tuplas de la relacin de la derecha que no coincidan con ninguna tupla de la relacin
de la izquierda se rellenan con valores nulos y se aaden al resultado de la reunin
natural.
La reunin externa completa ( ) realiza estas dos operaciones, rellenando las tuplas de
la relacin de la izquierda que no coincidan con ninguna tupla de la relacin de la derecha
y las tuplas de la relacin de la derecha que no coincidan con ninguna tupla de la relacin
de la izquierda, y aadindolas al resultado de la reunin.

5.4 VALORES NULOS


En este apartado se define la forma en que las diferentes operaciones del lgebra
relacional tratan los valores nulos y las complicaciones que surgen cuando los valores
nulos participan en las operaciones aritmticas o en las comparaciones.
Como se ver, a menudo hay varias formas de tratar los valores nulos y, como resultado,
las siguientes definiciones pueden ser a veces arbitrarias. Las operaciones y las
comparaciones con valores nulos se deberan evitar siempre que sea posible. Dado que
el valor especial nulo indica valor desconocido o no existente, cualquier operacin
aritmtica (como +, , * y /) que incluya valores nulos debe devolver un valor nulo. De
manera similar, cualquier comparacin (como <, <=, >, >= y ) que incluya un valor nulo
se evala al valor especial desconocido; no se puede decir si el resultado de la
comparacin es cierto o falso, as que se dice que el resultado es el nuevo valor lgico
desconocido. Las comparaciones que incluyan nulos pueden aparecer dentro de
expresiones booleanas que incluyan las operaciones y (conjuncin), o (disyuncin) y no
(negacin). Se debe definir la forma en que estas operaciones tratan el valor lgico
desconocido.
y: (cierto y desconocido) = desconocido; (falso y desconocido) = falso; (desconocido y
desconocido) = desconocido.
o: (cierto o desconocido) = cierto; (falso o desconocido) = desconocido; (desconocido o
desconocido) = desconocido.
no: (no desconocido) = desconocido.
Ahora es posible describir la forma en que las diferentes operaciones del lgebra
relacional tratan los valores nulos. Nuestras definiciones siguen las usadas en el lenguaje
SQL.
Select: la operacin seleccin evala el predicado P en P(E) sobre cada tupla de E. Si
el predicado devuelve el valor cierto, se aade t al resultado. En caso contrario, si el
predicado devuelve desconocido o falso, t no se aade al resultado.
Reunin: las reuniones se pueden expresar como un producto cartesiano seguido de
una seleccin. Por tanto, la definicin de la forma en que la seleccin trata los nulos
tambin define la forma en que la operacin reunin trata los nulos. En una reunin
natural r sse puede observar de la definicin anterior que si dos tuplas, tr r y ts s,
tienen un valor nulo en un atributo comn, entonces las tuplas no casan.
Proyeccin: la operacin proyeccin trata los nulos como cualquier otro valor al eliminar
duplicados. As, si dos tuplas del resultado de la proyeccin son exactamente iguales, y
ambos tienen nulos en los mismos campos, se tratan como duplicados. La decisin es un
tanto arbitraria porque sin saber cul es el valor real no se sabe si los dos valores nulos
son duplicados o no.
Unin, interseccin, diferencia: estas operaciones tratan los valores nulos al igual que
la operacin proyeccin; tratan las tuplas que tienen los mismos valores en todos los
campos como duplicados incluso si algunos de los campos tienen valores nulos en ambas
tuplas. El comportamiento es un tanto arbitrario, especialmente en el caso de la
interseccin y la diferencia, dado que no se sabe si los valores reales (si existen)
representados por los nulos son los mismos.
Proyeccin generalizada: se describi la manera en que se tratan los nulos en las
expresiones al principio del Apartado 3.3.4. Las tuplas duplicadas que contienen valores
nulos se tratan como en la operacin proyeccin. Cuando hay nulos en los atributos

agregados, la operacin borra los valores nulos del resultado antes de aplicar la
agregacin. Si el multiconjunto resultante est vaco, el resultado agregado es nulo.
Obsrvese que el tratamiento de los valores nulos aqu es diferente que en las
expresiones aritmticas ordinarias; se podra haber definido el resultado de una operacin
de agregacin como nulo si incluso slo uno de los valores agregados es nulo. Sin
embargo, esto significara que un nico valor desconocido en un gran grupo podra hacer
que el resultado agregado sobre el grupo fuese nulo, y se perdera una gran cantidad de
informacin til.
Reunin externa: las operaciones de reunin externa se comportan como las
operaciones reunin, excepto sobre las tuplas que no aparecen en el resultado. Estas
tuplas se pueden aadir al resultado (dependiendo de si la operacin es, o ) aadiendo
nulos.
5.5 OPERACIONES MODIFICACIN DE LA BASE DE DATOS.
se abordar la manera de insertar, borrar o modificar informacin de la base de datos. Las
modificaciones de la base de datos se expresan utilizando la operacin asignacin. Las
asignaciones a las relaciones reales de la base de datos.
Borrado
Las solicitudes de borrado se expresan bsicamente igual que las consultas. Sin
embargo, en lugar de mostrar las tuplas al usuario, se eliminan de la base de datos las
tuplas seleccionadas. Slo se pueden borrar tuplas enteras; no se pueden borrar valores
de atributos concretos. En el lgebra relacional los borrados se expresan mediante
rrE
donde r es una relacin y E es una consulta del lgebra relacional. He aqu varios
ejemplos de solicitudes de borrado del lgebra relacional:
Borrar todas las cuentas de Gmez.
impositor impositor nombre-cliente = Gmez (impositor)
Borrar todos los prstamos con importes entre 0 y 50.
prstamo prstamo importe 0 and importe 50 (prstamo)
Borrar todas las cuentas de las sucursales sitas en Getafe.
r1 ciudad-sucursal = Getafe (cuenta sucursal)
r2 nombre-sucursal, nmero-cuenta, saldo (r1)
cuenta cuenta r2
Insercin
Para insertar datos en una relacin hay que especificar la tupla que se va a insertar o
escribir una consulta cuyo resultado sea un conjunto de tuplas que vayan a insertarse.
Evidentemente, el valor de los atributos de las tuplas insertadas deben ser miembros del

dominio de cada atributo. De manera parecida, las tuplas insertadas deben ser de la
aridad correcta. En el lgebra relacional las inserciones se expresan mediante
rrE
donde r es una relacin y E es una expresin del lgebra relacional. La insercin de una
sola tupla se expresa haciendo que E sea una relacin constante que contiene una tupla.
Supngase que se desea insertar el hecho de que Gmez tiene 1.200 en la cuenta C973 en la sucursal de Navacerrada. Hay que escribir
cuenta cuenta {(C-973, Navacerrada, 1200)} impositor impositor {(Gmez,
C-973)}
Actualizacin
Puede que, en algunas situaciones, se desee modificar un valor de una tupla sin modificar
todos los valores de la tupla. Se puede utilizar el operador proyeccin generalizada para
realizar esta tarea:
rF1, F2, , Fn (r)
donde cada Fi es el i-simo atributo de r, si el i-simo atributo no est actualizado, o, si
hay que actualizar el atributo, una expresin, que slo implica constantes y los atributos
de r, que da el nuevo valor del atributo. Si se desea seleccionar varias tuplas de r y slo
actualizar esas mismas tuplas, se puede utilizar la expresin siguiente, donde P denota la
condicin de seleccin que escoge las tuplas que hay que actualizar:
r F1, F2, , Fn (P (r)) (r P (r))
Para ilustrar el uso de la operacin actualizacin supngase que se realiza el pago de los
intereses y que hay que aumentar todos los saldos en un 5 por ciento. Hay que escribir
cuenta nombre-sucursal, nmero-cuenta, saldo, saldo * 1.05 (cuenta)
Supngase ahora que las cuentas con saldos superiores a 10.000 reciben un inters del
6 por ciento mientras que los dems reciben un 5 por ciento. Hay que escribir
cuenta NS, NC, saldo * 1.06 (saldo > 10000 (cuenta))
cuenta NS, NC, saldo * 1.05 (saldo 10000 (cuenta))
donde las abreviaturas NS y NC sustituyen a nombresucursal y a nmero-cuenta,
respectivamente.

You might also like