Está en la página 1de 3

Solu c ao do exerc cio 3 da aula pr atica 5 de Bases de Dados

Exerc cio 3. Considerando o seguinte esquema de rela co es: Product(maker, model, type) PC(model, speed, ram, hd, cd, price) Laptop(model, speed, ram, hd, screen, price) Printer(model, color, type, price) Escrever express oes em a lgebra relacional para responder a `s seguintes queries: a) Quais modelos de PC t em uma velocidade de pelo menos 150 MHz? model speed150 (PC)

b) Quais fabricantes produzem laptops com um disco r gido de pelo menos 1 Gbyte? maker hd1 (Product Laptop)

c) Encontre o n umero de modelo e pre co de todos os produtos (de qualquer tipo) produzidos pelo fabricante B. Primeiro fazemos a uni ao do modelo e pre co dos PCs, Laptops e Printers. Depois fazemos um natural join dessa rela ca o com Produts. Depois basta selecionar os tuplos cujo fabricante e B, e projectar apenas os atributos modelo e pre co. Temp := model,price (PC) model,price (Laptop) model,price (Printer) model,price maker= B (Product Temp)

d) Encontre o n umero de modelo de todas as impressoras laser. model type= laser (Printer)

e) Encontre os fabricantes que vendem laptops e que n ao vendem PCs. (1) Encontra-se os fabricantes que vendem laptops. (2) Encontra-se os fabricantes que vendem PCs. Faz-se (1) (2). VendemLaptops := maker VendemPCs := maker type= laptop (Product)

type= pc (Product)

VendemLaptops VendemPCs f) Encontre os tamanhos de disco que ocorrem em 2 ou mais PCs. O truque e fazer um join de PCs com PCs, especicando a condi ca o de que modelos diferentes tenham de ter tamanhos de disco iguais. PC2 := PC1 := PC P C 1.hd PC1
(P C 1.model=P C 2.model) (P C 1.hd=P C 2.hd)

PC2

g) Encontre os pares de modelos que t em a mesma velocidade e capacidade de mem oria. Cada par deve ser listado s o uma vez. semelhante a E ` al nea anterior. Temp := model,speed,ram (PC) model,speed,ram (Laptop) T2 := T1 := Temp T 1.model,T 2.model T1
T 1.model<T 2.model T 1.speed=T 2.speed T 1.ram=T 2.ram

T2

h) Encontre os fabricantes do computador (PC ou laptop) com a m axima velocidade. Esta pergunta n ao e trivial. Primeiro faz-se um natural join de Product com PC e projecta-se as colunas maker, model e speed. Faz-se a mesma coisa com Product e Laptop, unindo o resultado. R1 := maker,model,speed ( Product R2 := maker,model,speed ( Product Computer := R1 R2 Agora tem de se fazer um join de Computer consigo pr oprio, utilizando como condi ca o de join que a velocidade de um computador tem de ser inferior a ` do outro. O computador que tiver velocidade m axima apenas ir a aparecer numa das colunas.
Computer 2(maker 2,model2,speed2)

PC ) Laptop )

Computer Computer2 maker1,speed1 (Temp)

Temp :=

Computer

(speed<speed2)

T odosExceptoOsM aisRapidos(maker,speed)

T odos(maker,speed)

maker2,speed2 (Temp)

maker ( Todos TodosExceptoOsMaisRapidos ) i) Encontre os fabricantes de PCs com pelo menos 3 velocidades diferentes. R3 := R2 := R1 := Product R4 := R1.maker=R2.maker R5 := R1.speed<R2.speed maker (R5) j) Encontre os fabricantes que vendem exactamente 3 modelos diferentes de PC. Os que vendem exactamente 3 modelos s ao aqueles que vendem pelo menos 3, e n ao vendem pelo menos 4. E semelhante a ` al nea anterior . . . 3 PC (R1 R2 R3)

R2.maker =R3.maker

R2.speed<R3.speed

(R4)

También podría gustarte