1 TEMA 4: MODELO RELACIONAL (Continuación) 4.3.5.7 Otras
Transcripción
1 TEMA 4: MODELO RELACIONAL (Continuación) 4.3.5.7 Otras
Modelo Relacional TEMA 4: MODELO RELACIONAL (Continuación) 4.3.5.7 Otras Operaciones Se definen otras operaciones que no añaden potencia al álgebra, pero que simplifican las consultas habituales. Para cada operación nueva se facilita una expresión equivalente utilizando sólo las operaciones fundamentales. 4.3.5.8 Operación Intersección de Conjuntos La primera operación adicional del álgebra relacional que se definirá es la intersección de conjuntos (∩). La operación de intersección permite identificar filas que son comunes en dos relaciones. Asimismo sean A, B dos relaciones, entonces A ∩ B es una nueva relación que contiene las tuplas comunes a las relaciones A y B. Ejemplo: Averiguar todos los clientes que tienen un préstamo concedido y una cuenta abierta. Utilizando la intersección de conjuntos se escribe la siguiente consulta: ∏nombre_cliente (Prestatario) ∩ ∏ nombre_cliente (Impositor) La relación resultante de esta consulta es: nombre_cliente Carlos Luis Carla Ema Bruna Tomar en cuenta que se puede volver a escribir cualquier expresión del álgebra relacional utilizando la intersección de conjuntos sustituyendo la operación intersección por un par de operaciones de diferencia de conjuntos de la siguiente manera: r ∩ s = r-(r-s) Por tanto, la intersección de conjuntos no es una operación fundamental y no añade potencia al álgebra relacional, sencillamente es más conveniente escribir r ∩ s que r-(r-s). 4.3.5.9 Operación Reunión Natural La reunión natural es una operación binaria que implementa el producto cartesiano con condición. Se denota por el símbolo de la reunión |X|. La operación reunión natural forma un producto cartesiano de sus dos argumentos, realiza una selección forzando la igualdad de los atributos que aparecen en ambos esquemas de relación y, finalmente, elimina los atributos duplicados. Se asume que se quiere tomar la reunión natural de dos relaciones, A y B, las cuales tienen las columnas C1, ..., Cn en común. Entonces |X| (A,B) se obtiene a través de estos tres pasos: Tome el producto de A y B. La relación resultante tendrá dos columnas para cada C1, ..., Cn. Elimine todas las filas del producto, excepto aquellas en las cuales los valores de las columnas C1,..., Cn en A son iguales, respectivamente, a los valores de esas columnas en B. Proyecte una copia de las columnas C1, ... Cn. 1 Modelo Relacional Ejemplo: R = (A, B, C, D) S = (E, B, D) Esquema resultante = (A, B, C, D, E) R |X| c S se define como: O bien: R|X|cS ≈ σc(R x S) Ejemplo 1: Averiguar los nombres de todos los clientes que tienen concedido un préstamo en el banco y averiguar su importe. Esta consulta puede expresarse utilizando la reunión natural de la siguiente manera: ∏nombre_cliente numero_prestamo, importe (Prestatario |X| Prestamo) Dado que los esquemas de Prestatario y de Préstamo tienen en común el atributo numero_prestamo, la operación reunión natural sólo considera los pares de tuplas que tienen el mismo valor de número_prestamo. Esta operación combina cada uno de estos pares en una sola tupla en la unión de los dos esquemas (es decir, nombre_cliente, nombre_sucursal, numero_prestamo, importe). La relación resultante de esta consulta es: nombre_cliente numero_prestamo importe Carlos P-16 2000 Carlos P-23 4500 Luis P-15 1500 Ema P-14 1200 Bruna P-17 2200 Carla P-11 900 Carla P-17 2200 Ejemplo 2: Encontrar todos los clientes que tienen una cuenta abierta y un préstamo concedido en el banco. ∏nombre_cliente (Prestatario |X| Impositor) La relación resultante de esta consulta es: nombre_cliente numero_prestamo importe Carlos P-16 2000 Carlos P-23 4500 Luis P-15 1500 Ema P-14 1200 Bruna P-17 2200 Carla P-11 900 Carla P-17 2200 2 Modelo Relacional 4.3.5.10 Operación División La operación división, denotada por ÷, resulta adecuada para las consultas que incluyen la expresión <<para todos>>. Es una operación del álgebra relacional que crea una nueva relación, seleccionando las filas en una relación que se corresponden con todas las filas en otra relación. La operación división es la opuesta de la operación producto cartesiano. Sean r y s relaciones de los esquemas R y S respectivamente, donde R = (A1, …, Am, B1, …, Bn) S = (B1, …, Bn) El resultado de r ÷ s es una relación del esquema: R – S = (A1, …, Am) La División se realiza entre dos tablas que cumplan las siguientes condiciones: “R” debe tener columnas de “S” y el número de columnas de “R” ha de ser mayor que el de “S”. “S” debe tener al menos una tupla. El cociente es una nueva tabla formada por las columnas de “R” que no están en “S” y por las filas obtenidas al concatenar con “S” que estén contenidas en “R”. Ejemplo: Encontrar a todos los clientes que tengan abierta una cuenta en todas las sucursales ubicadas en León. ∏nombre_cliente, nombre_suxursal (Impositor |X| Cuenta) ÷ ∏nombre_suxursal(σciudad_sucursal=”León”(Sucursal)) 3 Modelo Relacional Ejercicios Resueltos: FEDERACION (nombre_f,direccion,telefono) MIEMBRO (dni,nombre_m,titulacion) Composicion (nombre_f,dni,cargo,fecha_inicio) Se pide: 1. Obtener el nombre de los presidentes de federación. 2. Obtener la dirección de aquellas federaciones que tienen gerente. 3. Obtener las federaciones que no tienen asesor técnico. 4. Obtener las federaciones que tienen todos los cargos. 5. Obtener las federaciones que tienen asesor técnico y psicólogo. Solución: 1. ∏nombre_m(σcargo=”presidente” (Composición X Miembro)) 2. ∏direccion(σcargo=”gerente” (Composición X Federacion)) 3. ∏nombre_f (Federacion) - ∏nombre_f (σcargo=”Asesor tecnico” (Composicion)) 4. ∏nombre_f,cargo (Composicion) ÷ ∏cargo (Composicion) 5. ∏nombre_f (σcargo=”Asesor tecnico” (Composicion)) ∩ ∏nombre_f (σcargo=”Psicologo” (Composicion)) 4