Skip to content

Instantly share code, notes, and snippets.

@eloisamec
Created September 13, 2017 20:40
Show Gist options
  • Save eloisamec/251001b6439f8e966d34221e6084c676 to your computer and use it in GitHub Desktop.
Save eloisamec/251001b6439f8e966d34221e6084c676 to your computer and use it in GitHub Desktop.
1. Apresente a árvore de consulta otimizada para a expressão abaixo. Considere todos os dados de eleições da República do Brasil (desde 1892) cadastrados no banco consultado, 98% do número de doações a campanhas feitas por pessoas que não os próprios candidatos, 2% do número de doações com valor superior a 10.000, 1,5% das candidaturas em 2016 e 14% de pessoas rés. Considere ainda cada registro de Pessoa ocupando 256 bytes e índice primário por id<X> para cada tabela <X>, além de índice auxiliar por cada chave estrangeira, D.valor, C.ano e P.dtNasc.
SELECT P.*, SUM(D.valor) AS total,
COUNT (DISTINCT Cand.*) AS nroCands
FROM Pessoa AS P, Doacao AS D, Campanha AS C, Pessoa AS Cand
WHERE P.idP = D.idDoador AND D.idC = C.idC AND
C.idCand = Cand.idP AND P.idP = Cand.idP AND
D.valor > 10.000 AND C.ano > 2015 AND Cand.reu = ‘TRUE’
GROUP BY P.* HAVING total > 100.000
ORDER BY total, nroCands DESC;
2. Sejam 128 milhões de pessoas cadastradas, idP com 8 bytes, ponteiro para bloco com 7 bytes, ponteiro para registro com 8 bytes e registros de tamanho fixo. Quantos blocos de 1 Kbyte ocupa a tabela Pessoa da questão anterior? Quantos blocos ocupa o índice primário de Pessoa (por idP) implementado como uma B+-Tree com ocupação mínima de 50% de cada bloco (nodo)? Qual a sua profundidade de tal árvore? Mostre sucintamente sua solução.
3. Apresente a árvore de consulta relacional otimizada para a expressão em SQL abaixo. Considere dados históricos do Brasil desde 1892, CC.nome sendo chave candidata, incidência de tornados menor que 1% do número de catástrofes, cerca de 2% do número de investimentos em “prevenção de danos” e cerca de 5.3% dos municípios brasileiros com M.UF = 'SC'. Considere também a existência de índices primários em todas as tabelas, além de índices auxiliares por todas as chaves estrangeiras, C.data, CC.nome, F.tipo e M.UF. Indique algoritmos eficientes para executar operadores da estratégia proposta, em termos do número de tuplas em cada tabela (|I|, |F|, |M|, |C|, |CC|) e nos resultados de cada algoritmo.
SELECT M.nome, SUM (C.prejuizos) AS tp, SUM(I.valor) AS ti, tp / ti AS ip
FROM Investimento AS I, FinalidadeI AS F, Municipio AS M, Catastrofe AS C, ClasseC AS CC
WHERE I.idM = M.idM AND I.idF = F.idF AND F.idCC = CC.idCC AND M.idM = C.idM AND C.idCC = CC.idCC AND
C.data > '28/04/1914' AND CC.nome = “tornado” AND I.data < C.data AND F.tipo = 'prevenir danos' AND M.UF = 'SC'
GROUP BY M.nome HAVING ip > 0.1 ORDER BY ip DESCENDING ;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment