Download 1 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 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