Ejercicios de Algebra Relacional.



TECNÓLOGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE PACHUCA
ING. LEÓN OLIVARES ERIC
MATERIA: FUNDAMENTOS DE BASE DE DATOS
PRACTICA: CONSULTAS A TRAVÉS DE AR, U5.
EQUIPO: PEL5G.
INTEGRANTES:
Peña Gutiérrez César                   No. Control: 16200666
Monroy Soto Erick                        No. Control: 17200196
Martínez Domínguez Daniel      No. Control: 18200193
Sánchez Ledezma J. Leonardo   No. Control: 17200205




Fecha:  13/11/19








INTRODUCCIÓN:
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 Cálculo 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.

EL algebra 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
 





DESARROLLO:

Ejercicio 1:
Sea una base de datos de una compañía de construcciones con los siguientes
esquemas-relación:
OBRAS {nroObra, director, tipoObra, fechaComienzo)
TRABAJA (nroObrero, nroObra, fecha, codTarea)
PERSONAL (nroObrero, nomObrero, especialidad)
TAREAS (codTarea, descripcion, duracion)

Se pide: Resolver las siguientes consultas en Algebra Relacional:
a)    Obtener los números de las obras tales que todas las tareas realizadas en ella tienen una duración de por lo menos 10.

Realizamos el producto cartesiano de la tabla Trabaja y Tareas:

(Tareas x Trabaja)

Indicamos la condición de el atributo ‘Especialidad’:
>= 10
Realizamos la proyección para mostrar el resultado:
∏ Trabaja.nroObra [(Tareas x Trabaja) σ (Tareas.duracion≥10 AND Trabaja.codTarea=Tareas.codTarea)]



b)    Obtener los números de obra, director y fecha de comienzo de las mismas tal que en las obras solo participaron obreros cuya especialidad es “ALBAÑIL”
Realizamos el producto cartesiano de la tabla: obras, trabaja y personal:
(Obras x Trabaja x Personal)
Indicamos la condición en el atributo ‘Personal’:
            Personal. Especialidad = ‘Albañil’
Agregamos las Condiciones de igualdad entre llaves:
            Trabaja.nroObra = Obras. nroObra AND Personal.nroObrero = Trabaja.nroObrero
Indicamos proyección y selección:
∏Obras.nroObra, Obras.director, Obras.fechaComienzo [( Obras x Trabaja x Personal) σ (Personal. Especialidad = ‘Albañil’ AND Trabaja.nroObra = Obras. nroObra AND Personal.nroObrero = Trabaja.nroObrero)]

c)     Obtener los números de obra, director y fecha de comienzo de las mismas tal que en las obras participaron obreros cuya especialidad es “ALBAÑIL” y obreros de otras especialidades.
Con la operación que realizamos a continuación, recolectamos todos los números de obra donde participaron obreros cuya especialidad es “ALBAÑIL”.
A = nroObra [TRABAJA (σ especialidad = ‘Albañil’ (PERSONAL))]
Y con la operación siguiente, recolectamos todos los números de obra donde participaron obreros de otras especialidades.
B = nroObra [¡TRABAJA (σ especialidad! = ‘Albañil’ (PERSONAL))]
Creamos la intersección pertinente entre A y B (A ∩ B) y un join con la tabla Personal
((A ∩ B) Obras)
Por último la proyección  
∏Obras.nroObra, Obras.director, Obras.fechaComienzo ((A ∩ B) Obras)


d)    Obtener los números de obra, director y fecha de comienzo de las mismas tal que en las obras participaron obreros con especialidad “ALBAÑIL”.
Agregamos la condición en la especialidad “ALBAÑIL”.
A = nroObra [(Trabaja (σ especialidad = ‘Albañil’ (P))]
Recopilamos todos los números de obra donde participaron obreros de otras especialidades
B =  nroObra [¡Trabaja (σ Especialidad! = ‘Albañil’ (P))]
Creamos la diferencia pertinente entre A y B (A - B) y un join con la tabla Personal
((A - B) Obras)
Proyección:
∏Obras.nroObra, Obras.director, Obras.fechaComienzo ((A - B) OBRAS)




Conclusiones:
Las operaciones del álgebra relacional sirven para hacer consultas a una base de datos. Es preciso conocer estas operaciones porque nos permiten saber qué servicios de consulta debe proporcionar un lenguaje relacional. Además, constituye la base para el estudio del tratamiento de las consultas que efectúan los SGBD internamente (especialmente en lo que respecta a la optimización de consultas.

Bibliografía:
Basdatos. (2013). Algebra Relacional. 2019, de Tripod Sitio web:
DorvinEduardo. (2016). Algebra Relacional. 2019, de Slide Share Sitio web:
https://es.slideshare.net/DorvinEduardo/algebra-relacional-62265241