Skip to content

Instantly share code, notes, and snippets.

@gregori
Last active September 18, 2017 01:56
Show Gist options
  • Select an option

  • Save gregori/152714df201872d7a6bb2c934f9d2a6a to your computer and use it in GitHub Desktop.

Select an option

Save gregori/152714df201872d7a6bb2c934f9d2a6a to your computer and use it in GitHub Desktop.
-- 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