Vista previa del material en texto
Álgebra relacional Documento de lectura INDICE Lenguajes de consultas ..................................................................... 1 Álgebra relacional .............................................................................. 1 Operaciones fundamentales del álgebra relacional ........................... 2 Operaciones conjuntistas .................................................................. 2 Operadores Relacionales - Unarios .................................................... 6 Operadores relacionales Binarias ....................................................... 7 OPERADOR BINARIO JOIN ................................................................. 11 JOIN EXTERNO (OUTER JOIN),(RIGHT JOIN) Y (LEFT JOIN) ............. 11 JOIN Natural ....................................................................................... 11 Ejemplo Natural Join .......................................................................... 12 Ejemplo: (left Join y rigth outer Join) ................................................. 12 Tres tipos de JOIN .............................................................................. 13 Join externo izquierdo (left ounter join) ............................................. 13 Join externo derecho (rigth outer join) ............................................... 14 Join externo completo ........................................................................ 14 Practicando las relaciones usando el operador JOIN......................... 15 Bibliografía ........................................................................................ 17 1 Lenguajes de consultas Un lenguaje de consultas es aquel en el que los usuarios solicitan información de la base de datos. Estos lenguajes suelen ser superior que el de los lenguajes de programación habituales. Los lenguajes de consultas, pueden clasificarse como procedimentales o no procedimentales. En los lenguajes procedimentales el usuario indica al sistema que lleve a cabo una serie de operaciones en la base de datos para calcular el resultado deseado. En los lenguajes no procedimentales el usuario describe la información deseada sin dar un procedimiento concreto para obtener esa información. Existen varios lenguajes de consultas puros: el álgebra relacional es procedimental e ilustra técnicas fundamentales para la extracción de datos. Álgebra relacional El Álgebra Relacional es un lenguaje procedural para la manipulación de relaciones. El álgebra relacional define nueve operaciones: unión, intersección, diferencia y producto (que vienen de la teoría de conjuntos de la matemática), selección, proyección, reunión y división (que son las que se aplican específicamente al modelo de datos relacional) y asignación (operación estándar de los lenguajes de computación) que le da un valor a un nombre, para la operación de asignación ocuparemos: 2 Una característica destacable de todas las operaciones del álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre relacional. Los operadores relacionales se pueden clasificar a su vez en operadores unarios aplicados a una sola relación o binarios aplicados a más de una relación A continuación, el siguiente gráfico clasifica los tipos de operadores: Operaciones fundamentales del álgebra relacional Operaciones conjuntistas Unión U: Operación del álgebra relacional que crea un conjunto, unión de dos relaciones, unión compatibles. 3 Unión compatible: Dos o más relaciones que tienen columnas equivalentes en número y dominios. Ejemplo: Vendedor_subordinado {VENS_ID_VENDEDOR, VENS_NOMB_VENDEDOR, VENS_ID_JEFE, VENS_OFICINA, VENS_COMISIO} Vendedor_jefe {VENJ_ID_VENDEDOR, VENJ_NOMB_VENDEDOR, VENJ_ID_JEFE, VENJ_OFICINA, VENJ_COMISION} Si queremos calcular el conjunto de todos los vendedores: vendedor:= vendedor_subordinado U vendedor_jefe Intersección ∩: Operación del álgebra relacional que crea un conjunto intersección de dos relaciones unión compatibles. 4 Si queremos calcular el conjunto de los vendedores que son jefes y subordinados a la vez: VENDEDOR_JEFE_SUBORDINADO := VENDEDOR_SUBORDINADO ∩ VENDEDOR_JEFE Diferencia -: Operación del álgebra relacional que crea un conjunto diferencia de dos relaciones unión compatibles. Ojo que la diferencia no es conmutativa. Si queremos calcular quién (es) son jefe solamente (es decir, quien es el personaje que está en VENDEDOR_ JEFE, pero que no está en VENDEDOR_SUBORDINADO): VENDEDOR_JEFE_JEFE := VENDEDOR_JEFE - VENDEDOR_SUBORDINADO Producto *: Operación del álgebra relacional que crea el producto cartesiano de dos relaciones. 5 sí A {X, Y} tiene los siguientes elementos y B {W, Z} contiene: Entonces el producto de A y B es: C := A * B Ojo que si hacemos el producto cartesiano de dos relaciones que tienen un atributo en común, vamos a tener un problema con el nombre de la columna, para ello se recomienda como regla general que el nombre de un atributo está compuesto por: 1. Una sigla que hace referencia al nombre de la relación 2. Un subrayado 3. El nombre del atributo 6 Ejemplo: PRODUCTO {PROD_ID_PROD, PROD_NOMBRE, ...} VENTA {VTA_ID_PROD, VTA_FECHA, ...} Operadores Relacionales - Unarios Operadores unarios operan sobre una sola relación, en cambio los operadores binarios se aplican sobre 2 relaciones. En ambos casos, siempre devuelven una sola relación como resultado. Proyección [π]: Operación del álgebra relacional que crea una relación borrando columnas de una relación existente. El operador de proyección se denota con la letra P del alfabeto griego [π] (pi). Ojo que la proyección genera conjuntos, luego si en la tabla original la subtupla seleccionada se repite, al proyectar sólo vemos la fila una vez. Consulta: ¿Quiénes son los vendedores que tienen una comisión menor que 20%? SELECT (VENDEDOR : VEND_COMISION < 20) [VEND_NOMBRE] Selección SELECT: Operación del álgebra relacional que usa una condición para seleccionar filas de una relación. Si quisiéramos resolver la siguiente consulta: Dar toda la información de los vendedores en la oficina de Tokyo. El operador de selección se denota con la letra S del alfabeto griego (sigma) [σ]. VEND_TOKYO := SELECT (VENDEDOR : VEND_OFICINA = ‘Tokyo’) Noten que las condiciones de selección (las que van después del ‘:’) son similares a las usadas en la instrucción IF. 7 Consulta: ¿Qué vendedores tienen ID 23? SELECT (VENDEDOR : VEND_ID_VENDEDOR = 23) Consulta: ¿Qué vendedores tienen trabajan en Tokio y tienen comisión superior a 11%? SELECT (VENDEDOR : VEND_OFICINA = ‘Tokyo’ and VEND_COMISION > 11) Operadores relacionales Binarias Combinación JOIN (reunión): A partir de las relaciones especificadas construye una relación concatenando cada tupla de la primera relación con cada una de las tuplas de la segunda, siempre que ambas tuplas satisfagan la condición dada. Si la condición es igualdad y en la relación resultante se elimina el atributo común, se denomina combinación natural, en la combinación externa se incluyen las tuplas de una relación que no están relacionadas con otra relación concatenando con NULOS. BECASEXTERNAS 8 BECASESPECIALES Planteamiento 1. Se desea tener una lista de estudiantes que tienen al menos una Beca. 2. Conseguir una lista de estudiantes que están asignados en ambas Becas. 3. Obtener los estudiantes que tienen solo Beca externa. 4. Obtener las posibles combinaciones de alumnos que tienen ambas Becas (Externa y especial). 5. Proyectar los nombres de los alumnos. 6. Mostrar los alumnos de becas externas que viven en managua. Para la solución de estos planteamientos sigue los siguientes pasos: 1. Consulte el manual de instalación del programa Relational 2. Ejecute el programa Relational. 3. Descargar de la plataforma los archivos Tabla#1: Becas Externas, y Tabla#2: Becas Especiales en formato .cvs al escritorio de tu PC. 4. Haga clic en la opción Load para cargar desde elprograma Relational, las tablas Becas Externas, y Becas Especiales. 9 5. Seleccione las tablas guardadas en el escritorio de la computadora 6. Verifique que las tablas han sido incorporadas. 7. Interactúe con el software y las tablas para conocer los datos que almacena a. Tablas incorporadas al software Relational b. Lista de atributos de la tabla seleccionada c. Datos de la tabla seleccionada d. Operadores unarios y binarios e. Bitácora de consultas f. Inserción y ejecución de consultas g. Opciones para la gestión de tablas 10 Seguidamente haremos las primeras consultas • Se desea obtener una lista de estudiantes que tengan al menos una beca. Esto se resolvería con una unión Ingrese en el cuadro de texto la consulta y haga clic en el botón Execute R1=becasexternas U becasespeciales • Conseguir una lista de estudiantes que están asignados en ambas becas. R2=becasexternas ∩ becasespeciales • Obtener una lista de estudiantes que tienen solo becas externas R3=becasexternas - becasespeciales 11 • Proyectar los nombres de alumnos R4=πPnombre(becasexternas U becasespeciales) • Mostrar los nombres de alumnos de becas externas que viven en Managua R5=πPnombre(σLugar==”Managua”(becasexternas)) OPERADOR BINARIO JOIN JOIN NATURAL (INNER JOIN) Con esta operación se calcula el producto cruzado de todos los registros; así cada registro en la tabla A es combinado con cada registro de la tabla B; pero sólo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especifiquen. Este es el tipo de JOIN más utilizado por lo que es considerado el tipo de combinación predeterminado. JOIN EXTERNO (OUTER JOIN),(RIGHT JOIN) Y (LEFT JOIN) Mediante esta operación no se requiere que cada registro en las tablas a tratar tenga un registro equivalente en la otra tabla. El registro es mantenido en la tabla combinada si no existe otro registro que le corresponda. JOIN Natural Es el operador más importante del álgebra relacional cuyo papel primordial es fusionar en una sola relación dos relaciones que tengan al menos un atributo en común. Si sólo se considera uno de los atributos comunes en la relación resultado se denomina JOIN Natural o sólo JOIN R * S 12 A continuación, se puede observar la aplicación gráfica del Join Natural Ejemplo Natural Join Ejemplo: (left Join y rigth outer Join) 13 Tres tipos de JOIN Al igual que el operador unión, se puede definir un operador JOIN externo del inglés outer join, right join, left join. En la realidad se debe hablar de tres tipos de Join externos y que formalmente se definen: Join externo izquierdo (left ounter join) 14 Join externo derecho (rigth outer join) Join externo completo 15 Practicando las relaciones usando el operador JOIN Descargar de la plataforma los archivos Tabla#1: Turista, Tabla#2: Sitio y Tabla#2: Viaje en formato .cvs al escritorio de tu PC. Importe y aplique las siguientes consultas en el programa Relational • Dar los números de turistas que han visitado sitios de áfrica. R1=πNumeroTurista(σContinente==”África”(viaje⋈sitio⋈turista)) 16 • Dar la información de los viajes y turistas. R2=viaje⋈turista • Dar la lista de nombres y las fechas de salida de los turistas. R3=πNombreTurista,FechaSalida(viaje⋈turista) 17 Bibliografía Silberschatz, A., Korth, H. y Sudarshan, S (2002). Fundamentos de Bases de Datos. McGraw Hill