fundamentos de base de datos
TRANSCRIPT
FUNDAMENTOS DE BASE DE DATOSALGEBRA 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-prestamo
Nombre-sucursal
Importe
p-15 Navacerrada 1.500p-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-clienteAbrilFernándezGómezGonzálezLópezPérezRupérezSantosSotocaValdivieso.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-clienteAbrilGonzalesRuperez
4.- se desea averiguar los nombres de todos los clientes que tienen concedido un préstamo enla sucursal de Navacerrada.
σnombre-sucursal = «Navacerrada» (prestatario préstamo).
Nombre-cliente
Prestatario.numero-prestamo
Préstamo.numero-prestamo
Nombre-sucursal
Importe
SantosSantosGomezGomezLopezLopezSotocaSotoca
P-17P-17P-23P-23P-15P-15P-14P-14
P-15P-16P-15P-16P-15P-16P-15P-16
NavacerradaNavacerradaNavacerradaNavacerradaNavacerradaNavacerradaNavacerradaNavacerrada
1.5001.3001.5001.3001.5001.3001.5001.300
PerezPerezGomezGomezValdiviesoValdiviesoFernandezFernandez
P-93P-93P-11P-11P-17P-17P-16P-16
P-15P-16P-15P-16P-15P-16P-15P-16
NavacerradaNavacerradaNavacerradaNavacerradaNavacerradaNavacerradaNavacerradaNavacerrada
1.5001.3001.5001.3001.5001.3001.5001.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-clienteFernandezLopez
6.- La consulta para averiguar el máximo saldo de cuenta del banco
Πsaldo (cuenta) – Πcuenta.saldo (σcuenta.saldo < d.saldo
(cuenta ρd (cuenta)))
Saldo900
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-clienteGomezPerez
8.- se desea averiguar todos los clientes que tienen un préstamo concedido y una cuenta abierta.
Πnombre-cliente (prestatario)∩Πnombre-cliente (impositor)
Nombre-clienteGomezPerezSantos
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-cliente
Numero-prestamo
Importe
FernandezGomezGomezLopezPerezSantosSotocavaldivieso
P-16P-23P-11P-15P-93P-17P-14P-17
1.3002.0009001.5005001.0001.5001.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» (clientecuenta impositor))
Nombre-sucursalGalapagarNavacerrada
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
CentroGalapagar
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-empleado
Nombre-sucursal
Sueldo
GonzalesDiazJimenezCatalánCanaCascallarFernandezRibera
CentroCentroCentroLeganesLeganesNavacerradaNavacerradanavacerrada
1.5001.3002.5001.6001.5005.3001.5001.300
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-sucursal Gsum(sueldo) as suma-sueldo,max(sueldo) as
sueldo-máximo (trabajo-por-horas)
Nombre-sucursal
Suma-empleado
Sueldo-maximo
CentroLeganesNavacerrada
5.3003.1008.300
2.5001.6005.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 uso del Algebra relacional
FIG1. Relación de proveedores
P#
PNOMBRE
CATEGORIA
CIUDAD
P1P2P3P4P5
CARLOSJUANJOSEINMAEVA
2010302030
SEVILLAMADRIDSEVILLASEVILLACACERES
C#
CNOMBRE
COLOR
PESO
CIUDAD
C1C2C3C4C5C6
X3AB85C4BC4BVT8C30
ROJO VERDEAZULROJO AZULROJO
121717141219
SEVILLAMADRIDMALAGASEVILLAMADRIDSEVILLA
FIG.2 fig.2 relacion de componentes
T#
TNOMBRE CIUDAD
T1T2T3T4T5T6T7
CLASIFICADORAPERFORADORALECTORACONSOLAMEZCLADORATERMINALCINTA
MADRIDMALAGACECERESCACERESSEVILLABERCELONASEVILLA
Fig.3 relacion de artículos
Fig.4 relacion de envíos
P#
C#
T#
CANTIDAD
P1P2P2P2P2P2P2P2P2P3P3P4P4P5P5P5P5P5P5P5P5P5P5
C1C1C3C3C3C3C3C3C3C5C3C4C6C6C2C2C5C5C6C1C3C4C6
T1T4T1T2T3T4T5T6T7T2T1T2T3T2T4T4T7T2T4T4T4T5T4
200700400200200500600400800100200500300300200100100200100200800400500
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
T1T3T4T5T6
MADRIDCACERESCACERESSEVILLABARCELONA
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#P1
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#P1P4
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#T1T4
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#P1P2P3P4P5
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#T1T2T3T
4T5T6
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
P5P5P2P3P2P2P2P5P2P2P2P2P5P5
C2C2C3C3C3C3C3C3C3C3C3C5C5C5
T2T4T1T1T2T3T4T4T5T6T7T2T4T5
200100400200200200500200600400800100500400
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))))
CNOMBREC30C4BVT8X3A
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#P1P3P4
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#T4
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#P2P3
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
P1P3P4P5
2124
Bibliografía
Fundamentos.de.Bases.de.datos.Abraham.Silberschatz.McGRAW-HILL