base de dados
• PC(model, speed, ram, hd, cd, price)
• Laptop(model, speed, ram, hd, screen, price)
• Printer(model, color, type, price)
Escrever express˜es em algebra relacional para responder as seguintes ”queries”: o ´
`
a) Quais modelos de PC tˆm uma velocidade de pelo menos 150 MHz? e πmodel
σspeed≥150 (PC)
b) Quais fabricantes produzem laptops com um disco r´ ıgido de pelo menos 1
Gbyte?
πmaker
σhd≥1 (Product
Laptop)
c) Encontre o n´ mero de modelo e pre¸o de todos os produtos (de qualquer u c tipo) produzidos pelo fabricante B.
Primeiro fazemos a uni˜o do modelo e pre¸o dos PCs, Laptops e Printers. a c
Depois fazemos um natural join dessa rela¸ao com Produts. Depois basta c˜ selecionar os tuplos cujo fabricante ´ B, e projectar apenas os atributos e modelo e pre¸o. c Temp := πmodel,price (PC) ∪ πmodel,price (Laptop) ∪ πmodel,price (Printer) πmodel,price σmaker= B (Product
1
Temp)
d) Encontre o n´ mero de modelo de todas as impressoras laser. u πmodel
σtype= laser (Printer)
e) Encontre os fabricantes que vendem laptops e que n˜o vendem PC’s. a (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 PC’s.
O truque ´ fazer um join de PCs com PCs, especificando a condi¸ao de e c˜ que modelos diferentes tenham de ter tamanhos de disco iguais.
PC2 := PC1 := PC πP C1.hd
PC1
(P C1.model=P C2.model) ∧ (P C1.hd=P C2.hd)
PC2
g) Encontre os pares de modelos que tˆm a mesma velocidade e capacidade e de mem´ria. Cada par deve ser listado s´ uma vez. o o
´
E semelhante a al´
` ınea anterior.