Last active
September 18, 2017 01:56
-
-
Save gregori/152714df201872d7a6bb2c934f9d2a6a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- 1 Que modelos de PC têm uma velocidade (speed) de pelo menos 3.00? | |
| -- π model (σ speed ≥ 3 (PC)) | |
| -- 2 Que fabricantes (maker) produzem laptops com um HD de pelo menos 100GB? | |
| -- π maker (σ hd ≥ 100 (Laptop ⨝ Product)) | |
| -- 3 Encontre o modelo e o preço de todos os produtos feitos pelo fabricante B. | |
| -- ProdutosB = πmodel (σmaker='B' (Product)) | |
| -- PCsB = πmodel,price (PC ⨝ ProdutosB) | |
| -- LaptopsB = πmodel,price (Laptop ⨝ ProdutosB) | |
| -- PrintersB = πmodel,price (Printer ⨝ ProdutosB) | |
| -- PCsB ∪ LaptopsB ∪ PrintersB | |
| -- 4 Encontre os modelos de todas as impressoras laser coloridas | |
| -- πmodel (σ color=true ∧ type='laser' (Printer)) | |
| -- 5 Encontre os fabricantes que vendem Laptops, mas não PCs. | |
| -- VendeLaptop = πmaker (σtype = 'laptop' (Product)) | |
| -- VendePC = πmaker (σtype = 'pc' (Product)) | |
| -- VendeLaptop - VendePC | |
| -- 6 Encontre os tamanhos de HD que aparecem em dois ou mais PCs. | |
| -- πPC.hd (σPC.model ≠ PC1.model ∧ PC.hd=PC1.hd (PC x ρPC1 (PC))) | |
| -- 7 Encontre os pares de modelos de PC que têm a mesma velocidade e RAM. | |
| -- Um par deve ser listado somente uma vez | |
| -- πPC1.model,PC.model (σPC1.model < PC.model ∧ PC.ram = PC1.ram ∧ PC.speed=PC1.speed (PC x ρPC1 (PC))) | |
| -- 8 Encontre os fabricantes de pelo menos dois computadores diferentes | |
| -- com velocidades, de pelo menos,2.8. | |
| -- Rapidos = σspeed ≥ 2.8 (πmodel,speed (PC) ∪ πmodel,speed (Laptop)) -- computadores com pelo menos 2.8 | |
| -- F = ρF (Rapidos ⨝ Product) -- Fabricantes desses computadores | |
| -- pelo menos dois computadores: produto cartesiano e procuramos mesmo maker, modelos diferentes | |
| -- πF.maker (σF.maker = F1.maker ∧ F.model ≠ F1.model (F x ρF1 (F))) | |
| -- 9 Encontre os fabricantes do computador (PC ou Laptop) com a maior velocidade disponível | |
| -- Comp = ρComp (πmodel,speed (PC) ∪ πmodel,speed (Laptop)) -- todos os computadores | |
| -- os computadores que não são o mais rápido | |
| -- NaoMaisRapido = πComp.model ( σComp.speed < Comp1.speed (Comp x ρComp1 (Comp)) ) | |
| -- MaisRapido = πmodel (Comp) - NaoMaisRapido -- o mais rápido = todos computadores - os não mais rápidos | |
| -- πmaker (MaisRapido ⨝ Product) -- quem produz o computador mais rápido | |
| -- 10 Encontre fabricantes de PCs com pelo menos três velocidades diferentes | |
| -- fab = ρfab (Product ⨝ πmodel,speed (PC)) -- informacoes de fabricantes, modelos e velocidades de PC | |
| -- fab1 = ρfab1 fab -- renomeamos a relação para a junção | |
| -- fab2 = ρfab2 fab -- renomeamos a relação para a junção | |
| -- Queremos comparar tres velocidades diferentes | |
| -- então fazemos um produto cartesiano dos fabricantes 3x | |
| -- e buscamos as linhas nas quais os fabricantes são iguais e as velocidades diferentes | |
| -- πfab.maker ( σ fab1.maker = fab.maker ∧ fab2.maker = fab.maker ∧ fab1.speed ≠ fab.speed ∧ fab2.speed ≠ fab.speed ∧ fab1.speed ≠ fab2.speed (fab x fab1 x fab2)) | |
| -- 11 Encontre os fabricantes que vendem exatamente três modelos diferentes de PC. | |
| -- fab = ρfab (Product ⨝ πmodel (PC)) -- informacoes de fabricantes e modelos de PC | |
| -- fab1 = ρfab1 fab -- renomeamos a relação para a junção | |
| -- fab2 = ρfab2 fab -- renomeamos a relação para a junção | |
| -- fab3 = ρfab3 fab -- renomeamos a relação para a junção (precisamos testar para três e quatro) | |
| -- Cartesiano3 = (fab x fab1 x fab2) -- comparamos os fabricantes 3 vezes | |
| -- ModelosDiferentes3 = σ fab.model ≠ fab1.model and fab.model ≠ fab2.model and fab1.model ≠ fab2.model (Cartesiano3) -- quais as tuplas em que os 3 modelos sao diferentes? | |
| -- Dessas, quais possuem o mesmo fornecedor? | |
| -- MesmoFornecedor3 = σ fab.maker = fab1.maker and fab.maker = fab2.maker (ModelosDiferentes3) | |
| -- TresOuMais = πfab.maker (MesmoFornecedor3) -- quais fornecedores produzem tres ou mais modelos de PC? | |
| -- ModelosDiferentes4 = σ fab.model ≠ fab3.model and fab1.model ≠ fab3.model and fab2.model ≠ fab3.model (ModelosDiferentes3 x fab3) -- quais as tuplas em que os 4 modelos são diferentes? (+ 4o produto cartesiano) | |
| -- MesmoFornecedor4 = σ fab.maker = fab1.maker and fab.maker = fab2.maker and fab.maker = fab3.maker (ModelosDiferentes4) -- dessas, quais têm o mesmo fornecedor? | |
| -- QuatroOuMais = πfab.maker (MesmoFornecedor4) -- quais fornecedores produzem quatro ou mais modelos de PC? | |
| -- TresOuMais - QuatroOuMais -- o resultado são aqueles que produzem exatamente tres modelos diferentes | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment