• Nenhum resultado encontrado

da aula prática 8 de Bases de Dados

N/A
N/A
Protected

Academic year: 2021

Share "da aula prática 8 de Bases de Dados"

Copied!
5
0
0

Texto

(1)

Solu¸

ao dos exerc´ıcios

da aula pr´

atica 8 de Bases de Dados

Considerando o seguinte esquema de rela¸c˜oes: • Product(maker, model, type)

• PC(model, speed, ram, hd, cd, price)

• Laptop(model, speed, ram, hd, screen, price) • Printer(model, color, type, price)

Reescreva e execute em SQL as queries feitas na aula passada (em ´algebra relacional). a) Quais modelos de PC tˆem uma velocidade de pelo menos 3.00?

SELECT model FROM PC

WHERE speed >= 3;

b) Quais fabricantes produzem laptops com um disco r´ıgido de pelo menos 100 GB?

SELECT maker

FROM Product NATURAL JOIN Laptop WHERE hd >= 100;

c) Quais os modelo e respectivos pre¸cos de todos os produtos (de qualquer tipo) produzidos pelo fabricante B.

SELECT model,price

FROM Product NATURAL JOIN (

(SELECT model,price FROM PC) UNION

(SELECT model,price FROM Laptop) UNION

(SELECT model,price FROM Printer) ) AS Temp

(2)

d) Quais os n´umeros dos modelos das impressoras laser a cores.

SELECT model FROM Printer WHERE type=’laser’ AND color=true;

e) Quais os fabricantes que vendem Laptops mas n˜ao vendem PC?s.

( SELECT maker FROM Product WHERE type=’laptop’ ) EXCEPT ( SELECT maker FROM Product WHERE type=’pc’ );

f) Quais os tamanhos de disco que ocorrem em 2 ou mais PC?s.

SELECT DISTINCT PC1.hd FROM PC AS PC1, PC AS PC2 WHERE PC1.model <> PC2.model

AND PC1.hd = PC2.hd;

Com agrega¸c˜oes pode ser feito assim,

SELECT hd FROM PC GROUP BY hd

HAVING count(*) >= 2;

g) Encontre os pares de modelos de PC que tˆem a mesma velocidade e a mesma RAM. Cada par deve ser obtido so uma vez. Isto ´e, se obtiver (x,y) n˜ao deve obter (y,x).

D´a jeito criar uma view chamada Computer com informa¸c˜ao sobre PCs e Lap-tops.

CREATE VIEW Computer AS (

SELECT maker, model, speed, ram FROM Product NATURAL JOIN PC

(3)

UNION (

SELECT maker, model, speed, ram FROM Product NATURAL JOIN Laptop );

Agora ´e s´o fazer um join como na al´ınea anterior,

SELECT C1.model, C2.model

FROM Computer AS C1, Computer AS C2 WHERE C1.model < C2.model

AND C1.speed = C2.speed AND C1.ram = C2.ram;

h) Quais os fabricantes de pelo menos 2 computadores (PC ou Laptop) cuja velo-cidade ´e pelo menos 2.80.

SELECT DISTINCT C1.maker

FROM Computer AS C1, Computer AS C2 WHERE C1.maker = C2.maker

AND C1.model <> C2.model AND C1.speed >= 2.8 AND C2.speed >= 2.8;

i) Encontre os fabricantes do computador (PC ou laptop) com a m´axima veloci-dade.

Tradu¸c˜ao directa da solu¸c˜ao feita em ´algebra relacional (Computer ´e a view definida na al´ınea anterior):

CREATE VIEW Temp(maker1,model1,speed1,ram1,maker2,model2,speed2,ram2) AS ( SELECT *

FROM Computer AS C1, Computer AS C2 WHERE C1.speed < C2.speed

);

SELECT maker2 FROM (

(SELECT maker2,speed2 FROM Temp) EXCEPT

(SELECT maker1,speed1 FROM Temp) ) AS Temp2;

(4)

SELECT DISTINCT maker FROM Computer WHERE speed = ( SELECT MAX(speed) FROM Computer );

j) Quais os fabricantes de PC?s com pelo menos 3 velocidades distintas.

CREATE VIEW prodpc AS (

SELECT * FROM product NATURAL JOIN pc );

SELECT DISTINCT r1.maker

FROM prodpc AS r1, prodpc AS r2, prodpc AS r3 WHERE r1.maker = r2.maker AND r2.maker = r3.maker

AND r1.speed < r2.speed AND r2.speed < r3.speed; Utilizando agrega¸c˜oes obt´em-se uma solu¸c˜ao mais simples,

SELECT maker

FROM Product NATURAL JOIN PC GROUP BY maker

HAVING COUNT(DISTINCT speed) >= 3;

k) Quais os fabricantes que vendem exactamente 3 modelos diferentes de PC. -- (vendem pelo menos 3) - (vendem pelo menos 4)

(

SELECT r1.maker

FROM prodpc AS r1, prodpc AS r2, prodpc AS r3 WHERE r1.maker = r2.maker AND r2.maker = r3.maker

AND r1.model < r2.model AND r2.model < r3.model )

EXCEPT (

SELECT r1.maker

FROM prodpc AS r1, prodpc AS r2, prodpc AS r3, prodpc AS r4

WHERE r1.maker = r2.maker AND r2.maker = r3.maker AND r3.maker = r4.maker AND r1.model < r2.model AND r2.model < r3.model AND r3.model < r4.model );

A solu¸c˜ao com agrega¸c˜oes ´e novamente bem mais simples, SELECT maker

FROM Product NATURAL JOIN PC GROUP BY maker

(5)

Notas finais

Algumas das solu¸c˜oes apresentadas utilizam views. Na altura em que fizeram os exerc´ıcios ainda n˜ao tinham aprendido views. Como tal, muitos de v´os criaram tabelas tempor´arias fazendo SELECT...INTO.

Referências

Documentos relacionados

 Numéricos das das Propriedades Propriedades do do Ar Ar Úmido, Úmido, Cartas Cartas Psicrométricas, Psicrométricas, Processos Processos Psicrométricos, Psicrométricos,

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

- A perda dos 4.765 litros de aguardente vínica (…) ocorreu na realidade; deveu-se a motivos de força maior ou, pelo menos, de caso fortuito; não

Os papéis de trabalho são todas as evidências obtidas pelo autor durante o seu trabalho, que dão apoio para as conclusões, comentários, opiniões e