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:
• A := EDIFICIOS_EMP(supmediadesp > 12);
• B := DESPACHOS * A;
• R := 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].