5.3. Secuencias de operaciones del algebra relacional

  

             

Ejemplo de utilización de secuencias de operaciones

Para obtener el nombre y el apellido de los empleados, tanto de administración como de producción, es necesario hacer una unión de EMPLEADOS_ADM yEMPLEADOS_PROD, y después  hacer  una  proyección  sobre  los  atributos  nombre  y  apellido.  La operación  se  puede expresar de las formas siguientes:

a) Se puede utilizar una sola expresión:

R := (EMPLEADOS_ADM EMPLEADOS_PROD) [nombre, apellido].

b) O bien podemos expresarlo en dos pasos:

•   EMPS := EMPLEADOS_ADMEMPLEADOS_PROD;

•   R := EMPS[nombre, apellido]

En los casos en que una consulta requiere efectuar muchas operaciones, resulta más sencilla la segunda alternativa, porque evita expresiones complejas.

Otros ejemplos de consultas formuladas con secuencias de operaciones

Veamos algunos ejemplos de consultas en la base de datos formuladas con secuencias de operaciones del álgebra relacional.

1) Para obtener el nombre del edificio y el número de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12, podemos utilizar la siguiente secuencia de operaciones:

•   := EDIFICIOS_EMP(supmediadesp > 12);
•   := DESPACHOS * A;
•   := B[edificio, número]

2) Supongamos ahora que se desea obtener el nombre y el apellido de todos los empleados
(tanto de administración como de producción) que están asignados al despacho 120 del edificio Marina. En este caso, podemos utilizar la siguiente secuencia:

•   A := EMPLEADOS_ADM ? EMPLEADOS_PROD;
•   B := A(edificiodesp = Marina y númerodesp = 120);
•   R := B[nombre, apellido].

3) Si queremos consultar el nombre del edificio y el número de los despachos que ningún empleado de administración tiene asignado, podemos utilizar esta secuencia:

   A := DESPACHOS [edificio, número];
•   B := EMPLEADOS_ADM[edificiodesp, númerodesp];
•   R := A – B.

4) Para obtener el DNI, el nombre y el apellido de todos los empleados de administración que tienen despacho, junto con la superficie de su despacho, podemos hacer lo siguiente:

•   A[DNI, nombre, apellido, edificio, número] := EMPLEADOS_ADM[DNI, nombre, apellido, edificiodesp, númerodesp];
•   B := A * DESPACHOS;
•   R := B[DNI, nombre, apellido, superficie].