Download TEMA 4: MODELO RELACIONAL (Continuación) 4.3.5.7 Otras

Document related concepts
no text concepts found
Transcript
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 permite combinar ciertas selecciones y un producto
cartesiano en una sola operació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:
C1,...,
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
Cn en A son iguales, respectivamente, a los valores de esas columnas en B.
Proyecte una copia de las columnas C1, ... Cn.
Ejemplo:
R = (A, B, C, D)
S = (E, B, D)
Esquema resultante = (A, B, C, D, E)
r|X|se define como:
1
Modelo Relacional
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
Carlos
Carlos
Luis
Ema
Bruna
Carla
Carla
numero_prestamo
P-16
P-23
P-15
P-14
P-17
P-11
P-17
importe
2000
4500
1500
1200
2200
900
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
Carlos
Carlos
Luis
Ema
Bruna
Carla
Carla
4.3.5.10
numero_prestamo
P-16
P-23
P-15
P-14
P-17
P-11
P-17
importe
2000
4500
1500
1200
2200
900
2200
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)
Ejemplo: Encontrar a todos los clientes que tengan abierta una cuenta en todas las sucursales
ubicadas en León.
2
Modelo Relacional
∏nombre_cliente, nombre_suxursal (Impositor |X| Cuenta) ÷ ∏nombre_suxursal(σciudad_sucursal=”León”(Sucursal))
Ejercicios Resueltos:
FEDERACION (nombre_f,direccion,telefono)
MIEMBRO (dni,nombre_m,titulacion)
Composicion (nombre_f,dni,cargo,fecha_inicio)
Se pide:
1.
2.
3.
4.
5.
Obtener
Obtener
Obtener
Obtener
Obtener
el nombre de los presidentes de federación.
la dirección de aquellas federaciones que tienen gerente.
las federaciones que no tienen asesor técnico.
las federaciones que tienen todos los cargos.
las federaciones que tienen asesor técnico y psicólogo.
Solución:
1.
2.
3.
4.
5.
∏nombre_m(σcargo=”presidente” (Composición X Miembro))
∏direccion(σcargo=”gerente” (Composición X Federacion))
∏nombre_f (Federacion) - ∏nombre_f (σcargo=”Asesor tecnico” (Composicion))
∏nombre_f,cargo (Composicion) ÷ ∏cargo (Composicion)
∏nombre_f (σcargo=”Asesor tecnico” (Composicion)) ∩ ∏nombre_f (σcargo=”Psicologo” (Composicion))
3