5. El algebra relacional

Consultad el apartado 3 de esta unidad didáctica.

Como ya hemos comentado en el apartado dedicado a las operaciones del modelo relacional, el álgebra relacional se inspira en la teoría de conjuntos para especificar consultas en una base de datos relacional.

Para especificar una consulta en álgebra relacional, sean conjuntistas o específicamente relacionales se estudian en los subapartados 5.1 y 5.2 de esta unidad. preciso definir uno o más pasos que sirven para ir construyendo, mediante operaciones de álgebra relacional, una nueva relación que contenga los datos que responden a la consulta a partir de las relaciones almacenadas. Los lenguajes basados en el álgebra relacional son procedimentales, dado que los pasos que forman la consulta describen un procedimiento.

La visión que presentaremos es la de un lenguaje teórico y, por lo tanto, incluiremos sólo sus operaciones fundamentales, y no las construcciones que se podrían añadir a un lenguaje comercial para facilitar cuestiones como por ejemplo el orden de presentación del resultado, el cálculo de datos agregados, etc.

Una característica destacable de todas las operaciones del álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre relacional.
Implicaciones del cierre relacional          
El hecho de que el resultado de una operación del álgebra relacional sea una nueva relación tiene implicaciones importantes:
1. El resultado de una opera- ción puede actuar como operando de otra operación.
2. El resultado de una operación cumplirá todas las características que ya
conocemos de las relaciones: no-ordenación de las tuplas, ausencia de tuplas repetidas, etc.

Las operaciones del álgebra relacional han sido clasificadas según distintos criterios; de todos ellos indicamos los tres siguientes:

1)  Según se pueden expresar o no en términos de otras operaciones.

a)  Operaciones primitivas: son aquellas operaciones a partir de las cuales podemos definir el resto. Estas operaciones son la unión, la diferencia, el producto cartesiano, la selección y la proyección.

b)  Operaciones no primitivas: el resto de las operaciones del álgebra relacional que no son estrictamente necesarias, porque se pueden expresar en términos  de  las  primitivas;  sin  embargo,  las  operaciones  no  primitivas permiten formular algunas consultas de forma más cómoda. Existen distintas versiones del álgebra relacional, según las operaciones no primitivas que se incluyen. Nosotros estudiaremos las operaciones no primitivas que se utilizan con mayor frecuencia: la intersección y la combinación.

2)  Según el número de relaciones que tienen como operandos:

a)  Operaciones binarias: son las que tienen dos relaciones como operandos. Son binarias todas las operaciones, excepto la selección y la proyección.

b)  Operaciones unarias: son las que tienen una sola relación como operando. La selección y la proyección son unarias.

3)  Según se parecen o no a las operaciones de la teoría de conjuntos:

a)  Operaciones  conjuntistas:  son las que se parecen a las de  la teoría de conjuntos. Se trata de la unión, la intersección, la diferencia y el producto cartesiano.

Las operaciones del álgebra relacional clasificadas según  sean conjuntistas o específicamente relacionales se estudian en los subapartados 5.1 y 5.2 de esta unidad.

b)  Operaciones específicamente relacionales: son el resto de las operaciones; es decir, la selección, la proyección y la combinación.

Como ya hemos comentado anteriormente, las operaciones del álgebra relacional obtienen como resultado una nueva relación. Es decir que si hacemos una operación del álgebra como por ejemplo EMPLEADOS_ADM   EMPLEADOS_PROD para obtener la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD, el resultado de la operación es una nueva relación que tiene la unión de las tuplas de las relaciones de partida.

Esta nueva relación debe tener un nombre. En principio, consideramos que su nombre es la misma expresión del álgebra relacional que la obtiene; es decir, la misma expresión EMPLEADOS_ADM   EMPLEADOS_PROD. Puesto que este nombre es largo, en ocasiones puede ser interesante cambiarlo por uno más simple. Esto nos facilitará las referencias a la nueva relación, y será especialmente útil en los casos en los que queramos utilizarla como operando de otra operación. Usaremos la operación auxiliar redenominar con este objetivo.

La operación redenominar, que denotaremos con el símbolo :=, permite asignar un nombre R a la relación que resulta de una operación del álgebra relacional; lo hace de la forma siguiente:
                                 R := E,
siendo E la expresión de una operación del álgebra relacional.

En el ejemplo, para dar el nombre EMPLEADOS a la relación resultante de la operación EMPLEADOS_ADM   EMPLEADOS_PROD, haríamos:

EMPLEADOS := EMPLEADOS_ADM   EMPLEADOS_PROD.

Cada operación del álgebra relacional da unos nombres por defecto a los atributos del esquema de la relación resultante, tal y como veremos más adelante.

En algunos casos, puede ser necesario cambiar estos nombres por defecto por otros nombres. Por este motivo, también permitiremos cambiar el nombre de la relación y de sus atributos mediante la operación redenominar.

Utilizaremos también la operación redenominar para cambiar el esquema de una relación. Si una relación tiene el esquema S(B1, B2, ..., Bn) y queremos cambiarlo por R(A1, A2, ..., An), lo haremos de la siguiente forma:
                      R(A1, A2, ..., An) := S(B1, B2, ..., Bn).

A continuación presentaremos un ejemplo que utilizaremos para ilustrar las operaciones  del  álgebra  relacional.  Después  veremos  con  detalle  las  operaciones.

Supongamos que tenemos una base de datos relacional con las cuatro relaciones siguientes:

1)  La relación EDIFICIOS_EMP, que contiene datos de distintos edificios de los que una empresa dispone para desarrollar sus actividades.

2)  La relación DESPACHOS, que contiene datos de cada uno de los despachos que hay en los edificios anteriores.

3)  La relación EMPLEADOS_ADM, que contiene los datos de los empleados de la empresa que llevan a cabo tareas administrativas.

4)  La relación EMPLEADOS_PROD, que almacena los datos de los empleados de la empresa que se ocupan de tareas de producción.

A continuación describimos los esquemas de las relaciones anteriores y sus extensiones en un momento determinado:

•    Esquema y extensión de EDIFICIOS_EMP:

               

EDIFICIOS_EMP
edificio

supmediadesp

Marina 15
Diagonañ 10

•    Esquema y extensión de DESPACHOS:

 

DESPACHOS
edificio número superficie
Marina 120 10
Marina 230 20
Diagonal 120 10
Diagonal 440 10

•    Esquema y extensión de EMPLEADOS_ADM:

 

EMPLEADOS_ADM
DNI nombre apellido edificiodesp númerodesp
40.444.255 Juan García Marina 120
33.567.711 Marta Roca Marina 120

•    Esquema y extensión de EMPLEADOS_PROD:

 

EMPLEADOS_PROD
DNI nombre apellido edificiodesp númerodesp
33.567.711 Marta Roca Marina 120
55.898.425 Carlos Buendía Diagonal 120
77.232.144 Elena Pla Marina 230
21.335.245 Jorge Soler Nulo Nulo
88.999.210 Pedro González Nulo Nulo

Se considera que los valores nulos de los atributos edificiodesp y númerodesp de las relaciones EMPLEADOS_PROD y EMPLEADOS_ADM indican que el empleado correspondiente no tiene despacho.