5.2. Operaciones específicamente relacionales

5.2. Operaciones específicamente relacionales Dataprix Fri, 12/11/2009 - 15:10

Las operaciones específicamente relacionales son la selección, la proyección y la combinación.

 

5.2.1. Seleccion

5.2.1. Seleccion Dataprix Fri, 12/11/2009 - 15:11

 

         


Para obtener una relación que tenga todos los despachos del edificio Marina que tienen más de 12 metros cuadrados, podemos aplicar una selección a la relación DESPACHOS con una condición  de  selección  que  sea  edificio  =  Marina  y  superficie  >  12;  se  indicaría  DESPACHOS(edificio = Marina y superficie > 12).

En general, la condición de selección C está formada por una o más cláusulas de la forma:

Ai v,

o bien:

Ai Aj,

donde Ai y Aj son atributos de la relación T, es un operador de comparación* y v es un valor. Además, se cumple que:                                     

•En las cláusulas de la forma Ai v, v es un valor del dominio de Ai.

•En las cláusulas de la forma Ai, Aj, Ai y Aj tienen el mismo dominio.

Las cláusulas que forman una condición de selección se conectan con los siguientes operadores booleanos: “y” (?) y “o” (?).

 

A continuación definimos los atributos y la extensión de la relación resultante de una selección.


Ejemplo de selección

Si queremos obtener una relación con los despachos de la base de datos del ejemplo que están en el edificio Marina y que tienen una superficie de más de 12 metros cuadrados, haremos la siguiente selección:

R := DESPACHOS(edificio = Marina y superficie > 12).

La relación R resultante será:

 

             

5.2.2. Proyeccion

5.2.2. Proyeccion Dataprix Fri, 12/11/2009 - 15:12

            
            
 

 

Para obtener una relación que tenga sólo los atributos nombre y apellido de los empleados de administración, podemos hacer una proyección en la relaciónEMPLEADOS_ADM sobre estos dos atributos. Se indicaría de la forma siguiente: EMPLEADOS_ADM [nombre, apellido].

A continuación definiremos los atributos y la extensión de la relación resultante de una proyección.

 

Ejemplo de proyección

Si queremos obtener una relación R con el nombre y el apellido de todos los empleados de administración de la base de datos del ejemplo, haremos la siguiente proyección:

R := EMPLEADOS_ADM[nombre, apellido].

Entonces, la relación R resultante será:

 

                      

 

5.2.3. Combinacion

5.2.3. Combinacion Dataprix Fri, 12/11/2009 - 15:14

 

         

 

Para conseguir una relación que tenga los datos de cada uno de los empleados de administración junto con los datos de los despachos donde trabajan, podemos hacer una combinación  de  las  relaciones  EMPLEADOS_ADM  y  DESPACHOS,  donde  la  condición  de combinación indique lo siguiente: edificiodesp = edificio y númerodesp = número. La condición de combinación hace que el resultado sólo combine los datos de un empleado con los datos de un despacho si el edificiodesp y el númerodesp del empleado son iguales que
el edificio y el número del despacho, respectivamente. Es decir, la condición hace que los datos de un empleado se combinen con los datos del despacho donde trabaja, pero no con datos de otros despachos.

La combinación del ejemplo anterior se indicaría de la forma siguiente:

EMPLEADOS_ADM[edificiodesp = edificio, númerodesp = número]DESPACHOS.

Si se quiere combinar dos relaciones que tienen algún nombre de atributo común, sólo hace falta redenominar previamente los atributos repetidos de una de las dos.

En general, la condición B de una combinación T[B]S está formada por una o más comparaciones de la forma

Ai Aj,

donde Ai es un atributo de la relación T, Aj es un atributo de la relación S, ? es un operador de comparación y se cumple que Ai Aj tienen el mismo dominio. Las comparaciones de una condición de combinación se separan mediante comas.

A continuación definimos los atributos y la extensión de la relación resultante de una combinación.

Ejemplo de combinación

Supongamos que se desea encontrar los datos de los despachos que tienen una superficie mayor o igual que la superficie media de los despachos del edificio donde están situados. La siguiente combinación nos proporcionará los datos de estos despachos junto con los datos de su edificio (observad que es preciso redenominar previamente los atributos):

  EDIFICIOS(nombreeedficio,supmediadesp) := EDIFICIOS_EMP(edificio, supmediadesp),

R := EDIFICIOS[nombreedificio = edificio, supmediadesp<uperficie] DESPACHOS.

Entonces, la relación R resultante será:
 

Supongamos ahora que para obtener los datos de cada uno de los empleados de administración, junto con los datos del despacho donde trabajan, utilizamos la siguiente combinación:

R := EMPLEADOS_ADM[edificiodesp = edificio, númerodesp = número]DESPACHOS.

La relación R resultante será:

        

          

         

La relación R combina los datos de cada empleado con los datos de su despacho.

En ocasiones, la combinación recibe el nombre de ?-combinación, y cuando todas las comparaciones de la condición de la combinación tienen el operador “=”, se denomina equicombinación.

Según esto, la combinación del último ejemplo es una equicombinación.

Observad  que el  resultado  de  una equicombinación  siempre  incluye  una  o más parejas de atributos que tienen valores idénticos en todas las tuplas.

En el ejemplo anterior, los valores de edificiodesp coinciden con los de edificio, y los valores de númerodesp coinciden con los de número.

Puesto que uno de cada par de atributos es superfluo, se ha establecido una variante  de  combinación  denominada  combinación  natural,  con  el  fin  de eliminarlos.


Ejemplo de combinación natural

Si hacemos:

R := EDIFICIOS_EMP * DESPACHOS,

se considera que la condición es edificio edificio porque edificio es el único nombre de atributo que figura tanto en el esquema de EDIFICIOS_EMP como en el esquema de DESPACHOS.
El resultado de esta combinación natural es:

             

Notad que se ha eliminado uno de los atributos de nombre edificio.

En ocasiones, antes de la combinación natural es necesario aplicar la operación redenominar para hacer coincidir los nombres de los atributos que nos interesa igualar.

Ejemplo de combinación natural con redenominación

Por ejemplo, si queremos obtener los datos de cada uno de los empleados de administración junto con los datos del despacho donde trabajan pero sin repetir valores de atributos superfluos, haremos la siguiente combinación natural, que requiere una redenominación previa:

D(edificiodesp, númerodesp, superficie) := DESPACHOS(edificio, número, superficie),

R := EMPLEADOS_ADM * D.

Entonces, la relación resultante será: