CAPÍTULO III MODELO RELACIONAL UNSAAC - DAI - Mgt. Arturo Rozas Huacho 1 Modelo Relacional Definición Matemáticamente, una relación definida sobre los n dominios D1, D2, …, Dn, no necesariamente distintos, es un subconjunto del producto carteasiano de estos dominios, donde cada elemento de la relación, tupla, es una serie de n valores ordenados. 2 Modelo Relacional Estática (Intensión o Esquema de relación) • Esquema de relación R(A1:D1, ... , An:D2) describe la relación. – R es el nombre de la relación – A1:D1, ... , An:Dn es un conjunto de n pares atributo-dominio – Di = dom(Ai) dominio de Ai – Grado de la relación: número de atributos 3 Modelo Relacional Dinámica (Extensión) Es un conjunto de n-tuplas r={t1, t2, . . ., tm}: – cada n-tupla es una lista ordenada de n pares atributo-valor t=<A1:v1,1; A2:v2,1; . . .; An:v ,1> – Donde v i,j es el valor j del dominio Di asociado al atributo Ai El número de tuplas m es la cardinalidad de la relación 4 Modelo Relacional Relación Relación ≈ tabla de datos Por eso se llaman bases de datos relacionales ALUMNO Codigo 040235-J 060034-K 020745-A 070554-B 050675-D AP PAZ BUENO CUSI CUNO TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN 5 Modelo Relacional Esquema ALUMNO (Codigo, AP, AM, Nombres, CodCP) Atributos Tuplas Codigo 040235-J 060034-K 020745-A 070554-B 050675-D AP PAZ BUENO CUSI CUNO TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN Domino = Texto 6 Modelo Relacional Notación • Atributos Ai • Relación R(A1, A2, A3, …, An) • Dominio de Ai dom(Ai) R(A1, A2, A3, …, An) (dom(A1) x dom(A2) x … x dom(An)) Relación son algunas de todas las combinaciones posibles 7 Modelo Relacional Restricciones de claves Restricciones de claves únicas K Claves(Relación) ∀ t1, t2 ∈ Relación, t1[K] ≠ t2 [K] Una clave puede ser: •Un Atributo •Varios Atributos (Clave compuesta) Una clave no puede ser nula (NULL) 8 Álgebra Relacional ◼ Se basa en el álgebra de la teoría de conjuntos donde los operandos son tablas o relaciones. ◼Manipula relaciones produciendo nuevas relaciones. ◼Cualquier operación da como resultado una tabla o relación con la que se puede operar de nuevo. ◼Consiste en operaciones que algunas de ellas son tomadas de la matemática, otras del lenguaje relacional y otras de lenguajes de programación comunes. 9 Álgebra Relacional… Clasificación de las operaciones relacionales: Operaciones básicas Unarias: operan con una sola tabla. Selección Proyección Binarias o de conjunto: Operan con dos tablas. Unión Diferencia Producto cartesiano Operaciones derivadas o adicionales: Realizan en su proceso llamadas a las operaciones básicas. Intersección Cociente o división Join o reunión 10 Álgebra Relacional… Clasificación de las operaciones relacionales: ◼ Las de origen matemático son: ◼ Las de lenguaje relacional son: ◼ Unión ◼ Proyección ◼ Intersección ◼ Selección ◼ Diferencia de conjuntos ◼ ◼ Producto Cartesiano ◼ ◼ División o cociente Join La del lenguaje de programación es: ◼ Asignación 11 Álgebra Relacional… Operaciones en forma genérica: Proyectar (π) Seleccionar (σ) Producto cartesiano (Х) Juntar o Join ( ) Unir (ᴜ) Intersectar (∩) Diferencia (─) Dividir (÷) 12 Álgebra Relacional… Proyectar (π) Selecciona columnas (valores de ciertos atributos) de todas las tuplas de una relación π A1, A2, … , An (R) = { t[A1, A2, …, An]} : t ϵ R Selecciona columnas completas. La relación resultante tiene la misma cardinalidad de la relación original, mientras que el grado de la relación disminuye. 13 Álgebra Relacional… Proyectar (π) Ejemplos ALUMNO Codigo AP 040235-J PAZ 060034-K BUENO 020745-A CUSI 070554-B CUNO 050675-D TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN π Codigo, AP, AM, Nombres (ALUMNO) Codigo 040235-J 060034-K 020745-A 070554-B 050675-D AP PAZ BUENO CUSI CUNO TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO 14 Álgebra Relacional… Seleccionar (σ) Selecciona tuplas(valores de tuplas) de una relación σ Condición (R) = {t ϵ R : Condición (t) es cierto } Selecciona filas completas. La relación resultante tiene el mismo grado de la relación original, mientras que la cardinalidad de la relación disminuye. 15 Álgebra Relacional… Seleccionar (σ) Ejemplos ALUMNO Codigo AP 040235-J PAZ 060034-K BUENO 020745-A CUSI 070554-B CUNO 050675-D TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN Nombres MELINA CARLA PEDRO CodCP IN IN IN σ CodCP = ‘IN’ (ALUMNO) Codigo 040235-J 070554-B 050675-D AP PAZ CUNO TITO AM MEZA DIAZ PAEZ 16 Álgebra Relacional… Operaciones combinadas con: π y σ Considerando la siguiente tabla: ALUMNO Codigo AP 100235 PAZ 110034 BUENO 120745 CUSI 090554 CUNO 120675 TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN Seleccionar a los alumnos ingresantes del 2012, con los siguientes atributos: R(Codigo, AP, AM, Nombres) 17 Álgebra Relacional… Operaciones combinadas con: π y σ Los alumnos ingresantes del 2012 son aquellos cuyos códigos empiezan con 12. Se tiene dos alternativas de solución: Alternativa 1: σ Codigo > ‘120000’ y Codigo < ‘129999’ ( π Codigo, AP, AM, Nombres (ALUMNO)) Alternativa 2: π Codigo, AP, AM, Nombres (σ Codigo > ‘120000’ y Codigo < ‘129999’ (ALUMNO)) El resultado de un operador es una tabla, sobre la que se puede aplicar otro operador. Ambas alternativas son válidas y dan el mismo resultado: Codigo AP 120745-A CUSI 120675-D TITO AM ALEGRE PAEZ Nombres EVA PEDRO ¿Cuál de las alternativas es más adecuada? En operaciones combinadas efectuar primero la operación de selección (porque reduce la cardinalidad de la tabla) luego recién la proyección o cualquier otra operación. 18 Álgebra Relacional… UNION (∪) ALUMNO Codigo AP 040235-J PAZ 060034-K BUENO 020745-A CUSI 070554-B CUNO 050675-D TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN Obtener la relación de alumnos de Ingeniería Informática (IN) e Ingeniería Electrónica (IL). σ CodCP = ‘IN’ (ALUMNO) ∪ σ CodCP = ‘IL’ (ALUMNO) Codigo 040235-J 060034-K 070554-B 050675-D AP PAZ BUENO CUNO TITO AM MEZA GUERRA DIAZ PAEZ Nombres MELINA ANGEL CARLA PEDRO CodCP IN IL IN IN La operación de unión se realiza sobre relaciones con la misma estructura 19 Álgebra Relacional… DIFERENCIA (-) ALUMNO Codigo AP 040235-J PAZ 060034-K BUENO 020745-A CUSI 070554-B CUNO 050675-D TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN Obtener la relación de alumnos sin considerar a los de Contabilidad (CO) (ALUMNO) - σ CodCP = ‘CO’ (ALUMNO) Codigo 040235-J 060034-K 070554-B 050675-D AP PAZ BUENO CUNO TITO AM MEZA GUERRA DIAZ PAEZ Nombres MELINA ANGEL CARLA PEDRO CodCP IN IL IN IN La operación de Diferencia se realiza sobre relaciones con la misma estructura 20 Álgebra Relacional… INTERSECCIÓN (∩) ALUMNO Codigo 100235 110034 120745 090554 120675 AP PAZ BUENO CUSI CUNO TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN Obtener la relación de alumnos de Ingeniería Informática y que hayan ingresado en el 2012. σ CodCP = ‘IN’ (ALUMNO) ∩ σ Codigo > ‘120000’ y Codigo < ‘129999’ (ALUMNO) Codigo AP 120675-D TITO AM PAEZ Nombres PEDRO CodCP IN La operación de Intersección se realiza sobre relaciones con la misma estructura 21 Álgebra Relacional… Ejercicios: Dada la siguiente Base de datos: CARRERA(IdCarrera, NombreCarrera) ALUMNO(IdAlumno, AP, AM, Nombres, IdCarrera) ASIGNATURA(IdAsignatura, NombreAsignatura, Cat, Cred, PreRequisito ) MATRICULA(Semestre, IdAsignatura, IdAlumno, Nota) 22 Álgebra Relacional… Ejercicios: 1.- Determinar la relación de alumnos invictos en el semestre 2013-I -- Proyectar el atributo IdALumno de la tabla ALUMNO T1 πIdAlumno (ALUMNO) -- Seleccionar los alumnos matriculados en el semestre 2013-I T2 σ Semestre = ‘2013-I’ (MATRICULA) -- Obtener la relación de alumnos con por lo menos una asignatura desaprobada en el semestre 2013-I T3 πIdAlumno (σ Nota< ’11’ o Nota=‘NSP’ (T2)) -- Obtener la relación de alumnos invictos en el semestre 2013-I R T1 - T3 ¿Es este algoritmo correcto? Es incorrecto, porque en la relación T1 se tiene la totalidad de alumnos, incluso los que no se matricularon en el semestre 2013-I, y éstos (falsamente) estarían considerados como alumnos invictos del semestre 2013-I. 23 Álgebra Relacional… Ejercicios: 1.- Determinar la relación de alumnos invictos en el semestre 2013-I (Algoritmo correcto) -- Seleccionar los alumnos matriculados en el semestre 2013-I T1 σ Semestre = ‘2013-I’ (MATRICULA) -- Proyectar el atributo IdAlumno de los matriculados en el semestre 2013-I T2 πIdAlumno (T1) -- Obtener la relación de alumnos con por lo menos una asignatura desaprobada en el semestre 2013-I T3 σ πIdAlumno (σ Nota< ’11’ o Nota=‘NSP’ (T1)) -- Obtener la relación de alumnos invictos en el semestre 2013-I R T2 - T3 Este algoritmo si considera sólo a los que no se matricularon en el semestre 2013-I, y de éstos selecciona a los alumnos invictos del semestre 2013-I. 24 Álgebra Relacional… Producto cartesiano (X) CARRERA CodCP IN IL CO NombreCP INFORMATICA ELECTRONICA CONTABILIDAD ALUMNO Codigo 120235-J 090034-K 110745-A 100554-B 120675-D AP PAZ BUENO CUSI CUNO TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN ALUMNO X CARRERA 25 Álgebra Relacional… Producto cartesiano (X) ALUMNO X CARRERA ALUMNO Codigo AP CARRERA AM Nombres CodCP CodCP NombreCP 120235-J PAZ MEZA MELINA IN IN INFORMATICA 090034-K BUENO GUERRA ANGEL IL IL ELECTRONICA 110745-A CUSI ALEGRE EVA CO CO CONTABILIDAD 100554-B CUNO DIAZ CARLA IN 120675-D TITO PAEZ PEDRO IN Cada tupla de la primera tabla se asocia (junta) con todas las tuplas de la segunda tabla. El producto cartesiano es el único mecanismo para obtener Información de dos o más tablas, mediante el proceso de “juntar” tablas. 26 Álgebra Relacional… Producto cartesiano (X) ALUMNO X CARRERA Codigo 120235-J 120235-J 120235-J 090034-K 090034-K 090034-K 110745-A 110745-A 110745-A 100554-B 100554-B 100554-B 120675-D 120675-D 120675-D AP PAZ PAZ PAZ BUENO BUENO BUENO CUSI CUSI CUSI CUNO CUNO CUNO TITO TITO TITO AM MEZA MEZA MEZA GUERRA GUERRA GUERRA ALEGRE ALEGRE ALEGRE DIAZ DIAZ DIAZ PAEZ PAEZ PAEZ Nombres MELINA MELINA MELINA ANGEL ANGEL ANGEL EVA EVA EVA CARLA CARLA CARLA PEDRO PEDRO PEDRO CodCP IN IN IN IL IL IL CO CO CO IN IN IN IN IN IN CodCP IN IL CO IN IL CO IN IL CO IN IL CO IN IL CO NombreCP INFORMATICA ELECTRONICA CONTABILIDAD INFORMATICA ELECTRONICA CONTABILIDAD INFORMATICA ELECTRONICA CONTABILIDAD INFORMATICA ELECTRONICA CONTABILIDAD INFORMATICA ELECTRONICA CONTABILIDAD La cardinalidad de |ALUMNO X CARRERA| = | ALUMNO| | CARRERA| 27 Álgebra Relacional… Producto cartesiano (X) El producto cartesiano al juntar las tablas genera asociaciones incongruentes, por lo que generalmente debe ir acompañado de una operación de selección, para ALUMNO X CARRERA seleccionar sólo las tuplas congruentes (Combinaciones correctas). Codigo AP AM Nombres CodCP CodCP NombreCP 120235-J PAZ MEZA MELINA IN IN INFORMATICA 120235-J PAZ MEZA MELINA IN IL ELECTRONICA 120235-J PAZ MEZA MELINA IN CO CONTABILIDAD 090034-K BUENO GUERRA ANGEL IL IN INFORMATICA 090034-K BUENO GUERRA ANGEL IL IL ELECTRONICA 090034-K BUENO GUERRA ANGEL IL CO CONTABILIDAD 110745-A CUSI ALEGRE EVA CO IN INFORMATICA 110745-A CUSI ALEGRE EVA CO IL ELECTRONICA 110745-A CUSI ALEGRE EVA CO CO CONTABILIDAD 100554-B CUNO DIAZ CARLA IN IN INFORMATICA 100554-B CUNO DIAZ CARLA IN IL ELECTRONICA 100554-B CUNO DIAZ CARLA IN CO CONTABILIDAD 120675-D TITO PAEZ PEDRO IN IN INFORMATICA 120675-D TITO PAEZ PEDRO IN IL ELECTRONICA 120675-D TITO PAEZ PEDRO IN CO CONTABILIDAD 28 Álgebra Relacional… Producto cartesiano (X) Seleccionar combinaciones correctas σ ALUMNO.CodCP = CARRERA.CodCP ( ALUMNO X CARRERA) Codigo AP AM Nombres CodCP CodCP NombreCP 120235-J PAZ MEZA MELINA IN IN INFORMATICA 090034-K BUENO GUERRA ANGEL IL IL ELECTRONICA 110745-A CUSI ALEGRE EVA CO CO CONTABILIDAD 100554-B CUNO DIAZ CARLA IN IN INFORMATICA 120675-D TITO PAEZ PEDRO IN IN INFORMATICA Generalmente se efectúa el producto cartesiano sobre tablas que están relacionadas por claves primarias y claves foráneas. La selección de combinaciones correctas se efectúa sobre estas claves. 29 Álgebra Relacional… Ejercicios: Dada la siguiente Base de datos: VENDEDOR(IdVendedor, Nombres, Telefono, EMail) SUCURSAL(IdSucursal, RazonSocial, Responsable) CLIENTE(IdCliente, RazonSocial, RUC, Direccion) ARTICULO(IdArticulo, Descripción, UnidadMedia, Precio) COMPROBANTE(NroComprobante, Tipo, Fecha, IdCliente, IdSucursal, IdVendedor) COMPROBANTE_DETALLE(NroComprobante, IdArticulo, Cantidad, PrecioUnitario) 30 Álgebra Relacional… Ejercicios: 1.- Relación de artículos que durante el año 2006 no se han vendido en ninguna de las sucursales -- Obtener la relación de COMPROBANTES emitidos en el 2006 T1 σ Fecha >= ‘01/01/2006’ and Fecha <= ‘31/12/2006’ (COMPROBANTE) -- Obtener la relación de COMPROBANTES emitidos en el 2006 con su respectivo detalle T2 σ T1.NroComprobante = COMPROBANTE_DETALLE.NroComprobante(T1 X COMPROBANTE_DETALLE) -- Determinar la relación de artículos vendidos en el 2006 T3 π IdArticulo (T2) -- Determinar la relación total de artículos T4 π IdArticulo (ARTICULO) -- Determinar la relación de artículos que no se han vendido en el 2006 T5 T4 – T3 -- Completar la información de artículos T6 σ T5. IdArticulo = ARTICULO. IdArticulo (T5 X ARTICULO) 31 Álgebra Relacional… Reunir (JOIN) ( ) σ R1.k = R2.k ( R1 X R2) R1 k R2 32 Álgebra Relacional… Reunir (JOIN) natural ( Reunir (JOIN) R1 ) k R2 Omitir el subíndice implica juntar según todos los atributos que tengan el mismo nombre en ambas tablas Reunir (JOIN) natural R1 R2 33 Álgebra Relacional… Ejercicios: Dada la siguiente Base de datos: VENDEDOR(IdVendedor, Nombres, Telefono, EMail) SUCURSAL(IdSucursal, RazonSocial, Responsable) CLIENTE(IdCliente, RazonSocial, RUC, Direccion) ARTICULO(IdArticulo, Descripción, UnidadMedia, Precio) COMPROBANTE(NroComprobante, Tipo, Fecha, IdCliente, IdSucursal, IdVendedor) COMPROBANTE_DETALLE(NroComprobante, IdArticulo, Cantidad, PrecioUnitario) 34 Álgebra Relacional… Ejercicios: 1.- Determinar la relación de vendedores que hayan trabajado (efectuado ventas) en todas las sucursales. R(IdVendedor,Nombres) -- Obtener la relación de Vendedores T1 π IdVendedor (VENDEDOR) -- Obtener la relación de Sucursales T2 π IdSucursal (SUCURSAL) -- Obtener la relación Total de Vendedores y Sucursales T3 (T1 X T2) -- Determinar la relación de Vendedores que hayan realizado ventas en las sucursales T4 π IdVendedor, IdSucursal (COMPROBANTE) -- Determinar los Vendedores que no hayan realizado ventas en todas las sucursales T5 π IdVendedor (T3 – T4) -- Determinar los Vendedores que hayan realizado ventas en todas las sucursales T6 T1 – T5 -- Completar la información de vendedores R π T6.IdVendedor, Nombres (T6 VENDEDOR) 35 Álgebra Relacional Extendida PROYECCIÓN GENERALIZADA Extiende la proyección permitiendo que se utilicen funciones o expresiones aritméticas en la lista de proyección. π F1, F2, …, Fn(E) Dado el siguiente esquema de relación: NOTAS(CodAlumno, Nota1, Nota2, Nota3) Ejemplo: π CodAlumno, (Nota1+Nota2+Nota3)/3 as Promedio(NOTAS) La relación resultante tendrá la siguiente estructura: R(CodAlumno, Promedio) 36 Álgebra Relacional Extendida FUNCIONES DE AGREGACIÓN Las funciones de agregación operan sobre un conjunto de valores y devuelven como resultado un único valor. Las funciones de resumen son: COUNT, SUM, AVG, MAX y MIN Sintaxis: G1, G2, … GnG F1(A1), F2(A2), …, Fn(An) (E) El símbolo G es la letra “G caligráfica”. 37 Álgebra Relacional Extendida FUNCIONES DE AGREGACIÓN (Ejemplos) Determinar cuántos alumnos hay en la base de datos: G COUNT(Codigo)(ALUMNO) ALUMNO Codigo 040235-J 060034-K 020745-A 070554-B 050675-D AP PAZ BUENO CUSI CUNO TITO AM MEZA GUERRA ALEGRE DIAZ PAEZ Nombres MELINA ANGEL EVA CARLA PEDRO CodCP IN IL CO IN IN COUNT(Codigo) 5 38 Álgebra Relacional Extendida FUNCIONES DE AGREGACIÓN (Ejemplos) Determinar cuántos alumnos hay en cada carrera: CodCPG COUNT(Codigo) as NroAlumnos(ALUMNO) ALUMNO Codigo 040235-J 060034-K 020745-A 070554-B 050675-D 090122-E AP PAZ BUENO CUSI CUNO TITO FUENTES AM MEZA GUERRA ALEGRE DIAZ PAEZ MAR Nombres MELINA ANGEL EVA CARLA PEDRO LUIS CodCP IN IL CO IN IN CO Codigo 040235-J 070554-B 050675-D 060034-K 020745-A 090122-E AP PAZ CUNO TITO BUENO CUSI FUENTES AM MEZA DIAZ PAEZ GUERRA ALEGRE MAR Nombres MELINA CARLA PEDRO ANGEL EVA LUIS CodCP IN IN IN IL CO CO CodCP IN IL CO NroAlumnos 3 1 2 39 Álgebra Relacional… FUNCIONES DE AGREGACIÓN - Ejercicios: 1.- Determinar el número de alumnos en cada Carrera Profesional. -- Contar el número de alumnos en cada carrera profesional T1 IdCarrera G COUNT(IdAlumno) as NroAlumnos(ALUMNO) -- Completar la información de carreras profesionales R π T1. IdCarrera, CARRERA.NombreCarrera, T1.NroAlumnos (T1 CARRERA) 40 Álgebra Relacional… FUNCIONES DE AGREGACIÓN - Ejercicios: 2.- Determinar el número de alumnos matriculados por semestre y por Carrera Profesional. -- Obtener la relación de Matrículas de Alumnos con sus respectivas carreras profesionales T1 MATRICULA ALUMNO -- Contar el número de alumnos matriculados por semestre y por carrera profesional T2 Semestre, IdCarrera G COUNT(IdAlumno) as NroAlumnos(T1) -- Completar la información de carreras profesionales R π T2. IdCarrera, CARRERA.NombreCarrera, T2.Semestre, T2.NroAlumnos (T2 CARRERA) 41 Álgebra Relacional… FUNCIONES DE AGREGACIÓN - Ejercicios: 3.- Obtener la relación de alumnos con su respectivo número de créditos acumulados. -- Obtener la relación de Matrículas de asignaturas aprobadas y número de créditos T1 σ Nota > 13 (MATRICULA) ASIGNATURA -- Determinar la relación de alumnos con su respectivo número de créditos acumulados T2 IdAlumno G SUM(cred) as CredAcumulados(T1) -- Completar información de Alumnos T3 π T2.IdAlumno, AP, AM, Nombres, IdCarrera, CredAcumulados (T2 ALUMNO) 42 Álgebra Relacional… FUNCIONES DE AGREGACIÓN - Ejercicios: 4. Obtener la relación de los mejores estudiantes de cada carrera profesional en el último semestre. (Considerar como mejores estudiantes a los que hayan obtenido el mejor promedio aritmético) R(IdCarrera, IdAlumno, AP, AM, Nombres, Promedio) -- Obtener el último semestre T1 G MAX(Semestre) as Semestre (MATRICULA) -- Obtener la relación de matrículas del último semestre T2 T1 MATRICULA -- Agregar el atributo carrera a los alumnos de las matrículas del último semestre T3 π ALUMNO.IdCarrera, T2.IdAlumno, T2.IdAsignatura, T2. Nota (T2 ALUMNO) -- Determinar el promedio aritmético para cada alumno T4 IdCarrera, IdAlumno G AVG (Nota) as Promedio (T3) -- Determinar el promedio más alto de cada carrera T5 IdCarrera G MAX(Promedio) as Promedio (T4) -- Determinar a los alumnos cuyos promedios son iguales a los promedios más altos de cada carrera T6 T4 T5 -- Completar información de Alumnos R π T6.IdCarrera, T6.IdAlumno, AP, AM, Nombres, Promedio (T6 ALUMNO) 43 Álgebra Relacional Extendida… Left Join ( ) En la operación JOIN se pueden perder algunas tuplas, las que no están relacionadas en las dos relaciones. Mientras que la operación LEFT JOIN, mantiene todas las tuplas de la relación de la izquierda y completa con valores nulos los atributos que no existan. R1 R2 44 Composición Externa Dadas las siguientes tablas, determinar la relación de préstamos con sus respectivos saldos A P ID_Prestamo Importe ID_Amortizacion Importe Id_Prestamo PA-134 PA-345 PA-456 600 1200 850 RC-234 RC-241 450 850 PA-134 PA-456 ¿Es la siguiente sentencia la solución? π P.ID_Prestamo, P. Importe, (P.Importe – A.Importe) as Saldo(P ID_Prestamo A) 45 Composición Externa… El producto cartesiano genera la siguiente tabla P.ID_Prestamo P.Importe A.ID_Amortizacion A.Importe A.Id_Prestamo PA-134 PA-134 PA-345 PA-345 PA-456 PA-456 600 600 1200 1200 850 850 RC-234 RC-241 RC-234 RC-241 RC-234 RC-241 450 850 450 850 450 850 PA-134 PA-456 PA-134 PA-456 PA-134 PA-456 El juntar natural (P.ID_Prestamo = A.ID_Prestamo) selecciona las tuplas que no están subrayadas P.ID_Prestamo P.Importe A.ID_Amortizacion A.Importe A.Id_Prestamo PA-134 PA-134 PA-345 PA-345 PA-456 PA-456 600 600 1200 1200 850 850 RC-234 RC-241 RC-234 RC-241 RC-234 RC-241 450 850 450 850 450 850 PA-134 PA-456 PA-134 PA-456 PA-134 PA-456 46 Composición Externa… P.ID_Prestamo P.Importe A.ID_Amortizacion A.Importe A.Id_Prestamo PA-134 PA-134 PA-345 PA-345 PA-456 PA-456 600 600 1200 1200 850 850 RC-234 RC-241 RC-234 RC-241 RC-234 RC-241 450 850 450 850 450 850 PA-134 PA-456 PA-134 PA-456 PA-134 PA-456 En Consecuencia la relación resultante es: P.ID_Prestamo P.Importe A.ID_Amortizacion A.Importe A.Id_Prestamo PA-134 PA-456 600 850 RC-234 RC-241 450 850 PA-134 PA-456 El préstamo PA-345 ha sigo ignorado debido a que no empareja con ninguna de las tuplas de la tabla de AMORTIZACION 47 Composición Externa… Este tipo de composición se utiliza cuando las cardinalidades mínimas son 0 (No son obligatorios). PRESTAMO ID_Prestamo 1,1 Importe AMORTIZACION O,n ID_Amortizacion Importe Como el modelo anterior indica que hay PRESTAMOS que no necesariamente están relacionados con AMORTIZACIONES, entonces estas instancias desaparecerán cuando se hace una operación de Juntar simple (JOIN); en su lugar se debe realizar una operación JOIN LEFT 48 Composición Externa… La operación LEFT JOIN P A Produce la siguiente relación P.ID_Prestamo P.Importe A.ID_Amortizacion A.Importe A.Id_Prestamo PA-134 PA-345 PA-456 600 1200 850 RC-234 null RC-241 450 null 850 PA-134 null PA-456 49 Composición Externa… Finalmente, la solución al problema propuesto es: π P.ID_Prestamo, P. Importe, (P.Importe – A.Importe) as Saldo (P A) La relación resultante es: P.ID_Prestamo P.Importe Saldo PA-134 PA-345 PA-456 600 1200 850 150 null 0 50 Álgebra Relacional Extendida… Composición externa (Ejercicios) Dada la siguiente Base de datos: CARRERA(IdCarrera, NombreCarrera) ALUMNO(IdAlumno, AP, AM, Nombres, IdCarrera) ASIGNATURA(IdAsignatura, NombreAsignatura, Cat, Cred, PreRequisito ) MATRICULA(Semestre, IdAsignatura, IdAlumno, Nota) 51 Álgebra Relacional… Composición externa - Ejercicios: 1.- Obtener la relación de estudiantes de ingeniería informática con el número de créditos aprobados. R(IdAlumno, AP, AM, Nombres, NroCreditos) -- Obtener la relación de alumnos de Ingeniería Informática T1 σ IdCarrera = ‘IN’ (ALUMNO) -- Obtener la relación de matrículas con asignaturas aprobadas T2 σ Nota > 10 (MATRICULA) -- Obtener la relación de asignaturas aprobadas por los alumnos de Ingeniería Informática T3 π T2.IdAlumno, T2.IdAsignatura (T2 T1) -- Agregar a asignaturas aprobadas el número de créditos T4 π T3.IdAlumno, T3.IdAsignatura, ASIGNATURA.Cred (T3 ASIGNATURA) -- Sumar el número de créditos de cada alumno T5 IdAlumno G SUM(Cred) as NroCreditos (T4) -- Completar información de Alumnos R π T1.IdAlumno, AP, AM, Nombres, NroCreditos (T1 T5) Notar que en la última sentencia se requiere composición externa (Left Join), porque puede haber alumnos de Ingeniería Informática que no hayan aprobado ninguna asignatura y no estén en la tabla T5. 52 Álgebra Relacional Extendida… Composición externa (Ejercicios) Dada la siguiente Base de datos: AGENCIA (IdAgencia, Nombre, Direccion, Responsable) AHORRISTA(IdAhorrista, Nombres, Doc_Identidad, Direccion) DEPOSITO(IdDeposito,Fecha, Importe,IdAgencia, IdAhorrista) RETIRO (IdRetiro, Fecha, Importe, IdAgencia, IdAhorrista) 53 Álgebra Relacional… Composición externa - Ejercicios: 1.- Determinar que Agencias tienen más depósitos en el mes de Setiembre del 2015 respecto al mes de Agosto del 2015. -- Obtener los depósitos de Setiembre T1 σ Fecha >= ‘01/09/2015’ and Fecha <= ‘30/09/2015’ (DEPOSITO) -- Obtener los importes de los depósitos de Setiembre T2 IdAgenciaGSUM(Importe) as TotalSetiembre(T1) -- Obtener los depósitos de Agosto T3 σ Fecha >= ‘01/08/2015’ and Fecha <= ‘31/08/2015’ (DEPOSITO) -- Obtener los importes de los depósitos de Agosto T4IdAgenciaGSUM (Importe) as TotalAgosto(T3) -- Juntar los depósitos de Setiembre y Agosto T5 π T2.IdAgencia, TotalSetiembre, EsNulo(TotalAgosto, 0) as TotalAgosto (T2 T4) -- Determinar las agencias que han tenido más depósitos en Setiembre que Agosto T6σ TotalSetiembre>TotalAgosto(T5) -- Completar con la información de agencias R π T6.IdAgencia, Nombre, Direccion, Responsable, TotalSetiembre, TotalAgosto (T6 AGENCIA) Notar que para obtener la tabla T5 se requiere composición externa (Left Join), porque puede haber agencias que en Agosto no hayan tenido depósitos (aunque la probabilidad sea mínima). 54 Álgebra Relacional… Composición externa - Ejercicios: 2.- Determinar la relación de ahorristas cuyo saldo es menor a S/. 100.00 y no hayan efectuado ningún movimiento en el año 2015. -- Determinar los ahorristas que tuvieron depósitos en el 2015 T1 π IdAhorrista (σ Fecha >= ‘01/01/2015’ and Fecha <= ‘31/12/2015’ (DEPOSITO)) T2 π IdAhorrista (σ Fecha >= ‘01/01/2015’ and Fecha <= ‘31/12/2015’ (RETIRO)) -- Determinar los ahorristas que tuvieron retiros en el 2015 -- Determinar los ahorristas que tuvieron movimientos en el 2015 T3T1 ∪ T2 -- Determinar los ahorristas que no tuvieron movimientos en el 2015 T4 π IdAhorrista(AHORRISTA)–T3 -- Determinar los depósitos de los ahorristas sin movimientos en el 2015 T5 DEPOSITO T4 -- Determinar los retiros de los ahorristas que no tuvieron movimientos en el 2015 T6 RETIRO T4 -- Calcular el total de depósitos de cada ahorrista T7IdAhorristaGSUM (Importe) as TotalDepositos(T5) -- Calcular el total de retiros de cada ahorrista T8IdAhorristaGSUM (Importe) as TotalRetiros(T6) -- Calcular los saldos de cada ahorrista T9 π T7.IdAhorrista, (TotaDepositos -EsNulo(TotalRetiros, 0)) as Saldo(T7 T8) -- Completar con la información de ahorristas R π T6.IdAhorrista, Nombres,Doc_Identidad,Direccion, Saldo (T9 AHORRISTA) 55 Álgebra Relacional Extendida… Ejercicios propuestos Dada la siguiente base de datos: MUSEO(IdMuseo, Nombre, Direccion) PIEZAS(IdPieza, Descripcion, Tipo, Epoca, Observaciones, IdMuseo) INGRESOS(NroBoleto, Fecha, Importe, IdMuseo) GASTOS(NroDocumento, Fecha, Concepto, Importe, IdMuseo) Escribir las sentencias en álgebra relacional, para: 1.- Determinar 2.- Determinar 3.- Determinar 4.- Determinar 5.- Determinar 2014. la relación de museos con saldo positivo durante el año 2014. la época con el mayor número de piezas. los dos museos con el mayor número de piezas. los dos museos con el mayor número de visitantes. los museos que hayna tenido menos ingresos en el 2015 respecto al 56 Álgebra Relacional Extendida… Ejercicios propuestos Dada la siguiente base de datos: AGENTE(IdAgente, Nombres) VEHICULO(NroPlaca, Marca, Modelo, Color) TIPO_INFRACCION(IdTipo_Infraccion, Descripcion, Categoría) INFRACCION(NroPapeleta, Fecha, IdTipo_Infraccion, NroPlaca, IdAgente, Importe) Escribir las sentencias en álgebra relacional, para: 1.- Determinar infracciones. 2.- Determinar 3.- Determinar infracción. 4.- Determinar 5.- Determinar en qué mes del año 2010 se recaudó más por concepto de el vehículo que tuvo más infracciones en el año 2010. los dos agentes que imponen el mayor número de papeletas de que tipos de infracción no se cometieron en el 2014 o en el 2015. en que tipos de infracción se recaudó más el 2015 respecto al 2014. 57 Álgebra Relacional Extendida… Ejercicios propuestos Dada la siguiente base de datos: AUTOR(IdAutor, Nombres, Pais) LIBRO(CodLibro,Titulo, Editorial, Edicion, Anio, Pais, Especialidad) LIBRO_AUTOR(CodLibro, IdAutor) LECTOR(IdLector, AP, AM, Nombres, DNI, Direccion) PRESTAMO(IdPrestamo, FechaPrestamo, CodLibro, IdLector, FechaDevolucion) Escribir las sentencias en álgebra relacional, para: 1.- Determinar en qué mes del primer trimestre del año 2016 se prestaron más libros. 2.- Determinar en qué mes del año 2011 se prestaron más libros. 3.- Determinar la relación de lectores que hayan dejado de leer en alguno de los meses del año 2011. 4.- Determinar la relación de lectores con el número de libros que han leído en los años 2015 y 2016. 5.- Determinar la relación de libros correspondientes al último año con el número de préstamos efectuados de cada libro. 58 Álgebra Relacional… DIVISION R S PROVEEDOR PRODUCTO Alfa Impresora Alfa LapTop Alfa Scanner Alfa DVD Scanner Omega Scanner DVD Omega LapTop Delta Impresora Delta DVD Delta LapTop Delta Scanner Beta Scanner Beta DVD Beta Impresora PRODUCTO Impresora LapTop Determinar la relación de proveedores que proveen todos los Productos 59 Álgebra Relacional… 1.- Obtener relación de Proveedores T1 PROVEEDOR Alfa T1 πPROVEEDOR(R) Omega Delta Beta 60 Álgebra Relacional… 2.- Obtener el producto de Proveedores y Productos T2 T2 T1 X S PROVEEDOR PRODUCTO Alfa Impresora Alfa LapTop Alfa Scanner Alfa DVD Omega Impresora Omega LapTop Omega Scanner Omega DVD Delta Impresora Delta LapTop Delta Scanner Delta DVD Beta Impresora Beta LapTop Beta Scanner Beta DVD 61 Álgebra Relacional… 3.- Obtener Relación de Proveedores que no proveen todos los productos T3 PROVEEDOR PRODUCTO T3 T2 - R Omega Impresora Omega DVD Beta LapTop 4.- Obtener Relación de Proveedores que no proveen todos los productos T4 T4 π PROVEEDOR(T3) PROVEEDOR Omega Beta 5.- Obtener Relación de Proveedores que proveen todos los productos T5 T1 – T4 T5 PROVEEDOR Alfa Delta 62 Álgebra Relacional… DIVISION R/S πPROVEEDOR ( R ) - πPROVEEDOR(πPROVEEDOR( R ) X S – R) 63 Modificación de la base de datos Relación constante: Las relaciones constantes se escriben poniendo una relación de sus tuplas entre llaves. Por ejemplo: {(090123,Paz,Arce,Ana,IN)(080533,Díaz,Cusi,Pedro,CO)} 64 Modificación de la base de datos Borrado: Se expresa mediante: r r- E Donde: r es una relación y E es una consulta del algebra relacional Ejemplo: Dada la tabla: Alumno(CodAlumno, AP, AM, Nombres, CodCP) Borrar la relación de alumnos de la carrera profesional ‘CO’ Alumno Alumno - σ ALUMNO.CodCP = ‘C0’(Alumno) 65 Modificación de la base de datos Inserción: Se expresa mediante: r r ᴜ E Donde: r es una relación y E es una expresión del álgebra relacional Ejemplo: Dada la tabla: Alumno(CodAlumno, AP, AM, Nombres, CodCP) Insertar una tupla a la tabla Alumno. Alumno Alumno ᴜ {(’080024’,’Meza’,’Tito’,’Luis’,’IN’)} 66 Modificación de la base de datos Actualización: Se realiza mediante la proyección generalizada y se expresa mediante: r π F1, F2, …, Fn(σp (r)) ᴜ ( r - σp (r)) Donde: r es una relación, F una expresión de la operación proyección generalizada y p una condición de la operación selección. Ejemplo: Dada la tabla: Alumno(CodAlumno, AP, AM, Nombres, CodCP) Actualizar la carrera profesional ’CO’ a ’CC’. T1 σCodCP = ’CO’ (ALUMNO) Alumno π CodAlumno, AP, AM, Nombres, ’CC’ (T1) ᴜ (Alumno – T1) 67 Cálculo Relacional Fue propuesto por Codd en 1971 como alternativa al álgebra. La diferencia fundamental entre un lenguaje algebraico y un lenguaje predicativo (Denominado así porque utiliza el cálculo de predicados para la formulación de consultas), es que en el primero hay que especificar qué operadores se tienen que aplicar a las relaciones para obtener el resultado, mientras que en los segundos sólo es preciso indicar cuál es el resultado que se quiere obtener, expresándolo mediante cálculo de predicados de primer orden. 68 Cálculo Relacional… TIPOS ◼ Orientados a la tupla, en los que una variable se interpreta como si representase las tuplas de una relación. Ejemplo el lenguaje ALPHA (Nunca fue implementado) ◼ Orientados al dominio, en los que una variable se interpreta como si representase los valores de un dominio. El ejemplo más característico es el lenguaje QBE (Query By Example), desarrollado en Yorktown Heifhts por IBM. 69 Modelo Relacional Restricciones.- Estructuras u ocurrencias no permitidas. Restricciones Inherentes ◼ Integridad de Entidad - No hay dos tuplas iguales - El orden de las tuplas no es significativo - El orden de los atributos (columnas) no es significativo - Cada atributo sólo puede tomar un único valor del dominio, no admitiéndose por tanto los grupos repetitivos. 70 Modelo Relacional Restricciones de Usuario Integridad Referencial “Si una relación R2 (relación que referencia) tiene un atributo que es la clave primaria de la relación R1 (relación referenciada), todo valor de dicho descriptor debe concordar con un valor de la clave primaria de R1, o ser nulo”. El atributo es, por tanto, una clave foránea de la relación R2. CARRERA(CodCP, NombreCP) CO Contabilidad ALUMNO(Codigo, AP ,AM ,Nombres, CodCP) 990104-A PAZ DIAZ Ana CO 990305-D ARCE MEZA Pedro AD 71 Modelo Relacional Operaciones en la Integridad Referencial ◼ Restringida ◼ Con transmisión en cascada ◼ Con puesta a nulos ◼ Con puesta a valor por defecto ◼ Que desencadena un procedimiento de usuario. CARRERA(CodCP, NombreCP) CO Contabilidad AD Administración ALUMNO(Codigo, AP ,AM ,Nombres, CodCP) 990104-A PAZ DIAZ Ana CO 990305-D ARCE MEZA Pedro AD 72 Modelo Relacional Restricciones entre elementos ◼ Restricción intrarrelación sobre atributos PRESTAMO(ID_Prestamo, Fecha, Importe, FechaVcto,…) (Fecha <= FechaVcto) ◼ Restricción intrarrelación sobre tuplas ASIENTO_DETALLE(ID_Asiento, Cod_Cta, Debe, Haber,…) (En el mismo se debe cumplir: Total_Debe = Totale_Haber) ◼ Restricción interrelación PRESTATARIO (ID_Prestatario,Nombres,Limite_Cred,…) PRESTAMO(ID_Prestamo, Fecha, Importe, FechaVcto,…) (El Importe no puede ser mayor al Límite de crédito) ◼ Restricción sobre dominios PREDIO (ID_Predio, Dirección, Distrito, ID_Propietario,…) (Distrito є {Cusco, Wanchaq, Santiago, Poroy, …}) 73