Вы находитесь на странице: 1из 20

Boletín optimización | Inma Morilla

EJERCICIO 1.
Dadas las tablas:
ALUMNO(nº-matricula,nombre,apellidos,dni,dirección, ciudad, Tlf). 1000 alumnos.
ASIGNATURA(cod-asignatura, nombre-asig). 100 asignaturas.
MATRICULADO(nº-matricula,cod-asignatura,nota). 10000 filas.

OPTIMIZAR LAS SIGUIENTES CONSULTAS:


a) Obtener el nombre de las asignaturas en las que está matriculado ‘A777’.
b) Obtener el nombre y dni de los alumnos de Sevilla matriculados en GBD y SAD.
c) Lugar de procedencia de los alumnos que han aprobado ASGB.

a) Select as.nombre
From Asignatura as, matriculado m, alumno a
Where as.cod-asignatura=m.cod-asignatura
And m.nº-matricula = a.nº-matricula
And dni=’A777’;

Π a.nombre (σdni=’A777’(asignatura X matriculado X alumno))

1
πas.nombre (σ as.codasig = m.codasig (ASIGNATURA X (π codasig (σ
m.nºmatricula=a.nºmatricula( π nºmatricula, codigoasig (MATRICULADO)) X (π
dni,nºmatricula(σ dni=’A777’(ALUMNO)))))))

SELECT as.nombre FROM ASIGNATURA,


(SELECT codasig FROM ( (SELECT nºmatricula, codasig FROM MATRICULADO) X (SELECT dni,
nºmatricula FROM ALUMNO WHERE dni=’A777’) )
WHERE m.nºmatricula = a.ºmatricula )
WHERE as.codasig = m.codasig

Compras/clientes (media)= 2.000.000/3.000


Productos/clientes (media)=50.000/3.000

2
Boletín optimización | Inma Morilla

1b)
(SELECT NOMBRE, DNI
FROM ALUMNO A, MATRICULADO M, ASIGNATURA AS
WHERE A.NºMATRICULA = M.NºMATRICULA
AND CIUDAD=SEVILLA
AND NOMBRE-ASIG=GBD) n
(SELECT NOMBRE, DNI
FROM ALUMNO A, MATRICULADO M, ASIGNATURA AS
WHERE A.NºMATRICULA = M.NºMATRICULA
AND CIUDAD=SEVILLA
AND NOMBRE-ASIG=SAD)

Π nombre,dni (σ a.nºmatricula = m.nºmatricula ^ m.codasig = as.codasig ^ ciudad=Sevilla ^


nombre-asig = GBD (ALUMNO X MATRICULADO X ASIGNATURA)) n
Π nombre,dni (σ a.nºmatricula = m.nºmatricula ^ m.codasig = as.codasig ^ ciudad=Sevilla ^
nombre-asig = SAD (ALUMNO X MATRICULADO X ASIGNATURA))

3
Π nombre, dni ( σ nºmatricula = m.nºmatricula (π nombre,dni,nºmatricula(σ ciudad =
SEVILLA(ALUMNO)) X (π nºmatri(σ mcod=as.cod(MATRICULADO x π as.codasig(σ
nombreasig=GBD(ASIGNATURA))))))) n

Π nombre, dni ( σ nºmatricula = m.nºmatricula (π nombre,dni,nºmatricula(σ ciudad =


SEVILLA(ALUMNO)) X (π nºmatri(σ mcod=as.cod(MATRICULADO x π as.codasig(σ
nombreasig=SAD(ASIGNATURA)))))))

SELECT nombre,dni
FROM (
SELECT nombre, dni, nºmatricula
FROM ALUMNO
WHERE ciudad=SEVILLA)
WHERE nºmatircula=m.nºmatricula

4
Boletín optimización | Inma Morilla

1c)
SELECT al.ciudad
FROM ALUMNO AL, MATRICULADO M, ASIGNATURA A
WHERE AL.NºMATRI=M.NºMATRI
AND MA.COD-ASIG = A.COD-ASIG
AND A.NOMBRE-ASIG = ‘ASGB’
AND M.NOTA >=5

