viernes, 20 de mayo de 2016

Algebra Relacional



1. CONTENIDO:
  • Definición: El Álgebra relacional es un lenguaje de consulta procedural. Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación, por lo tanto, es posible anidar y combinar operadores. Hay ocho operadores en el álgebra relacional que construyen relaciones y manipulan datos, estos son:
1. Selección
2. Proyección
3. Producto
4. Unión
5. Intersección
6. Diferencia
7. JOIN
8. División


Las operaciones de proyección, producto, unión, diferencia, y selección son llamadas primitivas, puesto que las otras tres se pueden definir en términos de estas.
Se hace necesario en este punto incluir un modelo de datos de ejemplo en el cual trabajar para generar ejemplos de comandos y operadores. Para este efecto se incluye un modelo básico de administración de RadioTaxis. El Gráfico que se presenta a continuación representa el Modelo conceptual (Modelo Lógico) o Diagrama de Entidad-Relación 
Los Esquemas de relaciones que se pueden construir a partir de este modelo son los siguientes:

Dueño = {rut, nombre, teléfono, dirección, vigencia}
Chofer = {rut, nombre, teléfono, dirección, fecha_licencia_desde, fecha_licencia_hasta, vigencia}
Vale = {correlativo, hora_desde, hora_hasta, metraje_total, tarifa_total}
Móvil = {patente, rut_dueño, rut_chofer, marca, modelo, año}
Viaje = {correlativo_vale, patente_movil, Hora_Desde, hora_hasta, origen, destino, tarifa, metraje}
2.2.1. Selección.
El operador de selección opta por tuplas que satisfagan cierto predicado, se utiliza la letra griega sigma minúscula (σ) para señalar la selección. El predicado aparece como subíndice de σ. La Relación que constituye el argumento se da entre paréntesis después de la σ.



Operaciones Conjuntistas: Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la diferencia y el producto cartesiano.

Unión:

                                         

No-repetición de tuplas
Notad que en caso de que 
una misma tupla esté en las 
dos relaciones que se unen, 
el resultado de la unión no la 
tendrá repetida. El resultado 
de la unión es una nueva rela-
ción por lo que no puede tener repeticiones de tuplas.
                                      
Ejemplo de unión
Si queremos obtener una relación que tenga a todos los empleados de la empresa del ejemplo anterior, llevaremos a cabo la unión de las relacionesEMPLEADOS_ADM EMPLEADOS_PROD de la forma siguiente:
R := EMPLEADOS_ADMhttp://www.dataprix.com/files/uploads/32image/union_png.png.pagespeed.ce.Wem_f0QlsW.pngEMPLEADOS_PROD.
Entonces la relación R resultante será la reflejada en la tabla siguiente:
El hecho de que los atributos de la relación resultante coincidan con los atributos de la relación que figura en primer lugar en la unión es una convención; teóricamente, también habría sido posible convenir que coincidiesen con los de la relación que figura en segundo lugar.



Intersección:


  

La intersección, como la unión, sólo se puede aplicar a relaciones que tengan tuplas similares. Para poder hacer la intersección de dos relaciones, es preciso, pues, que las relaciones sean compatibles.
A continuación definiremos los atributos y la extensión de la relación resultante de una intersección.
  
Ejemplo de intersección
Si queremos obtener una relación R que incluya a todos los empleados de la empresa del ejemplo que trabajan tanto en administración como en producción, realizaremos la intersección de las relaciones EMPLEADOS_ADM EMPLEADOS_PROD de la forma siguiente:
R : = EMPLEADOS_ADM http://www.dataprix.com/files/uploads/32image/interseccion_png.png.pagespeed.ce.hnNB0hmWL9.png EMPLEADOS_PROD.
Entonces, la relación R resultante será:
Observad que se ha tomado la convención de que los atributos de la relación que resulta coincidan con los atributos de la relación que figura en primer lugar.

Diferencia:

    

La diferencia, como ocurría en la unión y la intersección, sólo tiene sentido si
se aplica a relaciones que tengan tuplas similares. Para poder realizar la diferencia de dos relaciones es necesario que las relaciones sean compatibles.
A continuación definimos los atributos y la extensión de la relación resultante de una diferencia.
Ejemplo de diferencia
Si queremos obtener una relación con todos los empleados de la empresa del ejemplo que trabajan en administración, pero no en producción, haremos la diferencia de las relaciones EMPLEADOS_ADM EMPLEADOS_PROD de la forma siguiente:
R := EMPLEADOS_ADM – EMPLEADOS_PROD
Entonces la relación resultante será:

Producto cartesiano:



Si calculamos el producto cartesiano de EDIFICIOS_EMP DESPACHOS, obtendremos una nueva relación que contiene todas las concatenaciones posibles de tuplas de EDIFICIOS_EMP con tuplas de DESPACHOS.
Si se quiere calcular el producto cartesiano de dos relaciones que tienen algún nombre de atributo común, sólo hace falta redenominar previamente los atributos adecuados de una de las dos relaciones. 
A continuación definimos los atributos y la extensión de la relación resultante de un producto cartesiano.

                                                  
Ejemplo de producto cartesiano
El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo se puede hacer como se indica (es necesario redenominar atributos previamente):
EDIFICIOS(nombreedificio, supmediadesp) := EDICIOS_EMP(edificio, supmediadesp).
R := EDIFICIOS x DESPACHOS.

