Download - Fundamentos de Base de Datos

Transcript
Page 1: Fundamentos de Base de Datos

FUNDAMENTOS DE BASE DE DATOSALGEBRA RELACIONAL

Page 2: Fundamentos de Base de Datos

Dadas las siguientes relaciones, resolver por medio del algebra relacional los siguientes ejercicios

Page 3: Fundamentos de Base de Datos

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

Page 4: Fundamentos de Base de Datos

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)

Page 5: Fundamentos de Base de Datos

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

Page 6: Fundamentos de Base de Datos

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)

Page 7: Fundamentos de Base de Datos

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

Page 8: Fundamentos de Base de Datos

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

Page 9: Fundamentos de Base de Datos

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

Page 10: Fundamentos de Base de Datos

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

Page 11: Fundamentos de Base de Datos

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))))

Page 12: Fundamentos de Base de Datos

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)))

Page 13: Fundamentos de Base de Datos

P#

A

P1P3P4P5

2124

Bibliografía

Fundamentos.de.Bases.de.datos.Abraham.Silberschatz.McGRAW-HILL