Π ciudad (σ al.nºmatri = m.nºmatri ^ ma.cod-asig = a.cod-asig ^ a.nombre-asig = ASGB ^ m.nota


>=5 (ALUMNO X MATRICULADO X ASIGNATURAS))

Π ciudad (σ al.nºmatri = m.nºmatri ( (π nºmatri,ciudad (ALUMNO)) X (π nºmatri (σ m.cod-asig =


a.cod-asig ((π cod-asig(σ nombre=ASGB(ASIGNATURA))) X (π nºmatri,cod-asig(σ
nota>=5(MATRICULADO))) )))))

5
SELECT ciudad

FROM (SELECT NºMATRICULA,CIUDAD FROM ALUMNOS) AL,

(SELECT NºMATRI

FROM (SELECT COD-ASIG FROM ASIGNATURA WHERE NOMBRE=ASGB) A,

(SELECT NºMATRI, COD-ASIG FROM MATRICULADO WHERE NOTA>=5) M

WHERE M.COD-ASIG = A.COD-ASIG) MA )

WHERE AL.NºMATRICULA = MA.NºMATRICULA

6
Boletín optimización | Inma Morilla

EJERCICIO2.
Dadas las tablas:
CLIENTE ( cod-cli,nombre,dirección,ciudad,edad, teléfono). 3000 clientes.
PRODUCTO(cod-producto,descripción,preciounitario). 50000 productos.
COMPRAS(cod-producto,cod-cli,cantidad). 2000000 de filas.

OPTIMIZAR LAS SIGUIENTES CONSULTAS:


a) Nombre de los clientes que viven en Madrid.
b) Nombre de los clientes que compran el producto ‘P5’ y no han comprado el
producto ‘P3’.
c) Nombre de los clientes que compran algún producto de precio mayor de 10 euros.

2a)

SELECT NOMBRE

FROM CLIENTE

WHERE CIUDAD = MADRID

Π nombre (σ ciudad=Madrid(CLIENTE))

optimizada

Π nombre (σ ciudad=Madrid (π nombre,ciudad(CLIENTE)))

SELECT NOMBRE

FROM (SELECT NOMBRE, CIUDAD FROM CLIENTE)

WHERE CIUDAD = MADRID

7
2b)

SELECT NOMBRE FROM CLIENTE C, COMPRAS COM

WHERE C.COD-CLI = COM.COD-CLI

AND COM.COD-PRODUCTO=’P5’

Π nombre (σ cod-cli = com.cod-cli ^ com-cod-product=P5 (CLIENTE X COMPRAS))

Π nombre(σ cod-cli = com.cod-cli ( (π cod-cli, nombre (CLIENTE)) X (π cod-cli(σ cod-


product=P5(COMPRAS)))))

SELECT NOMBRE

FROM (SELECT COD-CLI, NOMBRE, FROM CLIENTES) CL,

(SELECT COD-CLI FROM COMPRAS WHERE COD-PRODUCT=P5) C

WHERE CL.COD-CLI = C.COD-CLI

8
Boletín optimización | Inma Morilla

2c)

SELECT CLI.NOMBRE

FROM CLIENTE C, COMPRAS COM, PRODUCTO P

WHERE C.COD-CLI = COM.COD-CLI

AND COM.COD-PRODUCT = P.COD-PRODUCT

AND P-PRECIOUNITARIO > 10

Π nombre ( σ cod-cli = com. Cod-cli ^ com.cod-pro = p.cod-pro ^ preciounitario > 10 (CLIENTE X


COMPRAS X PRODUCTOS))

9
Π nombre (σ c.cod-cli = com.cod-cli((π cod-cli(CLIENTE)) X (π cod-cli (σ com.cod-proc = p.cod-pro
(π cod-pro, cod-cli(COMPRAS)) X π cod-pro (σ preciounitario>10(PRODUCTO))))))

SELECT NOMBRE