Conviene señalar que el producto cartesiano es una operación que raramente se utiliza de forma explícita, porque el resultado que da no suele ser útil para resolver las consultas habituales.
A pesar de ello, el producto cartesiano se incluye en el álgebra relacional porque es una operación primitiva; a partir de la cual se define otra operación del álgebra, la combinación, que se utiliza con mucha frecuencia.

Operaciones Específicamente Relacionales:

Selección:


         

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 http://www.dataprix.com/files/uploads/32image/seleccion.png.pagespeed.ce.tICt96Z0FE.png v,
o bien:
Ai http://www.dataprix.com/files/uploads/32image/seleccion.png.pagespeed.ce.tICt96Z0FE.png Aj,
donde Ai y Aj son atributos de la relación T, http://www.dataprix.com/files/uploads/32image/seleccion.png.pagespeed.ce.tICt96Z0FE.png es un operador de comparación* y v es un valor. Además, se cumple que:                                     http://www.dataprix.com/files/uploads/32image/seleccion_tabla1.png.pagespeed.ce.E9gjfrdKqD.png
•En las cláusulas de la forma Ai http://www.dataprix.com/files/uploads/32image/seleccion.png.pagespeed.ce.tICt96Z0FE.png v, v es un valor del dominio de Ai.
•En las cláusulas de la forma Ai, http://www.dataprix.com/files/uploads/32image/seleccion.png.pagespeed.ce.tICt96Z0FE.pngAj, 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á:

            

Proyección:

            
            
 

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á:

                      

Combinación: 


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 http://www.dataprix.com/files/uploads/32image/seleccion.png.pagespeed.ce.tICt96Z0FE.png 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 http://www.dataprix.com/files/uploads/32image/combinacion_simbolos.png.pagespeed.ce.Sn-MusyBX2.pngy 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á:

          




  • EJEMPLOS:

EJERCICIOS RESUELTOS
Presentamos a continuación una serie de ejercicios de consulta sobre la base de datosformada por las tablas de PROVEEDORES, COMPONENTES, ARTICULOS y ENVIOS. Endicha base de datos está almacenada la siguiente información:


 PROVEEDORES .- Representa los datos de proveedores de componentes para la fabricación de artículos y su ciudad de residencia.
COMPONENTES.- Indica la información de piezas utilizadas en la fabricación de diferentes artículos, indicándose el lugar de fabricación de dichos componentes.
ARTÍCULOS: Información sobre los diferentes artículos que se fabrican y el lugar de montaje del mismo.
ENVÍOS: Suministros realizados por los diferentes proveedores de determinadas cantidades de componentes asignadas para la elaboración del artículo correspondiente.Para resolver cada consulta, debes seguir los siguientes pasos:
a) Lee atentamente el enunciado, hasta que hayas creído entender qué se pide
b) Obtén manualmente los resultados para los datos de ejemplo.
c) Intenta representar la consulta mediante una expresión algebraica relacional. (Pueden existir numerosas expresiones algebraicas relacionales equivalentes que respondan a la misma consulta).
c) Expresa la consulta mediante una sentencia SELECT de SQL.
 d) Pueden existir distintas formas de escribir una consulta SQL que resuelva el apartado anterior. ¿Se te ocurre alguna otra forma de expresión de la sentencia en SQL para representar la consulta?. 
No te fíes de los datos particulares del ejemplo; puede que obtengas el mismo resultado que la solución correcta, pero que sea errónea tu consulta para otros datos diferentes. Tu solución debe trabajar correctamente para cualquier relación consistente que pueda almacenar nuestra  base de datos.
 Para cada ejercicio se aporta una posible solución pero es posible que existan varias que sean también correctas.
EJERCICIOS
1. Obtener todos los detalles de todos los artículos de CACERES.
2. Obtener todos los valores de P# para los proveedores que abastecen el artículo T1.
3. Obtener la lista de pares de atributos (COLOR, CIUDAD) de la tabla componentes eliminando los pares duplicados.
4. Obtener de la tabla de artículos los valores de T#  y CIUDAD donde el nombre de la ciudad acaba en D o contiene al menos una E.
5. Obtener los valores de P# para los proveedores que suministran para el artículo T1 el componente C1.







2. RESUMEN  
  El álgebra relacional es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del calculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.

3.SUMMARY
The relational algebra is a set of operations that describe step by step how to compute an answer about relationships, as they are defined in the relational model. Denominated of procedural type, unlike Relational Calculus which is declaratory.

Describes the appearance of data manipulation. These operations are used as an intermediate representation of a query to a database and, because of its algebraic properties serve for a more streamlined and efficient version of such consultation.

4.RECOMENDACIONES
  •  Solo sigue los pasos y al final estaras satisfecho con tu trabajo... Suerte ,Espero te ayude.
5.CONCLUSIONES

Para saber más a fondo todo sobre Álgebra Relacional es necesario saber lo básico que es y cómo funciona el Álgebra Relacional, entendiendo eso podremos saber cómo utilizarla.


6.APRECIACION CRITICA

 Para este trabajo de investigación fue sencillo ya que conté con material específicamente sobre el tema e investigue un poco mas en Internet, espero te ayude.

7.GLOSARIO O TÉRMINOS
  • Consulta Procedural: Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y producen como resultado una nueva relación
8.BIBLIOGRAFIA O LINCOGRAFIA 

Ver aqui Diapositivas


https://www.slideshare.net/secret/sWNtBnydgNtw5W

Ayuda:
http://www.dataprix.com/52-operaciones-espec-ficamente-relacionales














2 comentarios: