06.09.2014 Views

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© FUOC • 71Z799014MO 47 El mo<strong>de</strong>lo relacional y el álgebra relacional<br />

Ejemplo <strong>de</strong> utilización <strong>de</strong> secuencias <strong>de</strong> operaciones<br />

Para obtener el nombre y el apellido <strong>de</strong> los empleados, tanto <strong>de</strong> administración como <strong>de</strong> producción,<br />

es necesario hacer una unión <strong>de</strong> EMPLEADOS_ADM y EMPLEADOS_PROD, y <strong>de</strong>spués<br />

hacer una proyección sobre los atributos nombre y apellido. La operación se pue<strong>de</strong><br />

expresar <strong>de</strong> las formas siguientes:<br />

a) Se pue<strong>de</strong> utilizar una sola expresión:<br />

R := (EMPLEADOS_ADM ∪ EMPLEADOS_PROD) [nombre, apellido].<br />

b) O bien po<strong>de</strong>mos expresarlo en dos pasos:<br />

• EMPS := EMPLEADOS_ADM ∪ EMPLEADOS_PROD;<br />

• R := EMPS[nombre, apellido]<br />

En los casos en que una consulta requiere efectuar muchas operaciones, resulta<br />

más sencilla la segunda alternativa, porque evita expresiones complejas.<br />

Otros ejemplos <strong>de</strong> consultas formuladas con secuencias <strong>de</strong> operaciones<br />

Veamos algunos ejemplos <strong>de</strong> consultas en la base <strong>de</strong> <strong>datos</strong> formuladas con secuencias <strong>de</strong> operaciones<br />

<strong>de</strong>l álgebra relacional.<br />

1) Para obtener el nombre <strong>de</strong>l edificio y el número <strong>de</strong> los <strong>de</strong>spachos situados en edificios en<br />

los que la superficie media <strong>de</strong> estos <strong>de</strong>spachos es mayor que 12, po<strong>de</strong>mos utilizar la siguiente<br />

secuencia <strong>de</strong> operaciones:<br />

Recordad que la base <strong>de</strong> <strong>datos</strong><br />

que se utiliza en los ejemplos se ha<br />

<strong>de</strong>scrito en la introducción <strong>de</strong>l apartado 5<br />

<strong>de</strong> esta unidad didáctica.<br />

• A := EDIFICIOS_EMP(supmedia<strong>de</strong>sp > 12);<br />

• B := DESPACHOS * A;<br />

• R := B[edificio, número]<br />

2) Supongamos ahora que se <strong>de</strong>sea obtener el nombre y el apellido <strong>de</strong> todos los empleados<br />

(tanto <strong>de</strong> administración como <strong>de</strong> producción) que están asignados al <strong>de</strong>spacho 120 <strong>de</strong>l edificio<br />

Marina. En este caso, po<strong>de</strong>mos utilizar la siguiente secuencia:<br />

• A := EMPLEADOS_ADM ∪ EMPLEADOS_PROD;<br />

• B := A(edificio<strong>de</strong>sp = Marina y número<strong>de</strong>sp = 120);<br />

• R := B[nombre, apellido].<br />

3) Si queremos consultar el nombre <strong>de</strong>l edificio y el número <strong>de</strong> los <strong>de</strong>spachos que ningún<br />

empleado <strong>de</strong> administración tiene asignado, po<strong>de</strong>mos utilizar esta secuencia:<br />

• A := DESPACHOS [edificio, número];<br />

• B := EMPLEADOS_ADM[edificio<strong>de</strong>sp, número<strong>de</strong>sp];<br />

• R := A – B.<br />

4) Para obtener el DNI, el nombre y el apellido <strong>de</strong> todos los empleados <strong>de</strong> administración que<br />

tienen <strong>de</strong>spacho, junto con la superficie <strong>de</strong> su <strong>de</strong>spacho, po<strong>de</strong>mos hacer lo siguiente:<br />

• A[DNI, nombre, apellido, edificio, número] := EMPLEADOS_ADM[DNI, nombre, apellido, edificio<strong>de</strong>sp,<br />

número<strong>de</strong>sp];<br />

• B := A * DESPACHOS;<br />

• R := B[DNI, nombre, apellido, superficie].<br />

5.4. Extensiones: combinaciones externas<br />

Para finalizar el tema <strong>de</strong>l álgebra relacional, analizaremos algunas extensiones<br />

útiles <strong>de</strong> la combinación.<br />

Las combinaciones que se han <strong>de</strong>scrito obtienen las tuplas <strong>de</strong>l producto cartesiano<br />

<strong>de</strong> dos relaciones que satisfacen una condición <strong>de</strong> combinación. Las tuplas <strong>de</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!