FROM (SELECT COD-CLI FROM CLIENTES) C,

(SELECT COD-CLI FROM (SELECT COD-PRO FROM COMPRAS) COM,

(SELECT COD-PRO FROM PRODUCTO WHERE PRECIOUNITARIO > 10) P

WHERE COM.COD-PROD = P-COD-PRO) CO)

WHERE C.COD-CLI = CO.COD-CLI

10
Boletín optimización | Inma Morilla

EJERCICIO 3.
Dadas las tablas:
PROVEEDORES(cod-proveed, nombre,ciudad,calle, numero) 1000 proveedores.
ARTÍCULOS(cod-art,nombre-art,precio,descripción,color). 50000 artículos.
PEDIDOS( cod-pedido,cod-art,cantidad). 10000000 pedidos.
SUMINISTROS(cod-proveed,cod-art,capacidad-distribución) 50000000 filas. Contiene los
artículos que suministra cada proveedor y en que proporción puede suminstrarlos.

OPTIMIZAR LAS SIGUIENTES CONSULTAS:


a) Nombre de los artículos de color rojo con capacidad de distribución >50.
b) Nombre de los proveedores que suministran algún artículo de color rojo.
c) Nombre de los artículos que han sido solicitados alguna vez a un proveedor en
cantidad superior a la de distribución.
d) Nombre de los proveedores que no suministran el artículo ‘A7’.
e) Nombre de los proveedores que suministran, al menos, un artículo de los que
suministra el proveedor P1.
f) Nombre de los proveedores que suministran todos los artículos.
g) Proveedores que han suministrado artículos de color rojo y verde.

3a)

SELECT ART.NOMBRE

FROM ARTICULES ART, SUMINISTROS SUM

WHERE ART.COD-ART = SUM-COD-ART

AND ART.COLOR =’ROJO’

AND SUM.CAPACIDAD-DIST>50

Π art.nombre ( σ art.cod-art = sum.cod-art ^ art.color=rojo ^ sum.cap-dist>50 (ARTICULOS X


SUMINISTROS))

11
Π nombre (σ art.cod-art = sum.codart ( (π cod-art,nombre(σ art.color=rojo (π cod-
art,color,nombre (ARTICULOS)))) X (π cod-art (σ sum.cap-dist > 50 (π cod-art, cap-
dist(SUMINISTROS))))))

SELECT NOMBRE

FROM (SELECT COD-ART, NOMBRE

FROM (SELECT COD-ART, COLOR, NOMBRE FROM ARTICULOS WHERE ART.COLOR) ART

(SELECT COD-ART FROM (SELECT COD-ART, CAP-DIST FROM SUMINISTROS)


WHERE SUM.CAP-DIST >50) SUM )

WHERE ART.COD-ART = SUM.COD-ART

12
Boletín optimización | Inma Morilla

3b)

SELECT PROV.NOMBRE

FROM PROVEEDORES P, SUMINISTROS S, ARTICULOS A

WHERE P.COD-PRE = S.COD-PRE

AND S.COD-ART = A.COD-ART

AND A.COLOR = ROJO

Π nombre ( σ p.cod-pre = s.cod-pre ^ s.cod-art = a.cod-art ^ a.color = rojo (PROVEEDORES X


SUMINISTROS X ARTICULOS))

13
Π nombre (σ cod-pre = s.cod-pre ((π cod-pre,nombre(PROVEEDORES)) X (π codpre (σ cod-art =
a.cod-art (π cod-art(SUMINISTROS)) X (π cod-pre, cod-art (σ color = rojo (π cod-pre, cod-art,
color (ARTICULOS)))))))))

SELECT NOMBRE

FROM (SELECT COD-PRE, NOMBRE FROM PROVEEDORES) P,

(SELECT COD-PRE FROM (SELECT COD-ART FROM SUMINISTROS) S,

(SELECT COD-PRE, COD-ART FROM (SELECT COD-PRE,COD-ART,


COLOR FROM ARTICULOS) A WHERE S.COD-ART = A.COD-ART)

) SA

