FUNDAMENTOS DE
BASE DE DATOS
ALGEBRA RELACIONAL
Dadas las siguientes relaciones, resolver por medio del algebra relacional
los siguientes ejercicios
Fig. 1 Esquema relacional de un banco
Resolver los siguientes ejercicios haciendo uso del algebra
relacional.
1.- seleccionar las tuplas de la relación préstamo en que la sucursal
es «Navacerrada».
σnombre-sucursal = «Navacerrada» (préstamo)
Numero- Nombre- Impor
prestamo sucursal te
p-15 Navacerrada 1.500
p-16 Navacerrada 1.500
2.- Obtener los nombres de todos los clientes que tienen un préstamo o una
cuenta
Πnombre-cliente (prestatario)∪Πnombre-cliente (impositor)
Nombre-
cliente
Abril
Fernández
Gómez
González
López
Pérez
Rupérez
Santos
Sotoca
Valdivieso
.
3.- Se pueden buscar todos los clientes del banco que tienen abierta
una cuenta pero no tienen concedido ningún préstamo
Πnombre-cliente (impositor) – Πnombre-cliente (prestatario)
Nombre-
cliente
Abril
Gonzales
Ruperez
4.- se desea averiguar los nombres de todos los clientes que tienen
concedido un préstamo en
la sucursal de Navacerrada.
σnombre-sucursal = «Navacerrada» (prestatario ⋅ préstamo).
Nombre- Prestatario.numero- Préstamo.numero- Nombre- Import
cliente prestamo prestamo sucursal e
Santos P-17 P-15 Navacerrada 1.500
Santos P-17 P-16 Navacerrada 1.300
Gomez P-23 P-15 Navacerrada 1.500
Gomez P-23 P-16 Navacerrada 1.300
Lopez P-15 P-15 Navacerrada 1.500
Lopez P-15 P-16 Navacerrada 1.300
Sotoca P-14 P-15 Navacerrada 1.500
Sotoca P-14 P-16 Navacerrada 1.300
Perez P-93 P-15 Navacerrada 1.500
Perez P-93 P-16 Navacerrada 1.300
Gomez P-11 P-15 Navacerrada 1.500
Gomez P-11 P-16 Navacerrada 1.300
Valdivieso P-17 P-15 Navacerrada 1.500
Valdivieso P-17 P-16 Navacerrada 1.300
Fernandez P-16 P-15 Navacerrada 1.500
Fernandez P-16 P-16 Navacerrada 1.300
5.- los clientes que tienen concedido un préstamo en la sucursal de
Navacerrada.
Πnombre-cliente (σprestatario.número-préstamo = préstamo.número-préstamo
(σnombre-sucursal = «Navacerrada» (prestatario ⋅ préstamo)))
Nombre-cliente
Fernandez
Lopez
6.- La consulta para averiguar el máximo saldo de cuenta del banco
Πsaldo (cuenta) – Πcuenta.saldo (σcuenta.saldo < d.saldo
(cuenta ⋅ ρd (cuenta)))
Sald
o
900
7.- hallar a los clientes que vivian en la calle Gomez y en esa misma
ciudad.
Πcliente.nombre-cliente (σcliente.calle-cliente = dirección-Gómez ∧
cliente.ciudad-cliente = dirección-Gómez. ciudad (cliente ⋅
ρdirección-Gómez (calle, ciudad) (Πcalle-cliente, ciudad-cliente
(σnombre-cliente = «Gómez» (cliente)))))
Nombre-
cliente
Gomez
Perez
8.- se desea averiguar todos los clientes que tienen un préstamo
concedido y una cuenta abierta.
Πnombre-cliente (prestatario)∩Πnombre-cliente (impositor)
Nombre-
cliente
Gomez
Perez
Santos
9.- Averiguar los nombres de todos los clientes que tienen concedido
un préstamo en el banco y averiguar su importe.
Πnombre-cliente, número-préstamo, importe (prestatario préstamo)
Nombre- Numero- Impor
cliente prestamo te
Fernandez P-16 1.300
Gomez P-23 2.000
Gomez P-11 900
Lopez P-15 1.500
Perez P-93 500
Santos P-17 1.000
Sotoca P-14 1.500
valdivieso P-17 1.000
10.- Hallar los nombres de todas las sucursales con clientes que
tienen una cuenta abierta en el banco y que viven en Peguerinos.
Πnombre-sucursal (σciudad-cliente = «Peguerinos» (cliente
cuenta impositor))
Nombre-
sucursal
Galapagar
Navacerrada
11.- se desea hallar a todos los clientes que tengan abierta una
cuenta en todas las sucursales ubicadas en Arganzuela.
Πnombre-cliente, nombre-sucursal (impositor cuenta)
Πnombre-sucursal (σciudad-sucursal = «Arganzuela» (sucursal))
Nombre-
sucursal
Centro
Galapagar
12.- se desea hallar la suma total de sueldos de todos los empleados
a tiempo parcial en cada sucursal del banco por separado, en lugar
de hallar la suma de sueldos de todo el banco.
nombre-sucursal Gsum(sueldo) (trabajo-por-horas)
Nombre- Nombre- Sueld
empleado sucursal o
Gonzales Centro 1.50
Diaz Centro 0
Jimenez Centro 1.30
Catalán Leganes 0
Cana Leganes 2.50
Cascallar Navacerrada 0
Fernandez Navacerrada 1.60
Ribera navacerrada 0
1.50
0
5.30
0
1.50
0
1.30
0
13.- se desea averiguar el sueldo máximo de los empleados a tiempo
parcial de cada oficina, además de la suma de los sueldos.
nombre-sucursalGsum(sueldo) as suma-sueldo,max(sueldo) as
sueldo-máximo (trabajo-por-horas)
Nombre- Suma- Sueldo-
sucursal empleado maximo
Centro 5.300 2.500
Leganes 3.100 1.600
Navacerrada 8.300 5.300
Para la siguiente Base de Datos Relacional:
FEDERACION (NOMBRE#, DIRECCION, TELEFONO)
MIEMBRO (DNI#, NOMBRE_M, TITULACION)
COMPOSICION (NOMBRE#, DNI#, CARGO, FECHA_INICIO)
Se pide dar respuesta algebraica a las siguientes consultas:
14. Obtener el nombre de los presidentes de federación.
Π NOMBRE_M (σ CARGO = 'PRESIDENTE' (COMPOSICION) * MIEMBRO)
15.- Obtener la dirección de aquellas federaciones que tienen
gerente.
Π DIRECCION (σ CARGO = 'GERENTE' (COMPOSICION) * FEDERACION)
16.- Obtener las federaciones que no tienen asesor técnico.
Π NOMBRE= (FEDERACION)-Π NOMBRE# (σ CARGO = 'ASESOR TECNICO' (COMPOSICION)
17.- 4. Obtener las federaciones que tienen todos los cargos.
Π NOMBRE= CARGO (COMPOSICION) ÷ Π CARGO (COMPOSICION)
18.- 5. Obtener las federaciones que tienen asesor técnico y
psicólogo.
Π NOMBRE ( σ CARGO = 'ASESOR TECNICO' (COMPOSICION)) ∩
Π NOMBRE= (σ CARGO = 'PSICOLOGO (COMPOSICION))
Dadas las siguientes relaciones, resolver cada
uno de los ejercicios que se te pide haciendo P C T CANTIDAD
uso del Algebra relacional # # #
P PNOMBR CATEGORI CIUDAD P C T 200
# E A 1 1 1 700
P CARLOS 20 SEVILLA P C T 400
1 JUAN 10 MADRID 2 1 4 200
P JOSE 30 SEVILLA P C T 200
2 INMA 20 SEVILLA 2 3 1 500
P EVA 30 CACERE P C T 600
3 S FIG1. 2 3 2 400
P P C T 800
4 2 3 3 100
P P C T 200
5 2 3 4 500
Relación de proveedores P C T 300
2 3 5 300
C CNOMBR COLO PES CIUDAD P C T 200
# E R O 2 3 6 100
C X3A ROJO 12 SEVILLA P C T 100
1 B85 VERD 17 MADRID 2 3 7 200
C C4B E 17 MALAGA P C T 100
2 C4B AZUL 14 SEVILLA 3 5 2 200
C VT8 ROJO 12 MADRID P C T 800
3 C30 AZUL 19 SEVILLA 3 3 1 400
C ROJO P C T 500
4 4 4 2
C P C T
5 4 6 3
C P C T
6 5 6 2
P C T
FIG.2 fig.2 relacion de componentes
5 2 4
P C T
T TNOMBRE CIUDAD
5 2 4
#
P C T
T CLASIFICADOR MADRID
5 5 7
1 A MALAGA
P C T
T PERFORADORA CECERES
5 5 2
2 LECTORA CACERES
P C T
T CONSOLA SEVILLA
5 6 4
P C T
5 1 4
P C T
5 3 4
P C T
5 4 5
P C T
5 6 4
3 MEZCLADORA BERCELON
T TERMINAL A
4 CINTA SEVILLA
T
5
T
6
T
7
Fig.3 relacion de artículos
Fig.4 relacion de envíos
19.- Obtener de la tabla de artículos los valores de T# y CIUDAD
donde el nombre de la ciudad acaba en D o contiene al menos una
E.
Π t#,ciudad (σ ciudad LIKE%D) OR (ciudad LIKE%E%)(Articulos))
T CIUDAD
#
T MADRID
1 CACERES
T CACERES
3 SEVILLA
T BARCELON
4 A
T
5
T
6
20.- Obtener los valores de P# para los proveedores que
suministran para el artículo T1 el componente C1.
Π p#(σ (t#=´T1´) AND (C#=´C1´)(Envios))
P
#
P
1
21.- Obtener los valores de P# para los proveedores que
suministran para un artículo de SEVILLA o MADRID un componente
ROJO.
Π p#((σ color=´ROJO´(componentes))*(Envios* Π t#((σ (ciudad=´MADRID´
OR Ciudad=´SEVILLA´)(Articulos)))))
P
#
P
1
P
4
22.- Obtener los valores de T# para los artículos que usan al
menos un componente que se puede obtener con el proveedor P1.
Π t#( Envíos * Π c#(σ p#='P1'(Envíos)) )
T
#
T
1
T
4
23.- obtener los valores de P# para los proveedores que suministran
almenos un componente suministrado almenos por un proveedor que
suministra almenos un componente rojo.
Π p#(ENVIOS*(Π C#(ENVIOS*(Π p#(ENVIOS*(σ color=´ROJO´(COMPONENTES)))))))
P
#
P
1
P
2
P
3
P
4
P
5
24.-Obtener los identificadore de artículos, T#, para los que se ha
suministrado algún componente del que se haya suministrado una
media superior a 320 articulos
Π t#(ENVIOS*(Π C#(σ A>320(∑(c#) ⊕ AVG(cantidad) A (ENVIOS)))))
T
#
T
1
T
2
T
3
T
4
T
5
T
6
25.-Seleccionar todos los datos de los envíos realizados de
componentes cuyo color no sea ´ROJO´.
Π ENVIOS.*(ENVIOS*(σ COLOR<>´ROJO´ (COMPONENTES)))
P C T CANTIDAD
# # #
P C T 200
5 2 2 100
P C T 400
5 2 4 200
P C T 200
2 3 1 200
P C T 500
3 3 1 200
P C T 600
2 3 2 400
P C T 800
2 3 3 100
P C T 500
2 3 4 400
P C T
5 3 4
P C T
2 3 5
P C T
2 3 6
P C T
2 3 7
P C T
2 5 2
P C T
5 5 4
P C T
5 5 5
26.- Seleccionar los nombres de los components que son
suministrados en una cantidad total superior a 500.
Π cnombre(componentes*(σ s>500)(∑(c#)⊕SUM(cantidad) S(Envios))))
CNOMBR
E
C30
C4B
VT8
X3A
27.-Seleccionar los identificadores de proveedores que residan en
Sevilla y no suministren mas de dos artículos distintos.
Π p#(σ ciudad=´sevilla´(proveedores))∩Π p#(σ (c<=2)(∑(p#)⊕COUNT(DISTINCT
t#)C(envíos)))
P
#
P
1
P
3
P
4
28.-seleccionar los identificadores de artículos para los que se
provean envios de datos los componentes existente en la base de
datos.
Π t#(Envios ÷ Π c#(componentes))
T
#
T
4
29.- Obtener los valores de p# para los proveedores que suministren
los artículos T1 y T2
Π p#(σ t#=´T1´(envíos))) ∩ (Π p#(σ t#=´t2´(envíos))
P
#
P
2
P
3
30.-seleccionar el identificador de proveedores y el numero de envíos
de coponentes de color ´ROJO´ llevados acabo por cada proveedor.
∑(p#)⊕COUNT(*) A (ENVIOS*(σ COLOR=´ROJO´ (COMPONENTES)))
P A
#
P 2
1 1
P 2
3 4
P
4
P
5
Bibliografía
Fundamentos.de.Bases.de.datos.Abraham.Silberschatz.McGRAW-HILL