Fundamentos de Base de Datos
Transcript of Fundamentos de Base de Datos
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