WHERE P.COD-PRE = SA.COD-PRE

14
Boletín optimización | Inma Morilla

3C)

SELECT ART.NOMBRE

FROM SUMINISTROS S, PEDIDOS P, ARTICULOS A

WHERE S.COD-ART = P.COD-ART

AND A.COD-ART = P.COD-ART

AND P.CANT > S.CAP-DIST

Π art.nombre ( σ s.cod-art = p.cod-art ^ p.cod-art = a.cod-art ^ p.cant > s.cap-dist (SUMINISTROS


X PEDIDOS X ARTICULOS))

15
Π nombre (σ cod-art = p.cod-art ( (π cod-art,nombre (ARTICULO)) X (π cod-art (σ p.cant > s.cap-
dist ( (π cod-art, cant (PEDIDOS)) X (π cod-art, cap-dis (SUMINISTROS)) )))))

SELECT NOMBRE

FROM (SELECT COD-ART, NOMBRE FROM ARTICULOS) A,

(SELECT COD-ART FROM (SELECT COD-ART, CANT FROM PEDIDOS) P,

(SELECT COD-ART, CAPT-DIST FROM SUMINISTROS) S

WHERE P.COD-ART = S.COD-ART

AND P-CANT > S.CAP-DIS) PS

WHERE A.COD-ART = PS.COD-ART

16
Boletín optimización | Inma Morilla

3d)

(SELECT P.NOMBRE FROM PROVEEDORES P)

MINUS

(SELECT P.NOMBRE

FROM PROVEEDORES P, SUMINISTROS S

WHERE P.COD-PRE = S.COD-PRE

AND S.COD-ART=’A7’)

Π p.nombre (PROVEEDORES) – (Π p.nombre (σ p.cod-pre = s.cod-pre ^ s.cod-art =A7


(PROVEEDORES X SUMI)))

Π nombre (PROVEEODRES) – (Π nombre (σ p-cod-pre = s.cod-pre ((π cod-pre, nombre


(PROVEEODRES)) X (π cod-pre(σ cod-art =’A7’ (SUMINISTROS)))))

17
SELECT NOMBRE FROM PROVEEDORES MINUS

SELECT NOMBRE FROM (SELECT COD-PRE, NOMBRE, FROM PROVEEDORES) P,

(SELECT COD-PRE FROM SUMINISTROS WHERE COD-ART=A7) S

WHERE P.COD-PRE= S.COD-PRE

3g) SELECT COD-PROVED

FROM SUMINISTROS S, ARTICULOS A

WHERE S.COD-ART = A.COD-ART

AND A.COLOR = ROJO

INTERSECT

SELECT COD-PROVED

FROM SUMINISTROS S, ARTICULOS A

WHERE S.COD-ART = A.COD-ART

AND A.COLOR = VERDE

18
Boletín optimización | Inma Morilla

Π cod-proved (σ s.cod-art = a.cod-art ^ a.color = rojo (SUMINISTROS X ARTICULOS)) n

Π cod-proved (σ s.cod-art = a.cod-art ^ a.color = verde (SUMINISTROS X ARTICULOS))

Π cod-proved (σ s.cod-art = a.cod-art ((π cod-art (SUMINISTROS)) X (π cod-art(σ color=rojo (π


color (ARTICULOS))))))

Π cod-proved (σ s.cod-art = a.cod-art ((π cod-art (SUMINISTROS)) X (π cod-art(σ color=verde (π


color (ARTICULOS))))))

SELECT COD-PROVED FROM (SELECT COD-ART FROM SUMINISTROS) S,

(SELECT COD-ART FROM ARTICULOS WHERE COLOR=ROJO) A

WHERE S.COD-ART = A.COD-ART

n
SELECT COD-PROVED FROM (SELECT COD-ART FROM SUMINISTROS) S,

(SELECT COD-ART FROM ARTICULOS WHERE COLOR=VERDE) A

WHERE S.COD-ART = A.COD-ART

19
20

Вам также может понравиться